Namestitev in konfiguriranje Nginx + PHP-fpm v Debianu
Nginx je spletni strežnik, ki je bil izdan leta 2004. Ta strežnik je enostaven za uporabo, kljub temu pa odlično obdeluje veliko povezav. Ta lastnost je posledica njegove notranje arhitekture. Sprva je bil ustvarjen kot strežnik, v katerem se izvaja statična vsebina (tako imenovani strežnik predpomnilnika). Za razliko od Apacheja Nginx nima vgrajenega tolmača za obdelavo zahtevkov za dinamično vsebino.
To zahteva dodatno interakcijo med spletnim strežnikom in aplikacijo. Upravitelj procesov PHP-FPM (FastCGI) uspešno rešuje to težavo. Pomembno je, da se pri delu s PHP veznik Nginx + PHP-FPM izkaže za manj produktivnega kot Apache + php_mod.
Če ima torej vaš strežnik visoke zahteve glede zmogljivosti za PHP, je bolje, da si ogledate veznik apache + php_mod. Druga pomembna točka je, da Nginx zahteva več truda za konfiguracijo kot Apache.
Ta članek obravnava namestitev in preprosto konfiguracijo strežnika Nginx v povezavi z upraviteljem procesov PHP-FPM v sistemu Debian 8. Vse operacije se izvajajo pod pravicami uporabnika root.
Najprej morate posodobiti:
apt-get update
Nato namestimo Nginx:
apt-get -y install nginx
Po namestitvi bomo preizkusili strežnik. To storimo tako, da v spletnem brskalniku odpremo naslov našega strežnika. Odpre se naslednja vsebina:
To je standardna stran vtičnika za Nginx. Naslednji korak je namestitev php5-fpm. To je zelo preprosto:
apt-get -y install php5-fpm
Nato morate opraviti nastavitev. Najprej konfigurirajte strežnik Nginx. Konfiguracijska datoteka je v /etc/nginx/nginx.conf.
Odprite to datoteko. Uporabljamo urejevalnik besedila vi, lahko pa uporabite katerega koli drugega, ki vam ustreza.
vi /etc/nginx/nginx.conf
Razumemo nekaj o strukturi same datoteke. Celotna datoteka je nekoliko podobna programski kodi. Vsebuje direktive. Razdeljene so na dve vrsti:
- Enostavne - niz z operatorji, ki se končajo s simbolom ";". Na primer: pid /run/nginx.pid;
- Blok - direktiva, ki vsebuje dodatne parametre, postavljene v oglate oklepaje {}.
Druge direktive so lahko postavljene znotraj oglatih oklepajev. V tem primeru se bo imenoval kontekst, vse direktive, ki so v konfiguracijski datoteki, vendar niso v nobenem oglatem oklepaju, pa so v globalnem kontekstu ali tako imenovanem glavnem kontekstu.
Nizi, označeni s simbolom #, so komentarji in se ne upoštevajo v konfiguraciji.
Kot lahko vidite, je v datoteki direktiva:
vključuje /etc/nginx/sites-enabled/*;
Ta direktiva pove, da ta konfiguracijska datoteka vključuje vse konfiguracijske datoteke iz imenika /etc/nginx/sites-enabled/directory. Ta imenik v bistvu vsebuje simbolične povezave do konfiguracije navideznih gostiteljev (v bistvu spletnih mest, ki so na voljo v strežniku).
Zdaj moramo konfigurirati navidezni gostitelj, ki bo odgovoren za naš najpreprostejši vir (naj bo to test.net). Najprej bomo zanj ustvarili imenik. Ustvarimo ga v obliki ukaza:
mkdir -p /var/www/test.net/html
Zdaj v tem imeniku ustvarimo datoteko index.html z naslednjo vsebino:
<html> <head> <title>Hello World</title> </head> <body> <h>To je testna stran.</h> </body> </html>
Zdaj imamo vsebino spletnega mesta, naj in eno stran vsega. Za to spletno mesto morate ustvariti navidezni gostitelj. Kopirajte privzeto datoteko za navidezni gostitelj:
cp /etc/nginx/sites-available/default /etc/nginx/sites-available/test.net
Nato jo odprite za urejanje. Direktiva listen ima možnosti za privzeti_server. S to vrednostjo je lahko nastavljen samo en blok, kar pomeni, da bo ta blok servisiral poizvedbe, za katere ni bilo najdeno nič primernejšega. Zato vrstice
listen 80 default_server; listen [::]:80 default_server;
morate odstraniti iz te datoteke. Nato morate konfigurirati korenski imenik, ki vsebuje vsebino našega spletnega mesta. To storimo tako, da zapišemo direktivo root, kot sledi:
korenski imenik /var/www/test.net/html;
Naslednja direktiva index določa datoteke, ki se bodo uporabljale kot indeksne datoteke. Vrstni red preverjanja datotek ustreza vrstnemu redu v konfiguracijski datoteki. Ta direktiva je zapisana na naslednji način:
index index.html index.htm index.nginx-debian.html;
Naslednja direktiva server_name določa ime strežnika. Kot vrednosti navedemo ime domene in vzdevek, kadar je ime domene določeno s predpono www.
server_name test.net www.test.net;
Nato je treba navesti le še direktivo location, ki nastavi konfiguracijo spletnega mesta na podlagi imena URI, navedenega v zahtevi. V našem primeru bo videti preprosto:
lokacija / { try_files $uri $uri/ =404; }
To pomeni, da bodo najprej preverjene datoteke, nato imeniki, in če ne bo najdeno nič primernega, bo vrnjeno sporočilo Not Found (404).
To je vse s konfiguracijsko datoteko. Njena končna vsebina je naslednja:
#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; } }
Vse druge direktive in njihove vrednosti si lahko preberete v uradni dokumentaciji Nginx, ki je na voljo tukaj http://nginx.org/en/docs/.
Zdaj imamo vsebino spletnega mesta in njegovo konfiguracijsko datoteko. Ostane nam še, da jo vključimo. To storite tako, da ustvarite simbolno povezavo:
ln -s /etc/nginx/sites-available/test.net /etc/nginx/sites-enabled/
Ponovno zaženite strežnik, da bodo spremembe začele veljati:
/etc/init.d/nginx restart
Preverimo delovanje ustvarjenega vira.
Za odprtje strani boste morda morali v datoteko hosts v računalniku, iz katerega preverjate, dodati vrstico:
xxx.xxx.xxx.xxx test.net
Kje xxx.xxx.xxx.xxx - это IP-адрес сервера с установленным Nginx. Файл hosts, находится:
- V Win7: C:\Windows\System32\drivers\etc (v Win7);
- /etc/hosts (v Debian).
Namestili smo Nginx in php5-fpm ter izdelali najpreprostejše spletno mesto. Naslednji korak je konfiguracija PHP in uporaba z Nginxom.
Najprej bomo na našem navideznem gostitelju ustvarili stran s kodo PHP. Datoteko /var/www/test.net/html/info.php naredimo, kot sledi:
<?php phpinfo(); ?>
To stran zdaj odpremo v brskalniku http://test.net/info.php
Kaj pa izvajanje kode PHP? Kode PHP nismo izvršili, ker tolmač PHP v Nginxu ni konfiguriran. Naredimo to.
Odprite našo konfiguracijsko datoteko /etc/nginx/sites-available/test.net. Dodajte naslednjo direktivo blok:
$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; }
Ta direktiva opisuje parametre za obdelavo poizvedb v datoteke PHP. Vsakega parametra in njegove vrednosti ne bom opisoval. Te informacije so na voljo v uradni dokumentaciji tukaj: http: //nginx.org/en/docs/dirindex.html
Naša konfiguracijska datoteka je zdaj naslednja:
strežnik { root /var/www/test.net/html; index index.html index.htm index.nginx-debian.html; ime strežnika 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; } }
Shranite spremembe v datoteko in ponovno zaženite strežnik Nginx.
/etc/init.d/nginx restart
Zdaj poskusite še enkrat odpreti http://test.net/info.php. Rezultat mora biti naslednji:
Na sliki zaslona sem označil informacije, ki kažejo na uporabo upravitelja FPM.
Dejansko je najpreprostejša konfiguracija strežnika Nginx + PHP-FPM končana. Najenostavnejše spletno mesto je ustvarjeno in konfigurirano za delo s PHP.
Oglejte si naslednji članek o konfiguraciji PHP-FPM.
Content