Konfiguracija PHP-FPM v operacijskem sistemu Linux

Konfiguracija PHP-FPM v operacijskem sistemu Linux

Read 8 minute

Osnovnih nastavitev samega strežnika Ngnix in njegove funkcionalnosti se ne bomo dotaknili, saj smo to storili že v prejšnjem članku. Vendar pa je treba upoštevati nekatere parametre.

Opredelite in določite število obdelovalnikov in število povezav na procesor. V ta namen bomo v datoteki /etc/nginx/nginx.conf določili vrednosti:

worker_processes 1; worker_connections 1024;

Osnovna ideja pri izbiri teh vrednosti je, da je število oskrbovanih odjemalcev enako številu obdelovalcev, pomnoženemu s številom povezav za vsak procesor. V našem primeru je to 1 024 odjemalcev. Da bi se izognili težavam z vhodno-izhodnimi povezavami, upoštevajte pravilo 1 za procesor na procesorsko jedro. Število jeder lahko določite z ukazom:

cat /proc/cpuinfo | grep processor processor : 0

Moj procesor ima eno jedro. Zato je število procesorjev eno. Število povezav lahko dodate glede na potrebe. Ta parameter je v praksi že izbran.

Iz varnostnih razlogov je mogoče aktivirati direktivo

server_tokens off

Iz priročnika: "Dovoljuje ali prepoveduje izdajanje različice Nginx v sporočilih o napakah in v polju "Strežnik" v naslovu odgovora."

Ta direktiva je dodana v razdelek http/server/local v konfiguracijski datoteki.

Določimo velikost podatkov, ki jih posreduje strežnik:

Velikost strežnika: client_max_body_size 20m; client_body_buffer_size 128k;

Ta direktiva je dodana v razdelek http/server/local konfiguracijske datoteke.

Konfiguracija predpomnilnika za statične datoteke. S tem prihranite strežniške vire in pasovno širino. Za statične datoteke onemogočite beleženje in nastavite datum izteka veljavnosti glave na 100 dni.

location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ { access_log off; log_not_found off; expires 360d; }

Za interakcijo s PHP-FPM lahko določite vtičnico Unix. V ta namen moramo v našo konfiguracijsko halo zapisati:

# Predaja skript PHP PHP-FPM lokacija ~* \.php$ { fastcgi_index index.php; fastcgi_pass 127.0.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_NAME $fastcgi_script_name; }

Če pogledamo naprej, morate v nastavitvah PHP-FPM določiti, da bo poslušal IP in vrata, določena v naši konfiguraciji. To storimo z direktivo listening (poslušanje) v konfiguracijski datoteki bazena.

Iz varnostnih razlogov lahko preprečite dostop do skritih datotek.

location ~ /\\. { access_log off; log_not_found off; deny all; }

Samo konfiguracijo PHP-FPM lahko razdelimo na dva koraka: nastavitev globalnih parametrov, ki se izvede v datoteki

/etc/php5/fpm/php-fpm.conf

in konfiguracijo bazena. Konfiguracija bazena je določena v datotekah z imeniki

/etc/php5/fpm/pool.d/

Globalni parametri niso tako zanimivi in si jih lahko preberete v dokumentaciji, vendar bomo obravnavali glavne parametre konfiguracije bazenov.

Vsak bazen je konfiguriran z ločeno datoteko. Če naredite ukaz

ls -l /etc/php5/fpm/pool. d/

bomo videli, da ima sistem že konfiguracijsko datoteko za bazen www. Oglejmo si konfiguracijo v njegovem primeru.

Pomembna točka v konfiguraciji je izbira števila obdelovalnikov, ki se uporabljajo za izvajanje skript PHP. Njihovo število je treba izbrati pametno. Premajhno število obdelovalcev ne bo omogočilo učinkovite in hitre obdelave zahtevkov, preveliko število pa bo izčrpalo vire, ki jih strežnik potrebuje za druga opravila. Število obdelovalcev je treba izbrati ob upoštevanju, da mora tudi ob največjih zahtevah strežniku uporaba njegovih virov ostati v razumnih mejah in ne sme privesti do njegove preobremenitve.

Zdaj si malo oglejmo konfiguracijsko datoteko in določimo naslednje možnosti. Da, v konfiguracijski datoteki so vrstice, ki se začnejo s simbolom ";", komentarji in ne veljajo za direktive.

Določite dinamični način ustvarjanja procesov, tako da bo število začetih procesov PHP-FPM neposredno odvisno od obremenitve strežnika.

pm = dynamic

Določite največje število podrejenih procesov.

pm.max_children = 6

Nato morate določiti število podrejenih procesov, ki se bodo zagnali takoj, ko bo strežnik naložen. Privzeto je ta vrednost 2. Če viri to dopuščajo, jo lahko povečate; nastavimo jo na 3.

pm.start_servers = 3

Določiti morate tudi najmanjše in največje število neaktivnih procesov. Najmanjše število naj bo enako številu procesov, ki tečejo ob zagonu strežnika. Največje število pa določimo na podlagi tega, da ne sme presegati največjega dovoljenega števila podrejenih procesov.

pm.min_spare_servers = 3 pm.max_spare_servers = 5

Te vrednosti so podane za primer in razlago. Vendar se lahko v vsaki konkretni situaciji razlikujejo. Optimalne vrednosti so odvisne od zmogljivosti strežnika in razpoložljivih virov, števila in zapletenosti kode PHP, števila poizvedb in obremenitve strežnika. Te parametre je mogoče pridobiti le s praktično uporabo in testiranjem ustvarjenega spletnega mesta.

Zdaj pa si oglejte posebne nastavitve.

Najprej bomo nastavili beleženje informacij o skriptih, ki se izvajajo počasi. Te informacije bodo koristne pri pojasnjevanju razlogov za zamude na spletnem mestu. Najprej bomo določili časovni prag, po katerem se bo izvajanje skripte štelo za počasno.

request_slowlog_timeout = 10s

Časovne enote lahko določimo v sekundah (s), minutah (m), urah (h) ali dnevih (d). Mi smo določili čas 10 sekund.

Zdaj bomo določili tudi ime datoteke, v katero se bodo pošiljali podatki.

slowlog = /var/log/slowphp.log

Zdaj lahko to datoteko preučimo za preučevanje "počasnih" skript.

Če želite izvajati skripte v izoliranem okolju ali okolju chroot. Ta možnost se običajno uporablja za varnostne namene. Če želite omogočiti to funkcijo, morate nastaviti možnost chroot.

Pri nastavitvi te možnosti ne smete pozabiti, da bo to povzročilo spremembe pri obdelavi skript PHP.

Vse poti do datotek bodo zdaj obravnavane relativno glede na določen imenik, skripte PHP pa ne bodo mogle dostopati do vtičnic, ki se nahajajo zunaj določenega imenika.

Če želite vzdrževati več spletnih mest, boste morda morali dodati dodatne bazene. Tako lahko za vsako spletno mesto posebej konfigurirate različne nastavitve. Če želite ustvariti dodaten bazen, kopirajte našo datoteko

/etc/php5/fpm/pool.d/www.conf

pod novim imenom, na primer

/etc/php5/fpm/pool.d/www2.conf

Odprite novo datoteko in spremenite ime bazena. To storite tako, da na vrhu datoteke vrstico [www] spremenite v [www2].

Nato spremenite vrstico:

listen = /var/run/php5-fpm.sock

na naslovu

listen = /var/run/www2.sock

Če želimo, da bo izvajalec poslušal na paru ip:port, bo direktiva listen videti takole

listen = 127.0.0.1:9000

Nato ponovno zaženemo storitev

/etc/init. d/php5-fpm restart

DedicServerRU