Bursa Bilgisayar

Nginx Nedir Ne İşe Yarar Mysql Desteği İle Nasıl Kurulur

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.

Related posts

427 thoughts on “Nginx Nedir Ne İşe Yarar Mysql Desteği İle Nasıl Kurulur

  1. Great beat ! I would like to apprentice whilst you amend your web site, how could
    i subscribe for a weblog site? The account helped me a acceptable
    deal. I had been tiny bit acquainted of this your broadcast
    provided vivid clear idea

  2. Thank you, I have just been looking for info about this subject for ages and yours is the best I
    have found out till now. But, what about the conclusion? Are you certain in regards to the source?

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

 Characters available