Debian'da Nginx + PHP-fpm kurulumu ve yapılandırılması
Nginx 2004 yılında piyasaya sürülen bir web sunucusudur. Bu sunucunun kullanımı kolaydır, ancak buna rağmen çok sayıda bağlantıyı mükemmel bir şekilde yönetir. Bu özellik iç mimarisinden kaynaklanmaktadır. Başlangıçta, statik içerik çalıştıran bir sunucu olarak yaratılmıştır (önbellekleme sunucusu olarak adlandırılır). Apache'nin aksine, Nginx dinamik içerik isteklerini işlemek için yerleşik bir yorumlayıcıya sahip değildir.
Bu, web sunucusu ile uygulama arasında daha fazla etkileşim gerektirir. PHP-FPM süreç yöneticisi (FastCGI) bu sorunu başarıyla çözer. Önemli olan nokta, PHP ile çalışırken Nginx + PHP-FPM bağlayıcısının Apache + php_mod'dan daha az verimli olduğunu göstermesidir.
Bu nedenle sunucunuzun PHP için yüksek performans gereksinimleri varsa, apache + php_mod paketine bakmak daha iyidir. Bir diğer önemli nokta ise Nginx'in Apache'ye göre daha fazla yapılandırma çabası gerektirmesidir.
Bu makale Debian 8'de PHP-FPM işlem yöneticisi ile birlikte Nginx sunucusunun kurulumu ve basit yapılandırması ile ilgilidir. Tüm işlemler root kullanıcı ayrıcalıkları altında gerçekleştirilir.
İlk olarak, güncelleme yapmanız gerekir:
apt-get güncellemesi
Daha sonra, Nginx'i kuruyoruz:
apt-get -y install nginx
Kurulumdan sonra sunucuyu test edeceğiz. Bunu yapmak için sunucumuzun web tarayıcı adresini açmanız yeterli. Aşağıdaki içerik açılacaktır:
Bu Nginx için standart eklenti sayfasıdır. Bir sonraki adım php5-fpm'i kurmaktır. Bu çok basit:
apt-get -y install php5-fpm
Daha sonra, kurulumu yapmanız gerekir. İlk olarak, Nginx sunucusunu yapılandırın. Yapılandırma dosyası /etc/nginx/nginx.conf içindedir.
Bu dosyayı açın. Biz vi metin düzenleyicisini kullanıyoruz, ancak size uygun olan herhangi birini kullanabilirsiniz.
vi /etc/nginx/nginx.conf
Dosyanın yapısı hakkında biraz bilgi sahibi olalım. Tüm dosya bir şekilde program koduna benzer. Yönergeleri vardır. Bunlar iki türe ayrılır:
- Basit - ";" sembolü ile biten operatörleri içeren bir dize. Örneğin: pid /run/nginx.pid;
- Blok - küme parantezleri {} içine yerleştirilmiş ek parametreler içeren bir yönerge.
Diğer yönergeler küme parantezleri içine yerleştirilebilir. Bu durumda, bağlam olarak adlandırılır ve yapılandırma dosyasında bulunan ancak herhangi bir küme parantezi içinde olmayan tüm yönergeler küresel bağlamda veya ana bağlam olarak adlandırılır.
sembolü ile işaretlenmiş dizgiler yorumlardır ve yapılandırmada dikkate alınmazlar.
Dosyada görebileceğiniz gibi bir yönerge var:
include /etc/nginx/sites-enabled/*;
Bu yönerge, bu yapılandırma dosyasının /etc/nginx/sites-enabled/ dizinindeki tüm yapılandırma dosyalarını içerdiğini söyler. Bu dizin esasen sanal konakların (esasen sunucuda sunulan siteler) yapılandırmasına sembolik bağlantılar içerir.
Şimdi en basit kaynağımızdan (test.net olsun) sorumlu olacak bir sanal konağı yapılandırmamız gerekiyor. İlk olarak, onun için bir dizin oluşturacağız. Bunu bir komut yapalım:
mkdir -p /var/www/test.net/html
Şimdi bu dizinde aşağıdaki içeriğe sahip bir index.html dosyası oluşturalım:
<html> <head> <title>Merhaba Dünya</title> </head> <body> <h>Bu bir test sayfasıdır.</h> </body> </html>
Şimdi sitenin içeriğine sahibiz, her şeyin bir sayfası olsun. Bu site için bir sanal ana bilgisayar oluşturmanız gerekir. Sanal konak için varsayılan dosyayı kopyalayın:
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/test.net
Sonra, düzenlemek için açın. listen yönergesi default_server için seçeneklere sahiptir. Bu değerle sadece bir blok ayarlanabilir, bu da bu bloğun daha uygun bir şey bulunamayan sorgulara hizmet edeceği anlamına gelir. Bu nedenle satırlar
listen 80 default_server; listen [::]:80 default_server;
bu dosyadan kaldırmanız gerekir. Daha sonra, sitemizin içeriğini içeren kök dizini yapılandırmalısınız. Bunu yapmak için root yönergesini aşağıdaki gibi yazıyoruz:
root /var/www/test.net/html;
Aşağıdaki index yönergesi index dosyası olarak kullanılacak dosyaları tanımlar. Dosyaların kontrol edilme sırası yapılandırma dosyasındaki sıraya karşılık gelir. Bu yönerge aşağıdaki gibi yazılır:
index index.html index.htm index.nginx-debian.html;
Aşağıdaki server_name yönergesi sunucu adını belirtir. Değer olarak, alan adı www önekiyle belirtildiğinde alan adını ve takma adı belirtiriz.
server_name test.net www.test.net;
Daha sonra, yalnızca istekte belirtilen URI adına göre site yapılandırmasını ayarlayan bir konum yönergesi belirtmeniz gerekir. Bizim durumumuzda, basit görünecektir:
location / { try_files $uri $uri/ =404; }
Bu, önce dosyaların kontrol edileceği, ardından dizinlerin kontrol edileceği ve uygun bir şey bulunamazsa Bulunamadı (404) döndürüleceği anlamına gelir.
Bunların hepsi yapılandırma dosyası ile ilgilidir. Son içeriği aşağıdaki gibidir:
#cat /etc/nginx/sites-available/test.net
server { root /var/www/test.net/html; index index.html index.htm index.nginx-debian.html; server_name test.net www.test.net; location / { try_files $uri $uri/ =404; } }
Diğer tüm direktifler ve değerleri resmi Nginx dokümantasyonunda okunabilir, burada http://nginx.org/en/docs/.
Artık sitenin içeriğine ve yapılandırma dosyasına sahibiz. Geriye onu dahil etmek kalıyor. Bunu yapmak için sembolik bir bağlantı oluşturun:
ln -s /etc/nginx/sites-available/test.net /etc/nginx/sites-enabled/
Değişiklikleri etkili hale getirmek için sunucuyu yeniden başlatın:
/etc/init.d/nginx restart
Oluşturulan kaynağın çalışmasını kontrol edelim.
Bir sayfayı açmak için, kontrol ettiğiniz bilgisayardaki hosts dosyasına bir satır eklemeniz gerekebilir:
xxx.xxx.xxx.xxx test.net
Где xxx.xxx.xxx.xxx - это IP-адрес сервера с установленным Nginx. Ana bilgisayarlar, находится:
- C:\Windows\System32\drivers\etc (в Win7);
- /etc/hosts (Debian).
Nginx ve php5-fpm'i kurduk ve en basit siteyi yaptık. Bir sonraki adım PHP 'yi yapılandırmak ve Nginx ile uygulamaktır.
Öncelikle sanal konağımız üzerinde PHP kodlu bir sayfa oluşturacağız. var/www/test.net/html/info.php dosyasını aşağıdaki gibi yapalım:
<?php phpinfo(); ?>
Şimdi bu sayfayı tarayıcıda açın http://test.net/info.php
Peki ya PHP kodunun çalıştırılması? PHP yorumlayıcısı Nginx'te yapılandırılmadığı için çalıştırmadığımız bir PHP kodu. Hadi bunu yapalım.
Yapılandırma dosyamızı /etc/nginx/sites-available/test.net açın. Aşağıdaki blok yönergesini ekleyin:
location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Bu yönerge PHP dosyalarına giden sorguların işlenmesi için gerekli değiştirgeleri tanımlar. Her bir değiştirgeyi ve değerini açıklamayacağım. Bu bilgiler resmi belgelerde bulunabilir: http: //nginx.org/en/docs/dirindex.html
Şimdi yapılandırma dosyamız aşağıdaki gibidir:
server { root /var/www/test.net/html; index index.html index.htm index.nginx-debian.html; server_name test.net www.test.net; location / { try_files $uri $uri/ =404; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Değişiklikleri dosyaya kaydedin ve Nginx sunucumuzu yeniden başlatın.
/etc/init.d/nginx restart
Şimdi http://test.net/info.php adresini açmayı tekrar deneyelim. Sonuç aşağıdaki gibi olmalıdır:
Ekran görüntüsünde FPM yöneticisinin kullanıldığını gösteren bilgileri işaretledim.
Aslında, Nginx + PHP-FPM sunucusunun en basit yapılandırması tamamlandı. En basit site oluşturuldu ve PHP ile çalışacak şekilde yapılandırıldı.
PHP-FPM yapılandır ması ile ilgili aşağıdaki makaleye bakınız.
Content