Merhaba sevgili okurlar bu gün sizlere nginx webserver'dan bahsedeceğim. Webserver bir site için çok önemlidir, gerek performans gerekse işlevleri açısından webserver seçimi çok önemli bir yerdedir. Birçok webserver mevcut, bunlardan en bilineni ve en sık kullanılanı, Apache ücretli olarak ise LiteSpeed en çok kullanılan webserverlar arasındadır. Nginx ise daha az kullanılmakla birlikte, çok fonksiyonel bir webserver dir.
Centos ta nginx kurmak oldukça basit, epel repository de zaten mevcut olan nginx, şayet epel repository kurulu ise direk yum install nginx şeklinde kurabilirsiniz. Epel mevcut değil ise yum install epel-release komutuyla önce epel i kurup ardından nginx kurulumu yapabilirsiniz.
Kurulumdan ziyade nginx confları ile ilgili bilgiler aktarmaya çalışacağım.
Nginx default olarak /etc/nginx dizinine kurulur, bu dizinde nginx.conf dosyasyı mevcuttur. bu dosya ile web sitelerimize klasör belirtip ordan çalıştırabiliriz. Birden çok site barındıracak isek, nginx.conf içersine
include /etc/nginx/conf.d/*.conf;
Şeklinde conf.d dizinindeki tüm .conf uzantılı dosyaları dahil ederek, bu klasör içersine confları oluşturacağız. Bu include satırnı http bloğunun içersine eklemeniz gerekmektedir.
yum install php-fpm diyerek php kurulumunuda tamamlayalım bu arada...
conf.d dizininde site.conf şeklinde boş bir yapılandırma dosyası oluşturalım ve nginx parametrelerini kullanarak gelen domain name isteğini yönetelim.
server {
##Nginx Yapılandırma
}
bütün işlemlerimizi server bloğu içersinde yapacağız.
location parametresi ile gelen url yi kontrol edeceğiz.
listen ile port dinleyeceğiz, server_name ile alan adı belirteceğiz.
server {
listen 80;
server_name domain.com www.domain.com;
location / {
root /home/site/public_html;
}
}
bu şekilde bir conf dosyasına sahip olduğunuzda web serverden sitenize erişebileceksiniz root /home/site/public_html seçeneği ile, sitemizin çalışacağı dizinini yani document_root u belirtmiş oluyoruz.
Nginx te yaptığınız her değişikliğin ardından nginx -s reload komutuyla nginx si yenilemeyi unutmayınız. Aksi takdirde yapılandırma dosyanızı algılamayacaktır.
Son olarak phpnin çalışmasını sağlayalım.
server {
listen 80;
server_name domain.com www.domain.com;
location / {
root /home/site/public_html;
}
location ~ .php$ {
root /home/site/public_html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Burada dikkat etmeniz gereken şey, her location için root klasör belirtmeniz gerekmekte. Bu şekilde bir yapılandırma dosyanız olsa nginx /home/site/public_html dizininden php yi çalıştıracaktı.
bu arada php-fpm yi başlatmayı unutmayın (service php-fpm start)
Bilmeniz gereken şey nginx webserver default olarak .htaccess dosyasını çalıştırmaz, bunun için örnek verecek olursak, farzedelimki wordpress kuruyorsunuz,
server {
listen 80;
server_name domain.com www.domain.com;
location / {
root /home/site/public_html;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~ .php$ {
root /home/site/public_html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
location / gelen istekleri index.php üzerine yönlendirmeniz gerekmekteydi, aksi durumda seo linkleriniz çalışmakacaktı. Nginx çok gelişmiş bir webserver ve olanakları da bir o kadar gelişmiş, cache ve birçok modulüyle herkesin talebine cevap verebilecek bir yapıdadır. Bu yazımda en basit şekliyle nginx conf yapılandırmasını anlatmaya çalıştım. Soru ve sorunlarınızı yorum olarak bırakabilirsiniz.
Herşeyi doğru yaptık ancak php çalışmıyor ise, yüksek ihtimal selinux aktif olduğu içindir. setenforce 0 komutunu uygulayarak selinux u disable ediyor, nginx ve php-fpm yi restart ediyoruz.