Centos 7 Üzerinde Vesta Panel PHP 7 Upgrade Etme

Projelerimizin FTP / HOST hesaplarını daha rahat yönebilmek amacıyla VESTA Panel kullanmaktayız. Vesta gayet hoş, basit, hafif ve çok fazla uğraştırmadan sunucu üzerine kurulum yapıp kullanabilirsiniz.
Vesta Panel kurulumu için — > https://vestacp.com/install/  
İhtiyaçlarınıza göre vesta seçeneklerini seçerek kurulumu Console üzerinden yapabilirsiniz.

Şuanda Vesta kurulumu yapıldığında PHP sürümü 5.6 olarak gelmekte. Bu sürümün desteği bittiği için ve birçok hazır framework sitelerde hata göstermektedir ( WordPress, opencart vs. ) . Yakında bunu düzeltirler sanırım. PHP 7 versiyonu daha sağlıklı, hızlı ve stabil çalışmasından dolayı genel sistemlerimizi de güncellemekteyiz.

Güncelleme işlemi yaparken aşağıdaki adımları sırayla uygulayabilirsiniz.

  • wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  • wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
  • rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm
  • yum install yum-utils
  • yum-config-manager –enable remi-php72
  • yum-config-manager –disable remi-php56
  • yum-config-manager –disable remi-php70
  • yum-config-manager –disable remi-php71
  • yum update -y
  • php -v

Yukarıdaki işlemleri CLI / Console üzerinden yapmanız gerekir.
Hatasız update ler dilerim. 🙂

Kaynak

Linux WGET ile Dosya Çekme

Sistem yedeklemelerinde olduğum NAS ( Network Area Stroage ) mevcuttur. Sistem tarafında, hosting, sunucu gibi yazılım işleri ile koşturan hemen hemen herkes NAS kullanmaktadır. Farklı yedekleme sistemleri de mevcuttur fakat NAS güzeldir. 🙂

NAS üzerinde dosyaları çekmek istediğimize problemler yaşıyorduk. Çünkü bazı klasörlerin içerisinde dosya sayıları fazla olduğu için açılmıyor veya kullanmış olduğumuz FTP programları hataya düşüyordu.

Yapılması gereken ise dosyaları belirli aralıklarla çekip local tarafa aktarmaktı. İnternet üzerinde araştırmalar yaparken stackoverflow’da bulduğum yöntem bizi kurtardı. Biz dosya halinde değil KLASÖR halinde çekmek istediğimizden yöntem hızı gibi yetişti.

Detaya girmeden komutu paylaşacağım. Komut;

wget -r -nH --cut-dirs=5 -nc ftp://user:pass@server//absolute/path/to/directory

Linux üzerinde hangi dizindeyseniz wget komutu oraya çeker.  Kullanım yukarıdaki gibidir.

–cut-dirs=5 –> bu her seferinde 5 işlem yap diyebilmek için. Böylece listeleme ile uğraşmadığından FTP programları gibi patlamıyoruz.

Kaynak yazıya buradan ulaşabilirsiniz..

Ara ara dediğim gibi başka canlar yanmasın.. 🙂

Windows Server PHP Session Temizleme

Windows sunucu da IIS üzerinde PHP ile web servislerimiz mevcut. PHP ile MSSQL server bağlantıları olduğu için Windows üzerinde PHP koşturuyoruz. Belirli bir zaman sonra sunucunun diski dolması, PHP’nin ağır bir şekilde cevap vermesi gibi problemleri yaşamaya başladıktan sonra araştırmalarımızın verdiği sonuç PHP nin SESSION dosyalarının baya gelişi güzel birikmiş olması. Problem ise session dosyalarının silinmemesinden kaynaklı. Silinmemesinin sebebi ise windowsun kullanıcı – dosya yetkilendirmelerinde problem olmasıymış.

Bu problemi az buçuk araştırma sonucu çözmek yerine aşağıdaki .bat dosyasına yazdığımız kodlarla hızlı bir şekilde çözdük. Problemi çözmek yerine dosyaları silmek çok sağlıklı olmayabilir ama en azından sessionların search and find metodunda daha hızlı çalışmasını sağlıyor. 🙂

.bat dosyasının windows bash kodları;

DEL /F /S /Q /A "C:\Windows\Temp\sess_*"
rd /s /q %systemdrive%\$Recycle.bin -y

 

PHP sessionlarının ayarlarından dolayı farklı bir klasör altında saklanıyor ise komuttaki dosya yolunu değiştirmeyi unutmayın.

.bat dosyasını Zamanlanmış Görevlere ekleyerek her gece veya saat başı gibi opsiyonlarla çalıştırılması sonucu yaklaşık 3 senedir herhangi disk, gecikme problemi yaşanmadan çalışmaktadır. 🙂

 

Linux Bash Script’de JSON formatıyla Web Servise CURL etmek

Linux üzerinde işlem yaptırıp web servise de bunu iletmek istiyorsanız aşağıdaki bash script kod parçacıkları işinize yarayabilir. Bizim projemizde backup / yedekleme sonrası servislerin ve backupların durumlarını kontrol edebilmek amaçlı olarak bir noktadan kontrol ve analiz edilebilmesi için kullanılmıştır. Yani olay sıralaması şu şekilde;

Sistem tarafında backuplar alınıyor. Sonrasında ise backupın alınıp alınmadı bilgisi ise web servise CURL ediliyor. JSON formatında hazırlanan bilgi web servis tarafında ise JSON olarak karşılanmaktadır.

Backup alma işlemleri ile ilgili örnekleri daha öncesinde paylaşmıştım, şu linkten bulabilirsiniz. Şimdi ise bu backupların durumlarını analiz edebilmek için aşağıdaki kod parçasını kullanacağız.

post_data()
{
	# linux un hostname ini almak için.
	hostname=$(hostname)
	# linux un saat ve tarihi almak
	date_time=$(date "+%Y-%m-%d %H:%M:%S")
	cat <<EOF
{
	"parametre1" 		: "deger1",
	"parametre2" 		: "deger2",
	"hostname" 		: "$hostname",
	"date_time" 		: "$date_time"
}
EOF
}


curl -i \
-H "Accept: application/json" \
-H "Content-Type:application/json" \
-X POST --data "$(post_data)" "http://webservisadresiniz"

Dinamik olarak sunucuya ait bilgileri almak için 2 adet örnek değişken örneği verdim. Siz ihtiyacınız olan parametreleri toplayın JSON formatındaki diziye yerleştirip otomatik olarak gönderimini sağlayabilirsiniz. Backup sistemlerinde şu bilgiler ihtiyaç oluyor genellikle; Disk kullanımı, dosya adı, dosya boyutu, backup başlangıç-bitiş zamanları, ftp upload olmuş mu vb. Bu bilgiler sayesinde PHP tarafında aldığınız bilgileri veritabanına veya farklı bir yere yazarak geçmişe dönük olarak ve sunucularınızın son hallerinin disk vb. durumlarını toplayabilirsiniz. Raporlar çıkartıp olası durumları öncesinden düzeltebilirsiniz. Genellikle disk dolma durumu ile karşı karşıya kalınmaktadır.

webservisadresiniz üzerinde ise aşağıdaki işlemi yaparak post edilen bilgileri alabilirsiniz. Daha öncesinde ise şuradaki yazımda anlamıştım..


function input_post_json()
{
	$data = json_decode(file_get_contents('php://input'), true);
	$data[ 'ip' ] = $_SERVER[ 'REMOTE_ADDR' ];
	return $data;
}

$post = input_post_json();

Web servis tarafımızda gelen bilgileri bir şekilde veritabanı veya başka bir yerde sakladık. İlla da saklamanız gerekmemektedir. Mail olarak da haber veren bir uygulama yapabilirsiniz. Gerisi sizin ihtiyaçlarınıza ve hayal dünyanıza kalmıştır. Birden fazla sunucunuz var ise tüm backuplar alındıktan sonra kendinize rapor ve analiz maili atabilirsiniz. Hayat kurtarır benden size söylemesi 🙂

Bu tarz uygulamalar sistem tarafındaki manuel olarak her bir sunucuya tek tek girip yedek almak, bakım yapmak, disk kontrolü vb. işlemleri sağlamadaki harcamış olduğunuz zamanı yarıdan daha aza indirgemektedir.

Asıl amacım linux üzerinde JSON formatını web servise CURL olarak göndermeyi anlatmaktı ama olay biraz amatörce backup monitoring’e kaçtı sanırım. 🙂

Centos 7 Güncelleme Sırasında İstenmeyen Güncellemeler

Konu başlığı biraz yanlış olmuş olabilir. Şöyle anlatayım; Sanallaştırma ile Linux dağıtımlarından Centos 7 kullanıyoruz. Sunucuya güncelleme geldiği için güncelleyelim dedik fakat öncesinde vmware üzerinden snapshot aldığımız iyi olmuş. Çünkü centos üzerinde freeradius 3.0.4 kullanıyorduk. Repo olarak yüklenmışti. Güncelleme sonrası tabi freeradius da güncellendi. Ne mi oldu ? Neler olmadı ki.. Özelleştirilmiş freeradiusumuz patladı. Patladığı gibi adamlar o kadar güzel değişiklikler yapmışlar ki anlatamam. Sizinde anlayacağınız gibi dağıldık. Neyse ki yedeğimize yani snapshot yedeğimize güvenip hemen geri döndük. Okumaya devam et “Centos 7 Güncelleme Sırasında İstenmeyen Güncellemeler”

Windows ile Web Yedeklemesi Yapmak ve FTP

Bir önceki yazımda Centos Linux MYSQL ve Web Dosyaları Yedekleme işlemlerinden örnek vermiştim. Bu yazımda ise Windows bir sunucu üzerinde web dosyalarımızı nasıl yedekleriz ve FTP olarak farklı bir yedekleme alanına taşımayı örnekleyeceğim. Bu sefer MYSQL yok fakat siz yaparsınız bence 🙂

Yedekleme için önce Windows daki Winrar uygulamasını kullanıp dosyalarımızı sıkıştırıyoruz. Sonrasında ise NCFTP eklentisiyle beraber dosyalarımızı FTP alanımıza taşıyoruz. Windows daki FTP de problem yaşadığım için NCFTP kullanıyorum. Siz farklı FTP çözümleri de kullanabilirsiniz.

@echo off
set path="C:\Program Files\WinRAR\";%path%

# rar.exe yi çalıştırıp yedekleme yapacağımız dosyalarımızı sıkıştırıyoruz.
rar.exe a -r C:\BACKUP\YEDEK-%DATE%.rar C:\wwwroot

# İsterseniz sıkıştırma sırasında istenmeyen dosya uzantılarını belirtebilirsiniz.
# rar.exe a -r -x*.jpg -x*.jpeg -x*.pdf -x*.png -x*.log -x*.rar -x*.ttf -x*.otf -x*.dat C:\BACKUP\YEDEK-%DATE%.rar C:\wwwroot

# NcFTP programı ile birlikte dosyalarımızı FTP yedekleme alanımıza yüklüyoruz..
ncftpput -C -u FTP_KULLANICI_ADI -p FTP_KULLANICI_SIFRESI FTP_ADRESI C:\BACKUP\YEDEK-%DATE%.rar /FTP_DOSYA_YOLU/YEDEK-%DATE%.rar

# Yedek dosyasını siliyoruz.. Bu isteğe bağlıdır. İsterseniz silmeyebilirsiniz.
DEL /F /S /Q /AA C:\BACKUP\YEDEK-%DATE%.rar

Yukarıdaki kod parçasını Windows üzerinde .bat olarak kaydetmeniz gerekir. İsterseniz daha farklı yöntemler kullanıp yedekleme yaptırabilirsiniz. Örnek olarak C#.NET biliyorsanız küçük bir .exe ile de bu işi çözümleyebilirsiniz. Tabi bir de bu küçük kod parçalarını sürekli olarak çalıştırmanız gerekli. Bazı geliştiriciler gördüm her gün kendileri çift tık yapıp yedek almasını bekleyenler var. Fakat önerim Windows Zamanlanmış Görevleri ( Task Scheduler ) kullanmanız daha sağlıklı olacaktır.

Sıkıştırma yaparken neden istenmeyen dosyaları alalım gibi bir düşünce oluşuyorsa kafanız da şöyle bir örnek verebilirim.

Bir projemizde canlı sistem üzerinde geliştirme yaparken yazılım tarafının yedeklerini manuel olarak almak yerine şöyle bir yol izledik. Her gün .jpg, .jpeg, .pdf, .png, .log vs. dosyalarını yedeklemek yerine ( yedekleme diskininin kapasitesini çok fazla kullanıyordu ) bu dosyalar haricindeki dosyaları yedekledik. Bunu isterseniz günlükten saatliğe çekebilirsiniz.

Sonrasında her hafta sonu da haftalık tam yedek yani bütün dosyaları sıkıştırıp yedekleme işlemi yaptık.  Böylece günlük yedeklerin boyutları ile haftalık yedeklerin boyutları birbirinden farklı oldu. Yedekleme diskimiz ne çok fazla tuttu nede zaman kaybı yaşadık.

 

Centos Linux MYSQL ve Web Dosyaları Yedekleme

VPS ( Virtual Private Server | Özel Sanal Sunucu ) kullanıyorsanız üzerinde de Cpanel, WHM, Vesta, Plesk vb. bir yönetim paneli bulunmuyor ise yedekleme işlemleri biraz zor olabilir. Yedekleme yapabilmek için genellikle manuel işlemler mevcut. MYSQL kullandığımızı düşünürsek PHPMyAdmin üzerinden tüm veritabanını indirmek, PHP kullandığımızı da düşünürsek FTP vb. bir bağlantı ile bağlanıp dosyaları maneul olarak yedeklemek uzun bir senaryo.

Peki biz her gece uyurken yedekler otomatik olarak alınsa ? Daha rahat ve güzel olmaz mı ? 🙂 Okumaya devam et “Centos Linux MYSQL ve Web Dosyaları Yedekleme”

MYSQL Ufak İpuçları – vol.1

Bu seri MYSQL ile ufak ipuçlarını paylaşacağım. Öyle anlar olur ki verilerinizi sakladığınız yerlerde problemler, analiz etmeniz gereken zıpçıktılar vs. olabilir.
Benimde özel notlarımın arasındakileri sizlerle paylaşıyor olacağım.

Aşağıdaki komut genellikle linux CLI tarafında kullanılmaktadır. Sunucudaki tüm veritabanlarını ve tabloları kontrol edip optimizasyon / uyarlama işlemlerini gerçekleştirir. Ek parametreleri ile birkaç kullanım örneğini aşağıdaki gibidir;
#   mysqlcheck –all-databases –optimize

Tek bir tablo için;
 mysqlcheck VERITABANIADI TABLOADI
Tek bir veritabanı fakat tüm tablolar için;
#   mysqlcheck VERITABANIADI
Tüm veritabanları ve tablolar için;
#   mysqlcheck –all-databases 

Bu komut ile veritabanınızın ufak da olsa bakımını sağlayabilirsiniz. Crush olmuş veritabanızı da kurtarma ihtimaliniz yüksektir.
Başlangıç olarak burada bırakıyorum. Çok daha farklı ve işe yarar komutlar var. Zaman buldukça onları da paylaşmaya çalışacağım.