Nećemo se dotaknuti osnovnih postavki Nginx servera samog i njegove funkcionalnosti, to smo već napravili u našem prethodnom članku. Ali neke parametre treba razmotriti.
Definirajte i navedite broj rukovatelja i broj veza po procesoru. U tu svrhu, u datoteci /etc/nginx/nginx.conf navedemo vrijednosti:
worker_processes 1; worker_connections 1024;
Osnovna ideja u odabiru ovih vrijednosti je da je broj opsluženih klijenata jednak broju rukovatelja pomnoženom s brojem veza za svaki procesor. Dakle, u našem slučaju, to je 1.024 klijenta. Kako biste izbjegli probleme s ulazom-izlazom, slijedite pravilo 1 procesor po jezgri procesora. Možete odrediti broj jezgri naredbom:
cat /proc/cpuinfo | grep processor processor : 0
Moj procesor ima jednu jezgru. Stoga je broj procesora jedan. Broj veza može se dodati ovisno o potrebi. Ovaj parametar se već bira u praksi.
Iz sigurnosnih razloga, direktiva se može aktivirati
server_tokens off
Iz priručnika: «Dopušta ili zabranjuje izdavanje Nginx verzije u porukama o greškama i u polju "Server" naslova odgovora.»
Ova direktiva se dodaje u http/server/local odjeljak konfiguracijske datoteke.
Navedimo veličinu podataka koje prenosi server:
client_max_body_size 20m; client_body_buffer_size 128k;
Ova direktiva se dodaje u http/server/local odjeljak konfiguracijske datoteke.
Konfigurirajte predmemoriju za statičke datoteke. Ovo je radi uštede resursa servera i propusnosti. Onemogućite bilježenje i postavite datum isteka zaglavlja na 100 dana za statičke datoteke.
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
Za interakciju s PHP-FPM, možete navesti Unix socket. Za to trebamo napisati u našoj konfiguraciji:
# Pass PHP scripts to PHP-FPM
location ~* \.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
Gledajući unaprijed, u PHP-FPM postavkama, trebate navesti da sluša IP i port navedene u našoj konfiguraciji. To se radi direktivom slušanja konfiguracijske datoteke bazena.
Iz sigurnosnih razloga, možete spriječiti pristup skrivenim datotekama.
location ~ /\. {
access_log off;
log_not_found off;
deny all;
}
PHP-FPM konfiguracija sama se može podijeliti na 2 koraka: postavljanje globalnih parametara koje se provodi u datoteci
/etc/php5/fpm/php-fpm.conf
i konfiguracija bazena. Konfiguracija bazena je navedena u datotekama direktorija
/etc/php5/fpm/pool.d/
Globalni parametri nisu tako zanimljivi i može se o njima čitati u dokumentaciji, ali glavne parametre konfiguracije bazena ćemo razmotriti.
Svaki bazen se konfigurira zasebnom datotekom. Ako izvršite naredbu
ls -l /etc/php5/fpm/pool. d/
vidjet ćemo da sustav već ima konfiguracijsku datoteku za www bazen. Pogledajmo konfiguraciju na njegovom primjeru.
Važna točka u konfiguraciji je odabir broja rukovatelja koji se koriste za izvršavanje PHP skripti. Njihov broj mora biti mudro odabran. Premalo rukovatelja neće omogućiti učinkovitu i promptnu obradu zahtjeva, ali previše ih će iscrpiti resurse koje server zahtijeva za druge zadatke. Broj procesora treba odabrati iz razmatranja da čak i u vršnim zahtjevima serveru, iskorištavanje njegovih resursa treba ostati unutar razumnih granica i ne voditi do njegovog preopterećenja.
Sada pogledajmo malo konfiguracijsku datoteku i navedimo sljedeće opcije. O da, u konfiguracijskoj datoteci, retci koji počinju simbolom «;» su komentari i ne smatraju se direktivama.
Navedite dinamički način stvaranja procesa, tako da će broj pokrenutih PHP-FPM procesa ovisiti izravno o opterećenju servera.
pm = dynamic
Postavite maksimalni broj podređenih procesa.
pm.max_children = 6
Zatim, morate navesti broj podređenih procesa koji će se pokrenuti čim se server učita. Prema zadanim postavkama, ova vrijednost je 2. Možete je povećati ako resursi dozvoljavaju; postavimo je na 3.
pm.start_servers = 3
Također trebate navesti minimalni i maksimalni broj neaktivnih procesa. Napravimo minimalni broj jednak broju procesa koji rade pri pokretanju servera. I postavit ćemo maksimalni broj na temelju toga da ne bi trebao prelaziti maksimalni dopušteni broj podređenih procesa.
pm.min_spare_servers = 3
pm.max_spare_servers = 5
Ove vrijednosti su dane za primjer i objašnjenje. Ali u svakoj specifičnoj situaciji, mogu varirati. Optimalne vrijednosti ovise o mogućnostima servera i dostupnim resursima, broju i složenosti PHP koda, broju upita i opterećenju servera. Ovi parametri mogu se dobiti samo praktičnom primjenom i testiranjem stvorene stranice.
Sada razmotrimo specifične postavke.
Prvo, konfigurirat ćemo bilježenje informacija o skriptama koje se sporo izvršavaju. Ove informacije bit će korisne u razjašnjavanju razloga za kašnjenja na stranici. Prvo, postavit ćemo vremenski prag, nakon kojeg će se izvršavanje skripte smatrati sporim.
request_slowlog_timeout = 10s
Vremenske jedinice mogu biti navedene u sekundama (s), minutama (m), satima (h) ili danima (d). Naveli smo vrijeme od 10 sekundi.
Sada ćemo također navesti ime datoteke kamo će se informacije slati.
slowlog = /var/log/slowphp.log
Sada se ova datoteka može proučavati za proučavanje «sporih» skripti.
Ako želite pokrenuti skripte u izoliranom okruženju ili chroot okruženju. Ova opcija se obično koristi u sigurnosne svrhe. Morate postaviti opciju chroot da biste omogućili ovu značajku.
Prilikom postavljanja ove opcije, trebate zapamtiti da će to povlačiti promjene u obradi PHP skripti.
Sve putanje datoteka sada će se gledati relativno u odnosu na navedeni direktorij, i PHP skripte neće moći pristupiti socketima smještenima izvan navedenog direktorija.
Za održavanje više stranica, možda će vam trebati dodati dodatne bazene. To vam omogućuje konfiguriranje različitih postavki za svaku stranicu pojedinačno. Za stvaranje dodatnog bazena, kopirajte našu datoteku
/etc/php5/fpm/pool.d/www.conf
pod novim imenom, na primjer
/etc/php5/fpm/pool.d/www2.conf
Otvorite novu datoteku i promijenite ime bazena. Da biste to učinili, na vrhu datoteke, promijenite redak [www] u [www2].
I promijenite redak:
listen = /var/run/php5-fpm.sock
na
listen = /var/run/www2.sock
U slučaju da želimo da rukovatelj sluša na paru ip:port, direktiva listen će izgledati kao
listen = 127.0.0.1:9000
Zatim ponovno pokrenemo uslugu
/etc/init. d/php5-fpm restart