Monthly Archives: Eylül 2014

Genel

Apache2’den Nginx’e Geçiş

Merhaba Arkadaşlar,
Uzunca bir süredir ibrahimgunduz.net’i nginx’e geçirmeyi planlıyordum. Her ne kadar bazı istisnai durumlar dışında blog, yüksek trafiğe sahip olmasa da, geçişi kesintisiz olarak gerçekleştirmek istediğim için düzgün bir planlama olmadan bu işlemi gerçekleştirmek istemedim. Daha önce yaptığım bir iki deneme önyüzde olmasa da baackend tarafında hızlıca çözemediğim bazı sıkıntılara neden olduğundan kısa sürede tekrar geri dönmek zorunda kalmıştım.

Bugün bu geçiş işlemini tekrar gerçekleştirip siteyi nginx üstünde çalışr hale getirerek edindiğim tecrübeyi sizlerle paylaşmak istedim.

Gerekli Paketlerin Kurulumu:

* Nginx son sürümünün barındırıldığı repoyu apt paket yöneticisine bildirmek için birazdan kullanacağım komutu çalıştırabilmek için python-softwareproperties paketini yükledim.

$ sudo apt-get install python-software-properties

* Nginx paketinin bulunduğu repoyu tanımladım.

$ sudo add-apt-repository ppa:nginx/stable

* Paket listesini güncelledim ve nginx paketini kurdum.

$ sudo apt-get update
$ sudo apt-get install nginx

* Aslında biraz önce de belirttiğim gibi uygulama sunucuma çok fazla trafik gelmiyor ancak yine de sonuçlarını görebilmek adına PHP proseslerini yönetmesi için PHP FPM kurulumunu gerçekleştirdim.

$ sudo apt-get install php5-fpm

Artık yavaştan sunucu konfigüre etmeye başlayabiliriz.

PHP-FPM Konfigürasyonu:

* Dilediğiniz metin düzenleyicisi ile /etc/php5/fpm/php.ini dosyasını açın ve cgi.fix_pathinf=1 şeklindeki satırı aşağıdaki biçimde değiştirin.

cgi.fix_pathinfo=0

* Yine dilediğiniz metin düzenleyici ile /etc/php5/fpm/pool.d/www.conf dosyasını açın ve aşağıdaki değişiklikleri gerçekleştirin.

listen = /var/run/php5-fpm.sock
listen.group = www-data

Nginx Konfigürasyonu:

* Öncelikle web sitemiz için nginx in varsayılan konfigürasyonunu kopyalayarak yeni bir sanal sunucu oluşturalım.

$ cd /etc/nginx/sites-available
$ sudo cp default ibrahimgunduz.net

* Oluşturduğumuz sanal sunucu konfigürasyonunu aşağıdaki biçimde düzenleyin.

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /path/to/ibrahimgunduznet/httpdocs;
        index index.php index.html index.htm;

        server_name www.ibrahimgunduz.net ibrahimgunduz.net;

        location / {
                try_files $uri $uri/ /index.php?q=$uri&$args;
        }

        error_page 404 /404.html;

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /usr/share/nginx/html;
        }

        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
                fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;
        }

        error_log  /var/log/nginx/ibrahimgunduznet-error.log  error;
        access_log /var/log/nginx/ibrahimgunduznet-access.log;
}

* Nginx in sanal makine konfigürasyonunu işlemesi için apache de olduğu gibi sites-enabled klasörü altında konfigürasyonun sembolik bağlantısını oluşturuyoruz.

$ sudo ln -s /etc/nginx/sites-available/ibrahimgunduz.net /etc/nginx/sites-enabled/

Artık hazırız. Şimdi mevcut apache servisini durdurup nginix ve php-fpm ile ilgili yaptığımız değişiklikleri yayına almaya hazırız. Aşağıdaki komutları çalıştırıp apache servisini durup nginx ve php-fpm servislerini yeniden başlatalım.

$ sudo service apache2 stop
$ sudo service php5-fpm restart
$ sudo service nginx restart

Herhangibir sorunla karşılaştığınızda nginx servisini durdurup, apache2 servisini başlatarak geri dönüş yapabilirsiniz.

Referanslar:

https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-debian-7

https://www.digitalocean.com/community/tutorials/how-to-install-the-latest-version-of-nginx-on-ubuntu-12-10

https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-nginx-on-ubuntu-14-04

http://stackoverflow.com/a/22334781

http://stackoverflow.com/questions/1706111/where-can-i-find-the-error-logs-of-nginx-using-fastcgi-and-django