Merhaba ardaşlar bu makalemde sizlere nginx ile ilgili anlatımı elimden geldiğince gerçekleştirmeye çalışacağım. Konuyu hazırlarken yaptığım testler sonrasında tahmin etdiğimden çok daha performanslı çalıştığına şahit olduğum nginx’i hepinize öneriyorum enazından denemek bile hoşunuza gidecek diyebilirim.
Linux sunucularda alışıla gelen apache web sunucusuna alternatif olarak henüz beta olarak geçmesine rağmen daha yüksek performanslı (Yapılan testlere göre %400′e kadar), apache kadar tutarlı nginx HTTP server kurulumunu anlatacağım. nginx aynı zamanda bir reverse proxy (ters proksi) ve mail sunucusu ayrıca MacOS, Linux, FreeBSD, Windows ve Solaris işletim sistemlerinde çalışabilmektedir.
2002 yılında Igor Sysoev tarafından nginx üzerinde çalışılmaya, 2005 senesinde de geliştirilmesi için açık kaynak olarak dağıtılmaya başlanmış, geliştirilmesi halen devam etmekte olan bir yazılım. 2010 yılının 3. çeyreğinde dünya üzerindeki sunucularda %10 luk kullanımı ile başarısını kanıtladığını düşünüyorum.
Aylık 30 dolar civarında lisanslı olarak satılan LiteSpeed ‘e alternatif olarak ücretsiz olan nginx’in kullanılabileceği kanaatindeyim. Kullanımı, yapılandırması da oldukça basit. Aşağıda özelliklerini görebilirsiniz.
Temel HTTP özellikleri
* Statik ve index dosyalarının sunumu, otomatik indeksleme; açık dosya açıklayıcı önbellek;
* Önbellek ile hızlandırılmış reverse proxying; basit yük dengeleme ve hata toleransı;
* Uzak FastCgi sunucularının önbelleklenmesi ile hızlandırılmış destek; basit yük dengeleme ve hata toleransı;
* Modüler yapı. Gzip, byte aralıkları, yığın cevaplar (chunked responses), XSLT, SSI, imaj boyutlandırma gibi filtreler. FastCGI veya proksilenmiş sunucular ile tek bir sayfada çoklu SSI içermelerinin paralel işlenmesi.
* SSL ve TLS SNI desteği.
Diğer HTTP özellikleri
* Ad ve IP tabanlı sanal sunucular;
* Keep-alive ve pipelined bağlantı desteği;
* Esnek yapılandırma;
* İstemci işlemlerinde kopma olmadan yeniden yapılandırma ve online güncelleme;
* Erişim kayıt (log) formatları, tamponlanmış kayıt yazımı ve hızlı kayıt devri;
* 3xx-5xx hata kod yönlendirmeleri;
* rewrite modülü;
* İstemcinin IP adresine dayalı erişim kontrolü ve HTTP temel kimlik denetleme;
* PUT, DELETE, MKCOL, COPY ve MOVE methodları;
* FLV streaming;
* Hız sınırlandırma;
* Bir adresten gelen eşzamanlı bağlantı ve talepleri sınırlandırma.
* Gömülü perl.
Mail proxy sunucu özellikleri
* Harici bir HTTP kimlik denetleme sunucusunu kullanarak, kullanıcıyı IMAP/POP3 backend’ine yönlendirme;
* Harici bir HTTP kimlik denetleme sunucusunu kullanarak, kullanıcıyı SMTP backend’ine yönlendirme ve kullanıcı kimlik denetlemesi;
* Kimlik denetleme methodları:
o POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
o IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;
o SMTP: AUTH LOGIN/PLAIN/CRAM-MD5;
* SSL desteği;
* STARTTLS ve STLS desteği.
Yapı ve ölçeklenebilirlik
* Bir ana işlem (main process) ve çok sayıda işçi işlemleri (workers). İşçiler, imtiyazsız kullanıcı olarak yürütülürler;
* Uyarı methodları: kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), rt signals (Linux 2.2.19+), /dev/poll (Solaris 7 11/99+), event ports (Solaris 10), select ve poll;
* Çeşitli kqueue özellikleri desteği: EV_CLEAR, EV_DISABLE (event’i geçici olarak etkisizleştirir), NOTE_LOWAT, EV_EOF, olanaklı data sayısı, hata kodları;
* sendfile (FreeBSD 3.1+, Linux 2.2+, Mac OS X 10.5), sendfile64 (Linux 2.4.21+), ve sendfilev (Solaris 8 7/01+) desteği;
* File AIO (FreeBSD 4.3+, Linux 2.6.22+);
* Accept-filters (FreeBSD 4.1+) ve TCP_DEFER_ACCEPT (Linux 2.4+) desteği;
* 10,000 inaktif HTTP keep-alive bağlantısı yaklaşık 2.5M hafıza kullanır;
* Data kopyalama operasyonları minimum düzeydedir.
Test edilen işletim sistemleri ve platformlar
* FreeBSD 3 — 8 / i386; FreeBSD 5 — 8 / amd64;
* Linux 2.2 — 2.6 / i386; Linux 2.6 / amd64;
* Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v;
* MacOS X / ppc, i386;
* Windows XP, Windows Server 2003
Yeterli bilgiyi paylaştığım düşüncesi ile kurulum adımlarına geçiyorum.
Kurulum Hazırlıkları
Centos 5.5 kurulumun tamamlandığını varsayarak mysql-server kurulumu ile başlıyoruz.
# yum install mysql mysql-server
Mysql kurulumunun ardından sistem açılışında otomatik olarak mysql servisinin başlamasını sağlıyoruz.
# chkconfig –levels 235 mysqld on
Mysql servisini çalıştırıyoruz.
# service mysqld start
Mysql root şifresi ve bir kaç ayar için aşağıdaki komutu çalıştırıyoruz.
# mysql_secure_installation
Ekrana gelecek soruları ve vermeniz gereken cevaplarını aşağıda bulabilirsiniz.
Enter current password for root (enter for none): ENTER
Set root password? [Y/n] : ENTER
New password: Yeni Mysql root şifrenizi yazın
Re-enter new password: Yeni Mysql root şifrenizi yeniden yazın
Remove anonymous users? [Y/n] : ENTER
Disallow root login remotely? [Y/n] : ENTER
Remove test database and access to it? [Y/n] : ENTER
Reload privilege tables now? [Y/n] : ENTER
Nginx Kurulumu
nginx paketleri CentOS’un resmi repositorysinde bulunmadığı için paketleri karan.org un testing repositorysinden çekeceğiz.Önce repoyu ekliyoruz.
# cd /etc/yum.repos.d/
# wget http://centos.karan.org/kbsingh-CentOS-Extras.repo
Şimdi küçük bir düzenleme yapacağız bunun için vi editör ile repo dosyasını açıyoruz;
# vi /etc/yum.repos.d/kbsingh-CentOS-Extras.repo
Açılan dosyanın [kbs-CentOS-Testing] alanı altında alan enabled=0 alanını enabled=1 şeklinde değiştiriyoruz.
Artık yum komutu ile nginx’i yükleyebiliriz.
# yum install nginx
Mysqlde yaptığımız gibi nginx’in sistem açılışında çalışmasını sağlayalım.
# chkconfig –levels 235 nginx on
nginx servisini başlatıyoruz.
# service nginx start
Eğer herşey yolunda ise sunucunuza verdiğiniz ip adresini tarayıcı penceresine yazdığınızda boş bir sayfa açılmalı.
PHP5-FastCGI Yüklemesi ve Entegrasyon
Öncelikle PHP5 ve diğer gerekli paketleri yükleyelim.
# yum install lighttpd-fastcgi php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy
Şimdi php.ini dosyamıza bir satır ekleyeceğiz. vi editor ile açıp sayfanın en altına aşağıdaki satırı ekleyin.
cgi.fix_pathinfo = 1
PHP FastCGI daemon’u nginx kullanıcı ve grubu ile localhost üzerinde 9000 nolu portu dinleyecek şekilde başlatmak için aşağıdaki komutu giriyoruz.
# /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u nginx -g nginx -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid
Şimdi /etc/rc.local dosyasını açıp yukaruda yazdığımız komutu ekleyeceğiz. Böylece her sistem açılışında bu komutu çalıştırmamıza gerek kalmayacak.
# vi /etc/rc.local
Sayfanın en altına aşağıdaki satırı ekliyoruz.
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u nginx -g nginx -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid
Temel nginx Konfigürasyonu
Basit bir kaç ayarlama sonrasında sunucumuz hazır olacak.
Conf dosyasını açarak gerekli düzenlemeleri yapalım.
# vi /etc/nginx/nginx.conf
Ben best-practice olarak aşağıdaki satırlardaki değerlerde düzenleme yaptım. Bu alan sizin tercihinize kalmış.
worker_processes 5; (Varsayılan değer 1)
keepalive_timeout 2; (Varsayılan değer 65)
Sonraki işlemi sayfanın biraz altında virtual hosts alanında yapacağız. Bu zorunlu bir işlem, size kolaylık olması açısından tüm bu ayarlar için nginx.conf içeriğini aşağıda veriyorum.
nginx.conf
Düz metin formatında verdiğim dosya uzantısını conf olarak değiştirip direkt olarak sunucunuzda /etc/nginx/ dizinine atabilir veya içeriğini birebir kopyalabilirsiniz.
Bu ayarlamalardan sonra nginx servisini yeniden başlatıyoruz.
# service nginx restart
İşlemlerimiz bu kadar artık sunucumuzu kullanabiliriz şimdi test edelim.
info.php isimli yeni bir dosya oluşturuyoruz;
# vi /usr/share/nginx/html/info.php
Dosya içerisine aşağıdaki satırları girip kaydediyoruz.Bu dosya bize sistem hakkında bilgiler sunacak.
Şimdi teste başlayalım.Tarayıcınıza sunucumuzun ip adresini girip sonuna /info.php yazıyoruz. Benim sunucu ip adresim 192.168.2.1 olduğundan örneği de bu şekilde veriyorum.
http://192.168.2.1/info.php
Açılan sayfa aşağıdaki gibi olacak, Bu sayfadan bileşen vb. kontrolleri yapabiliyoruz
PHP5 FastCGI çalışıyor mu buna Server API kısmından bakıyoruz.
Mysql’in de çalıştığını aynı sayfanın alt kısımlarından kontrol edbilirsiniz.
bursa-bilgisayar.com’dan mutluluklar dilerim.
Leave a comment