Kufunga php fpm nginx. Kusakinisha kidhibiti kifurushi cha aptitude, kusasisha faharasa na vifurushi. Weka ulinzi dhidi ya kukatizwa kwa rafu

Nginx ni mojawapo ya seva za wavuti maarufu zaidi duniani, zinazotumiwa kupangisha baadhi ya tovuti kubwa na zenye shughuli nyingi zaidi kwenye Mtandao. Nginx haina rasilimali nyingi sana kuliko Apache; inaweza kutumika kama seva ya wavuti na kama wakala wa nyuma.

Katika makala hii, tutapitia mchakato wa kusakinisha Nginx kwenye seva yako ya Ubuntu 16.04.

Kabla ya ufungaji

Kabla ya kuanza kufuata hatua katika kifungu hiki, hakikisha kuwa wewe ni mtumiaji wa kawaida asiye na mizizi na marupurupu ya sudo. Unaweza kujua jinsi ya kusanidi mtumiaji kama huyo kwenye seva yako kutoka.

Baada ya kuunda mtumiaji kama huyo, ingia kwenye seva kwa kutumia jina lake la mtumiaji na nywila. Sasa uko tayari kufuata hatua zilizoelezwa katika makala hii.

Hatua ya 1: Kufunga Seva ya Wavuti ya Nginx

Nginx inapatikana katika hazina za kawaida za Ubuntu, kwa hivyo kuisanikisha ni rahisi sana.

Kwa kuwa tutakuwa tukitumia apt kwa mara ya kwanza katika kipindi hiki, tutaanza kwa kusasisha orodha ya kifurushi cha ndani. Ifuatayo, wacha tusakinishe seva:

  • sudo apt-kupata sasisho
  • sudo apt-get install nginx

Kutokana na haya apt-get amri itasakinisha Nginx na vifurushi vingine muhimu kwa uendeshaji wake kwenye seva yako.

Hatua ya 2: Kuweka firewall

Kabla ya kuanza kujaribu Nginx, tunahitaji kusanidi ngome yetu ili kuruhusu ufikiaji wa huduma. Wakati wa usakinishaji, Nginx hujiandikisha na huduma ya ufw firewall. Kwa hiyo, kuanzisha upatikanaji ni rahisi sana.

Ili kuonyesha mipangilio ya ufikiaji kwa programu zilizosajiliwa katika ufw, ingiza amri:

  • orodha ya programu ya sudo ufw

Kama matokeo ya kutekeleza amri hii, orodha ya wasifu wa programu itaonyeshwa:

Programu zinazopatikana: Nginx Kamili ya Nginx HTTP Nginx HTTPS OpenSSH

Kama unavyoona kutoka kwa pato hili, Nginx ina profaili tatu zilizosanidiwa:

  • Nginx Imejaa: Wasifu huu hufungua milango 80 (trafiki ya wavuti isiyo na fiche) na 443 (trafiki imesimbwa kwa njia fiche kwa kutumia TLS/SSL).
  • Nginx HTTP: Wasifu huu hufungua lango 80 pekee (trafiki ya wavuti isiyo na kifiche).
  • Nginx HTTPS: Wasifu huu hufungua lango 443 pekee (trafiki imesimbwa kwa njia fiche kwa kutumia TLS/SSL).

Inapendekezwa kusanidi ufw ili kuruhusu trafiki tu ambayo ungependa kuruhusu kuingia kwa uwazi. Kwa kuwa bado hatujasanidi SSL kwa seva yetu, katika nakala hii tutaruhusu tu trafiki kwenye bandari 80.

Unaweza kufanya hivyo kwa amri ifuatayo:

  • sudo ufw ruhusu "Nginx HTTP"

Unaweza kuangalia mabadiliko kwa kuingiza amri:

  • hali ya sudo ufw

Matokeo yake yanapaswa kuwa matokeo sawa na yafuatayo:

Hali: amilifu hadi Kitendo Kutoka -- ------ ---- OpenSSH RUHUSU Mahali Popote Nginx HTTP RUHUSU Mahali Popote OpenSSH (v6) RUHUSU Popote (v6) Nginx HTTP (v6) RUHUSU Popote (v6)

Hatua ya 3: Kuangalia seva ya wavuti

Baada ya mchakato kukamilika Ufungaji wa Ubuntu 16.04 itazindua Nginx moja kwa moja. Kwa hivyo, seva ya wavuti inapaswa kuwa tayari inafanya kazi.

Tunaweza kuthibitisha hili kwa kutekeleza amri ifuatayo:

  • hali ya systemctl nginx
● nginx.service - Utendaji wa juu seva ya wavuti na kinyume seva ya wakala Imepakiwa: imepakiwa (/lib/systemd/system/nginx.service; imewashwa; uwekaji awali wa muuzaji: umewezeshwa) Inatumika: inafanya kazi (inaendeshwa) tangu Mon 2016-04-18 16:14:00 EDT; 4min 2s ago Main PID: 12857 (nginx) CGroup: /system.slice/nginx.service ├─12857 nginx: master process /usr/sbin/nginx -g daemon imewashwa; master_process kwenye └─12858 nginx: mchakato wa mfanyakazi

Kama unaweza kuona kutoka kwa pato hapo juu, huduma iko juu na inafanya kazi. Hata hivyo, hebu tuhakikishe kuwa inafanya kazi kikamilifu kwa kuomba ukurasa wa wavuti.

Ili kufanya hivyo, tunaweza kuangalia ikiwa ukurasa wa wavuti wa Nginx unaonyeshwa, unapatikana kwa default wakati wa kuingia jina la kikoa au anwani ya IP ya seva.

Ikiwa hutaki kusanidi jina la kikoa kwa seva yako, unaweza kutumia anwani ya IP ya umma ya seva yako. Ikiwa hujui anwani ya IP ya umma ya seva, unaweza kupata anwani hii ya IP kwa amri ifuatayo:

  • ip addr onyesha eth0 | grep inet | awk "( chapisha $2; )" | sed "s/\/.*$//"

Matokeo yake, anwani kadhaa za IP zitaonyeshwa. Jaribu kubandika kila moja kwenye kivinjari chako.

Njia nyingine ya kuamua anwani yako ya IP ni kuangalia jinsi seva yako inavyoonekana kutoka kwa Mtandao:

  • sudo apt-get install curl
  • curl -4 icanhazip.com

Andika anwani ya IP iliyopatikana au jina la kikoa kwenye kivinjari chako cha wavuti. Unapaswa kuona ukurasa chaguo-msingi wa Nginx.

http:// domain_name_or_IP_anwani

Ukiona ukurasa kama huu kwenye kivinjari chako, umesakinisha Nginx kwa ufanisi.

Hatua ya 4: Dhibiti Mchakato wa Nginx

Sasa kwa kuwa Nginx imesakinishwa na tunauhakika kuwa inafanya kazi, wacha tuangalie baadhi amri za msingi kusimamia seva yetu ya wavuti.

Ili kusimamisha seva ya wavuti tumia amri:

  • sudo systemctl acha nginx

Ili kuanzisha seva ya wavuti iliyosimamishwa, chapa:

  • sudo systemctl anza nginx

Unaweza kutumia amri ifuatayo kuanzisha tena seva ya wavuti:

  • sudo systemctl anzisha tena nginx

Ukifanya mabadiliko kwenye usanidi wa Nginx, unaweza kuianzisha tena bila kufunga miunganisho. Ili kufanya hivyo, unaweza kutumia amri ifuatayo:

  • sudo systemctl pakia tena nginx

Kwa chaguo-msingi Nginx imesanidiwa kuwa kuanza moja kwa moja wakati wa kuanzisha seva. Ikiwa hauitaji tabia hii ya seva ya wavuti, unaweza kuizima kwa amri ifuatayo:

  • sudo systemctl lemaza nginx

Kwa Anzisha tena kuanza Nginx wakati wa kuanzisha seva, ingiza:

  • sudo systemctl wezesha nginx

Hatua ya 5: Faili na Saraka Muhimu za Nginx

Sasa kwa kuwa tunajua amri za msingi za kusimamia seva ya wavuti, hebu tuangalie saraka kuu na faili.

Maudhui

  • /var/www/html: Yaliyomo kwenye wavuti, ambayo kwa chaguo-msingi huwa na ukurasa wa jaribio wa Nginx tulioona hapo awali, iko kwenye saraka ya /var/www/html. Njia ya saraka hii inaweza kusanidiwa katika faili Mipangilio ya Nginx.

Usanidi wa seva

  • /etc/nginx: saraka ya usanidi wa Nginx. Faili zote za usanidi wa Nginx ziko kwenye saraka hii.
  • /etc/nginx/nginx.conf: Faili kuu ya usanidi ya Nginx. Faili hii inatumika kufanya mabadiliko kwenye usanidi wa kimataifa wa Nginx.
  • /etc/nginx/sites-available: Saraka ambapo "vizuizi vya seva" huhifadhiwa kwa kila tovuti (vizuizi vya seva ni takriban sawa na seva pangishi kwenye Apache). Nginx haitatumia faili za usanidi katika saraka hii isipokuwa ziwe na viungo vinavyolingana kwenye saraka iliyowezeshwa na tovuti (tazama hapa chini). Kwa kawaida, mipangilio yote ya kuzuia seva inafanywa katika saraka hii, na kisha tovuti imeanzishwa kwa kuunda kiungo kwenye saraka nyingine.
  • /etc/nginx/sites-enabled/ : Saraka hii huhifadhi vizuizi vya seva kwa tovuti zilizowezeshwa. Hii kwa kawaida hupatikana kwa kuunda viungo vya wasifu wa usanidi wa tovuti ulio katika saraka inayopatikana ya tovuti.
  • /etc/nginx/vijisehemu: Saraka hii huhifadhi vijisehemu vya usanidi ambavyo vinaweza kutumika kusanidi tovuti zozote. Vijisehemu vya usanidi ambavyo vinaweza kutumika katika faili nyingi za usanidi ni viwakilishi bora vya kuunda vijisehemu hivi.

Kumbukumbu za seva

  • /var/log/nginx/access.log: Kila ombi kwa seva yako ya wavuti imeandikwa kwa faili hii ya kumbukumbu, isipokuwa ikiwa imeainishwa vinginevyo na mipangilio ya Nginx.
  • /var/log/nginx/error.log: Hitilafu zozote za Nginx zitawekwa kwenye faili hii.

Hitimisho

Kwa kuwa sasa una seva ya wavuti iliyosakinishwa na kusanidiwa, unaweza kuchagua ni maudhui gani ya kuwahudumia watumiaji na ni teknolojia gani nyingine unaweza kutumia pamoja na seva ya wavuti.

Hujambo, mtumiaji mpendwa wa Habrahabr. Hotuba yangu itakuwa juu ya jinsi ya kuandaa msingi wa miradi ya ndani ya ukuzaji wa wavuti kwenye chumba cha upasuaji Mfumo wa Ubuntu 16.04.1 LTS.

Katika makala hii ningependa kufuta na kufafanua matatizo iwezekanavyo kuhusiana na usakinishaji na usanidi wa programu ambayo inahitajika kwa maendeleo ya mtandao wa kisasa, ambayo watengenezaji wa novice wanaweza kukutana na sio tu.

Teknolojia ambazo zitatumika katika makala: nginx, php-fpm.

Kabla ya kuanza hadithi, nataka kutambua kwamba nilifanya vitendo hivi vyote kwenye mfumo "wazi".
Nitakuwa nikifanya kazi na msimamizi wa kifurushi cha aptitude. Ninapendekeza pia kusasisha faharisi ya kifurushi na vifurushi wenyewe kabla ya kusakinisha programu. Katika makala hii tutafanya hatua hizi pamoja.

Nenda!

Inasakinisha kidhibiti cha kifurushi uwezo, faharasa na masasisho ya kifurushi

Sakinisha:

Sudo apt install aptitude
Tunasasisha index.

Sasisho la uwezo wa Sudo
Tunasasisha vifurushi (amri itasasisha vifurushi vyote ambavyo kuna matoleo mapya; ikiwa vifurushi vinahitaji kuondolewa, itafanywa).

Uboreshaji kamili wa Sudo aptitude

Ufungaji na usanidi nginx(toleo>= 1.10.0)

Sisi kufunga.

Sudo aptitude kufunga nginx
Hebu tuzindue.

Sudo service nginx kuanza
Tunaangalia toleo ili kuhakikisha kuwa hatujasakinisha ya zamani, yaani, chini ya 1.10.0.

Ufungaji na uzinduzi umekamilika, sasa hebu tuende kwenye saraka ambapo nginx yetu imewekwa na tuangalie muundo wake. Saraka ya nginx iko kwenye njia hii:

Cd /etc/nginx/
Unaweza kutazama yaliyomo kwenye saraka na ls amri; na -la bendera itakuwa rahisi zaidi kutazama yaliyomo kwenye saraka (kwa kweli, amri hii iliyo na bendera maalum inaweza kuelezewa kwa undani zaidi na kwa usahihi zaidi, lakini tuna mada tofauti leo).

Ls-la
Tunavutiwa na wakati huu saraka mbili unazoona kwenye picha ya skrini. Hizi ndizo saraka zinazopatikana na tovuti zinazowezeshwa.

Wacha tuende kwenye saraka inayopatikana ya tovuti na tuanze kusanidi mwenyeji wetu wa kawaida (tovuti).

Cd /etc/nginx/sites-available
Kabla ya kuanza kuunda faili ya usanidi, wacha tuangalie tulicho nacho katalogi hii. Katika kesi yangu, saraka sio tupu, tayari ina faili za usanidi, nilizifuta ili nisikupotoshe.

Upungufu muhimu

Katika kesi ya kusakinisha nginx "kutoka mwanzo", kwa usahihi "kutoka mwanzo", tangu unapoondoa nginx na amri.
sudo apt-get remove nginx au sudo apt ondoa faili za usanidi za nginx kubaki na ikiwa hauelewi ghafla kwa nini nginx haifanyi kazi na unataka kuiweka tena (kawaida wanaoanza huamua hii. Watumiaji wa Linux), basi hata baada ya kusanidi tena haitafanya kazi kwa usahihi, kwa sababu faili za usanidi wa zamani (hazijafutwa baada ya kuondolewa kwa amri ya kuondoa) zina mipangilio isiyo sahihi, italazimika kufutwa au kusanidiwa kwa usahihi, basi nginx itafanya kazi.

Ninapendekeza kufuta kwa amri sudo apt-get purge nginx au sudo apt purge nginx. Ikiwa unatumia meneja wa kifurushi cha aptitude basi amri ya sudo aptitude purge nginx huondoa kifurushi kizima na utegemezi wote na faili za usanidi.


Kutakuwa na faili moja katika saraka hii kwa chaguo-msingi, inayoitwa chaguo-msingi. Itakuwa na faili ya usanidi na mfano, na maoni, unaweza kuisoma kwa burudani yako, au unaweza kuifuta kabisa (unaweza kuwasiliana kila wakati nyaraka rasmi).

Ls-la

Wacha tuunda faili yetu ya usanidi, ambayo italingana na jina la kikoa la tovuti yetu ya ndani (au halisi, ikiwa tayari unajua jina lake). Hii ni rahisi, katika siku zijazo, wakati kuna faili nyingi za usanidi, itakuokoa kutokana na kuchanganyikiwa ndani yao. Kwangu mimi faili hii itaitwa project.local.

Sudo touch project.local
Hebu tuone kilichotokea.

Sasa hebu tuifungue kwenye mhariri, nitaifungua kwa nano.

Sudo nano project.local
Tunaona kwamba ni tupu. Sasa hebu tuendelee kuunda faili yetu. Unahitaji kuleta usanidi kwa fomu kama ilivyoandikwa hapa chini. Nitaelezea tu maagizo muhimu ya faili hii, sitaelezea iliyobaki, kwani hii sio muhimu kwa sasa, baada ya yote, tuna mada. mipangilio ya msingi. Mipangilio hii ya "slide" inatosha kuendeleza miradi ndani ya nchi, sio ndogo tu, bali pia kubwa kabisa. Katika vifungu vifuatavyo nitaelezea kando kila moja ya maagizo yaliyotumiwa (hiyo ndiyo mistari inayoitwa, kwa mfano server_name) ya faili hii.

Tazama maoni moja kwa moja kwenye faili ya usanidi.

Seva ( sikiliza 80; # bandari inayosikiliza nginx server_name project.local; # jina la kikoa linalohusiana na mzizi wa sasa wa mwenyeji pepe /home/stavanger/code/project.local; # saraka ambayo mradi unapatikana, njia ya kuingia index index. php; # add_header Fikia-Dhibiti-Ruhusu-Asili *; # tumikia faili tuli mahali pa moja kwa moja ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ ( access_log off; muda wake unaisha kwa upeo wa juu zaidi ; log_not_found off ; ) eneo / ( # add_header Access-Control-Allow-Origin *; try_files $uri $uri/ /index.php?$query_string; ) eneo ~* \.php$ ( try_files $uri = 404; fastcgi_split_path_info ^ (.+ \.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; # unganisha soketi ya php-fpm fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name ; jumuisha fastcgi_params; ) eneo ~ /\.ht ( kataa yote; ) )
Hifadhi faili. Sasa tunahitaji kuangalia ikiwa kuna makosa yoyote ndani yake. Tunaweza kufanya hivi kama timu.

Sudo nginx -t
Ikiwa tunaona habari kama hiyo kwenye picha ya skrini, basi kila kitu ni sawa na tunaweza kuendelea kusanidi. Ukipata makosa yoyote, inafaa kuangalia mara mbili faili yako ya usanidi.

Sasa tunahitaji kuamsha faili ya usanidi, katika saraka ya /etc/nginx/sites-enabled/ tunahitaji kuunda ulinganifu (kiungo cha ishara). Ikiwa umesakinisha nginx kutoka mwanzo, basi katika saraka hii kuna ulinganifu kwa faili chaguo-msingi, ambayo ilijadiliwa hapo juu; unaweza kuifuta ikiwa hauitaji. Nenda kwenye saraka unayotaka.

Cd /etc/nginx/sites-enabled/
Sasa tuko ndani saraka inayotaka. Wacha tuunde ulinganifu wetu. Ili kuunda, tumia amri ya ln na -s bendera, kisha tutaonyesha njia ya usanidi wetu wa project.local.

Sudo ln -s /etc/nginx/sites-available/project.local
Wacha tuangalie ulinganifu wetu iliyoundwa.

Ili kuhakikisha kwamba bado tunafanya kila kitu kwa usahihi, hebu tuendesha amri tena.

Faili wenyeji

Faili hii iko katika /etc/hosts. Uwepo wa maingizo ndani yake hukuruhusu kuendesha nginx kwa kutumia localhost kama kikoa. Katika faili hii unaweza kugawa majina mbadala, kwa mfano kwa mradi wetu project.local, tutaweka kikoa project.local.

Fungua faili kwenye kihariri cha nano.

Sudo nano /etc/hosts
Utakuwa na maelezo mengine katika faili hii, ipuuze tu. Unahitaji tu kuongeza mstari kama kwenye picha yangu ya skrini.

Ufungaji php-fpm (>=7.0)

sudo aptitude kufunga php-fpm
Kuangalia toleo lililowekwa, ikiwa tu, ingawa katika Ubuntu 16.04.1 toleo la 7.0 liko kwenye hazina.

Php-fpm7.0 -v

Hebu tuhakikishe kuwa kila kitu kiko sawa. Wacha tuanze php-fpm.

Huduma ya Sudo php7.0-fpm kuanza
Ukihariri usanidi, usisahau kuanzisha upya daemoni. Inafanya hivyo. Lakini hatutahitaji.

Huduma ya Sudo php7.0-fpm inaanza tena
Hii ni ufungaji na usanidi wa php-fpm kumaliza. Kweli, hiyo ndiyo yote. Huu sio uchawi; njia ya soketi ya php-fpm ilikuwa tayari imeainishwa kwenye faili ya usanidi. Bila shaka unaweza kuhitaji baadhi php viendelezi kwa maendeleo ya miradi ya kibinafsi, lakini unaweza kusambaza kama inavyotakiwa.

Sasa wacha tuende kwenye saraka na mradi wetu, ninayo kwenye njia hii.

Cd /home/stavanger/code/project.local
Wacha tuende kwenye saraka hapo juu na tufanye ruhusa 777 (hiyo ni, tutafanya haki kamili saraka na mradi wetu project.local). Hii itatuokoa kutokana na matatizo yasiyo ya lazima katika siku zijazo.

Cd .. sudo chmod -R 777 project.local
Hii inakamilisha usanidi wa programu, hebu tuunde faili ya majaribio katika saraka yetu ya kazi project.local na uhakikishe kuwa kila kitu kinafanya kazi. Nitaunda faili ya index.php na maudhui haya.

Tunaenda kwenye kivinjari na kuona kwamba kila kitu kinatufanyia kazi nzuri! PHP mkalimani ikiwa ni pamoja na.

Kwa heshima na wasomaji, Stavanger.

Mchanganyiko wa nginx, php-fpm, php-apc inakuwezesha kuharakisha tovuti wakati mpangilio sahihi ikilinganishwa na apache na kupunguza mzigo kwenye seva. Hii ni kweli hasa wakati wa kusanidi tovuti zilizo na idadi kubwa ya kutembelewa. Mchanganyiko huu wa vifaa hivi karibuni umezidi kuwa maarufu, lakini usanidi ni rahisi sana na wa haraka. Wacha tuangalie mfano wa usanidi kwenye Debian. Wacha tusanidi nginx na kashe + php-fpm + php-apc.

Kwanza, hebu tukumbuke vipengele hivi ni nini. Nginx ni seva ya wavuti ya haraka na inayoweza kunyumbulika ambayo pia inaruhusu kuweka akiba. Php-fpm ni Meneja wa Mchakato wa PHP FastCGI, meneja wa mchakato wa FastCGI wa PHP. FastCGI ni itifaki ya seva ya mteja ya binary ambayo inaruhusu maombi kuchakatwa kwa nyuzi nyingi, kinyume na CGI ya nyuzi moja. Na php-apc ni Cache Mbadala ya PHP, mfumo wa bure wa kuweka kumbukumbu ya PHP bytecode, ambayo inaweza kuongeza kasi ya utekelezaji wa PHP, wakati wa kutumia nambari mara kwa mara, bila shaka. Kwa hivyo, kuongeza kasi lazima iwe katika maeneo kadhaa. Ya kwanza ni cache ya nginx, ya pili ni utoaji wa kasi wa tuli kwa kutumia nginx ikilinganishwa na apache, ya tatu ni caching ya PHP bytecode, ya nne ni utekelezaji wa kasi wa msimbo wa php kwa kutumia php-fpm ikilinganishwa na mchanganyiko wa apache + mod_php5 .

Kufunga vifurushi

Sakinisha vifurushi:

Apt-get install nginx php5-fpm php-apc php5-mysql

Kila kitu unachohitaji kitasakinishwa kulingana na utegemezi

Kuanzisha nginx

Baada ya kusakinisha vifurushi, unahitaji kusanidi mipangilio ya nginx. Tunaunda faili ya mipangilio ya nginx ya tovuti yetu, tuiite "tovuti"

Gusa /etc/nginx/sites-available/site

Wacha tuandike yafuatayo kwa faili:

Seva ( # Sikiliza bandari 80 kupitia IPv4 sikiliza 0.0.0.0:80; # Jina la tovuti (jina la kikoa) tovuti ya jina la seva; # index index index.php; # Saraka ya mizizi ya mzizi wa tovuti /var/www/site; # Kataa ufikiaji wa faili .htaccess na .htpasswd eneo ~ /\.ht ( kataa yote; ) # Mahali tulivu ya kurudi ~ \.(jpg|jpeg|ico|gif|css)( # Zima rekodi kuhusu kutumikia faili tuli # Hii itasaidia kupunguza idadi ya shughuli za uandishi kwenye diski access_log off; muda wake unaisha kwa upeo wa juu; root /var/www/site; ) eneo ~ \.php ( jumuisha /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php-fpm-site; fastcgi_index index.php; # Washa akiba ya nginx, unganisha proksi_cache ya kache ya kache ya kache; # Muda wa kuhifadhi kurasa kwenye akiba kutegemea # na majibu ya seva. 200 na 302 - 60 dakika, 404 - 1 dakika proksi_cache_valid 200 302 60m; proxy_cache_valid 404 1m; # Saraka ya hifadhi ya muda proxy_temp_path /var/cache/nginx/tmp; ) )

Ln -s /etc/nginx/sites-available/tovuti /etc/nginx/sites-enabled

Unahitaji kuongeza kache ambayo tayari tumeandika kwa matumizi kwenye faili ya /etc/nginx/nginx.conf. Mwanzoni mwa sehemu ya http, ingiza mstari ufuatao:

Njia_ya_kache_ya_wakala /var/cache/nginx levels=1:2 keys_zone=cache-yangu:8m max_size=128m inaktiv=600m;

Mstari huu unamaanisha yafuatayo: saraka ya kuhifadhi kache ni /var/cache/nginx. viwango - viwango vya uakibishaji 1:2, hivi ni viwango vya uwekaji wa saraka kwenye saraka ya kuhifadhi kache. Kigezo cha keys_zone huamua jina na ukubwa wa eneo la kache (kunaweza kuwa na kanda kadhaa). Eneo la megabyte 1 linaweza kuhifadhi funguo 8,000. Kigezo cha max_size huamua ukubwa wa juu zaidi wa akiba; akiba inapofikia ukubwa huu, faili za zamani kutoka kwa akiba zitafutwa ili kuongeza nafasi. Ikiwa data haijaombwa kutoka kwa cache ndani ya muda uliowekwa katika parameter isiyo na kazi (kwa upande wetu, dakika 600), basi itaondolewa kwenye cache. Ikiwa kigezo kisichotumika hakijabainishwa, muda chaguo-msingi ni dakika 10.

Kuanzisha php-fpm

Mipangilio ya php-fpm iko kwenye saraka /etc/php5/fpm. Saraka hii ina saraka ndogo ya pool.d, ambayo huhifadhi faili za kufanya kazi na tovuti. Tunahitaji kuunda faili kwa tovuti yetu. Hebu tuite site.conf

Gusa /etc/php5/fpm/pool.d/site.conf

Katika faili hii tunaandika yafuatayo:

# Faili ya tundu ya kubadilishana data na nginx listen = /var/run/php-fpm-site.sock # Idadi ya juu zaidi ya miunganisho inayopatikana kwenye mfumo listen.backlog = -1 # Mmiliki wa soketi na kikundi cha umiliki listen.owner = www-data sikiliza .group = www-data # Ruhusa zimewekwa wakati wa kuunda soketi listen.mode = 660 user = www-data group = www-data # Idadi ya michakato itadhibitiwa kwa nguvu pm = dynamic pm.max_children = 30 pm.start_servers = 2 pm.min_spare_servers = 2 pm.max_spare_servers = 5 pm.max_requests = 50 env = tovuti env = /usr/local/bin:/usr/bin:/bin env = /tmp env = /tmp env = /tmp

Sasa unaweza kuendesha php-fpm na amri

Huduma php5-fpm kuanza

Na baada ya hapo pia anza nginx

Huduma nginx kuanza

Wacha tuunde saraka ya /var/www/site ikiwa bado haijaundwa:

Mkdir -p /var/www/site

Na katika saraka hii tutaunda faili /var/www/site/index.php na yaliyomo yafuatayo:

Sasa hebu tufungue seva yetu kwenye kivinjari: jina la kikoa. Kwa mfano, "http://site". Ukurasa ulio na maelezo ya seva unapaswa kufunguliwa. Moduli zote zinazotumiwa pia zimeorodheshwa hapo. Moduli ya apc lazima iwepo katika orodha hii, na hali yake lazima "Imewezeshwa".

Kuanzisha php-apc

Faili ya usanidi wa apc iko katika njia ifuatayo: /etc/php/fpm/conf.d/20-apc.ini

Kimsingi, moduli hii inaweza tayari kutumika na mipangilio ya msingi, lakini ikiwa unataka kuisanidi vizuri zaidi, basi unaweza kuona maelezo ya vigezo vyote.

Kwa ujumla, usanidi uko tayari, unaweza kupeleka tovuti na kusanidi vipengele hivi vyote kwa undani zaidi, kulingana na jinsi tovuti imeundwa na ni takwimu gani zitakusanywa wakati wa uendeshaji wake.

Mchanganyiko wa kawaida wa tovuti zinazoendesha zilizoandikwa katika PHP ni apache + mod_php. Kwa kuwa mod_php inahitaji prefork_mpm kwa chaguo-msingi, apache inahitaji kuchakata kila moja uunganisho tofauti huunda mchakato tofauti, ambayo sio kiuchumi sana katika suala la matumizi ya RAM.

Kisha akatokea nginx- seva ya wakala nyepesi na wakaanza kuiweka mbele ya apache ili itoe data tuli na isisumbue apache na vitapeli. Hatua inayofuata ya kimantiki ni kukatwa kwa mpatanishi katika mtu wa apache kutoka kwa nginx - apache - php mnyororo, ambayo ndio tutafanya.

php-fpm hukuruhusu kupeana php ili kuepusha gharama za kuzindua michakato (ambayo CGI inakabiliwa nayo), ambayo FastCGI inaweza pia kufanya. Lakini php-fpm pia hutoa huduma zingine muhimu:

  • kuzindua mabwawa ya kushughulikia kwa niaba ya watumiaji maalum,
  • udhibiti wa nguvu wa idadi ya washikaji wanaoendesha,
  • uwezo wa kuanza tena vidhibiti ikiwa kuna kitu kibaya nao,
  • kukata maswali polepole sawa na mysql,
  • kurasa za hali na ping,
  • nyingine.

Kufunga php-fpm kwenye Debian ni rahisi sana:

Uwezo wa kusakinisha php5-fpm

Baada ya hapo unaweza kuhariri faili mbili za usanidi, ambazo zimeandikwa vizuri ndani yao wenyewe, lakini idadi kubwa ya maneno pia inaweza kufanya iwe vigumu kupata kiini nyuma yao. Ya kwanza (/etc/php5/fpm/php-fpm.conf) hukuruhusu kuweka Mipangilio ya jumla:

ni pamoja na- kutoka kwa saraka gani kujumuisha usanidi wa ziada,
pid- njia ya faili na kitambulisho cha mchakato,
hitilafu_logi- njia ya logi ya makosa,
syslog.facility- hukuruhusu kutaja logi gani ya kuandika,
syslog.ident- ni jina gani la kuweka alama kwenye logi ya mfumo,
kiwango_cha_logi- kiwango cha logi kutoka kwa tahadhari hadi utatuzi,

Kimsingi, vigezo hapo juu vinaweza kuachwa kwa chaguo-msingi ikiwa utatuzi hauhitajiki, kwa mfano. Vigezo zaidi vya kuvutia zaidi:

dharura_kuanzisha_kizingiti- hukuruhusu kutaja ni idadi gani ya kuondoka kwa mchakato na ishara za SIGSEGV au SIGBUS ndani ya muda maalum ni muhimu kuanza tena php-fpm kwa upole,
muda_wa_kuanzisha_wa_dharura- muda maalum.
mchakato_control_timeout- Wazao wanapaswa kusubiri kwa muda gani kwa bwana kujibu ishara,
mchakato.max- idadi kubwa ya michakato kwa mabwawa yote,
mchakato.kipaumbele- unaweza kutaja kipaumbele cha mchakato mkuu,
daemonize- kufanya pepo au la. Inaweza kuwa muhimu kwa utatuzi,
rlimit_files- idadi ya maelezo ya faili inayopatikana kwa mchakato mkuu,
rlimit_core- hakujua
matukio.utaratibu- katika linux hakika ni epoll,
systemd_interval- ikiwa OS yako inatumia systemd, basi unaweza kuweka mzunguko wa ripoti juu ya hali ya taratibu. Itakuwa muhimu katika Debian 8.

Usanidi wa pili ni wa msingi wa kusanidi mabwawa na iko katika /etc/php5/fpm/pool.d/www.conf. Katika faili hii unaweza kuweka vigezo zaidi na vyote vimeandikwa vizuri ndani yake. Tutafuta au kubadilisha jina la faili hii na kuunda faili yetu ya usanidi.

Inafurahisha, katika usanidi wa bwawa unaweza kutumia jina la bwawa kama kitofauti $pool. Kwa sababu ya hii, unaweza kuunda faili iliyounganishwa ya usanidi na kuitumia kama msingi wa mabwawa mapya. Jina la bwawa limetolewa katika mabano ya mraba na hutanguliwa na kizuizi cha vigezo. Kwa kweli, mabwawa yote yanaweza kuelezewa katika faili moja, lakini inaonekana kwamba hii haipaswi kufanywa. Mfano wa faili ya usanidi:


kiambishi awali = /var/www/$pool

mtumiaji = $pool
kikundi = $pool

sikiliza = /var/run/phpfpm-$pool.sock
sikiliza.mmiliki = $pool
sikiliza.kundi = www-data
sikiliza.mode = 0660

pm = nguvu
pm.max_children = 16
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4

pm.status_path = /fpmstat

request_slowlog_timeout = sekunde 3
polepole = /var/www/logs/$pool.slow.log

Kama ni lazima:

access.log = /var/www/logs/$pool.access.log

Wacha tuangalie vigezo:

kiambishi awali- inakuwezesha kuweka njia ya msingi, ambayo inaweza kutumika katika vigezo polepole, kusikiliza, chroot, chdir, php_values, php_admin_values.
mtumiaji Na kikundi- inabainisha mmiliki na kikundi cha michakato itakayozinduliwa.
sikiliza- inaonyesha ni tundu gani la kusikiliza. Soketi zote mbili za UNIX na TCP zinatumika. Ikiwa seva ya wavuti na washughulikiaji wa PHP ziko kwenye seva moja, basi ni bora kutumia soketi za UNIX, kwani hii ni uwezekano wa haraka, kwani hakuna kichwa kinachohusiana na pakiti za kutengeneza.
sikiliza.mmiliki, sikiliza.kundi, sikiliza.modi- kuruhusu kuweka vigezo vya upatikanaji wa tundu. Jina linalolingana na jina la bwawa limebainishwa kama mmiliki. Unahitaji kuunda mtumiaji anayefaa na uhakikishe kuwa hakuna ufikiaji wa ssh kwake, bila shaka, isipokuwa unayo mwenyeji wa kawaida. Kikundi kimeainishwa kama www-data kwa sababu nginx inaendesha chini yake na ni muhimu kuipatia ufikiaji wa faili ya soketi. Haki 660 hukuruhusu kuzuia ufikiaji wa wengine.
jioni- inabainisha jinsi meneja wa mchakato atasimamia idadi ya michakato ya mtoto. Inaweza kuwa tuli (idadi thabiti ya michakato), inayobadilika (idadi ya michakato inaweza kutofautiana ndani ya mipaka maalum) na kwa mahitaji (wakati mchakato unapoanzishwa na kuuawa baada ya kuisha kwa muda).
pm.max_children- idadi kubwa ya michakato ya mtoto.
pm.start_servers- ni michakato ngapi inazinduliwa wakati php-fpm inapoanza.
pm.min_spare_servers- idadi ya chini ya michakato ya kusubiri. Ikiwa kuna taratibu chache kuliko thamani ya parameter, basi taratibu mpya zitaundwa.
pm.max_spare_servers- idadi ya juu ya michakato ya kusubiri. Ikiwa kuna michakato zaidi ya kusubiri kuliko thamani ya parameter, basi taratibu za ziada zitauawa.
pm.status_njia- njia ya ukurasa wa hali.
request_slowlog_timeout- wakati ambapo ombi linachukuliwa kuwa polepole.
polepole- njia ya faili ya kumbukumbu ya hoja polepole.
ufikiaji.logi- njia ya faili na logi ya ufikiaji.

Chaguzi zingine za kuvutia:

pm.max_requests- idadi ya maombi yaliyoshughulikiwa baada ya ambayo mchakato unahitaji kuanzishwa upya. Inakuruhusu kupambana na uvujaji wa kumbukumbu.
mchakato.kipaumbele- huweka kipaumbele cha michakato katika bwawa hili.
chroot- inakuwezesha kuunganisha taratibu kwenye saraka maalum. Walakini, njia zote zinazotumiwa na php zitafanya kazi kulingana na saraka maalum, ambayo inahitaji usanidi wa ziada.
usalama.kikomo_viendelezi- inakuwezesha kutaja orodha ya upanuzi wa faili kwa usindikaji na php-fpm.

Unaweza pia kubatilisha anuwai za mazingira, kwa mfano:

na kubatilisha vigezo kutoka kwa php.ini karibu kama inavyofanywa katika .htaccess:

php_flag = imezimwa

Hiyo ni, tunaweza kusanidi nyingi vigezo vya php mmoja mmoja kwa kila bwawa.

Kwa njia, unaweza kutumia php kubadilisha vigezo kwenye saraka ya tovuti.

Utekelezaji

Nyenzo hapo juu zinawasilishwa kwa kiasi fulani chaotically. Hebu jaribu kuangalia mfano maalum rahisi wa utekelezaji.

Tunadhania kwamba nginx na php-fpm tayari zimesakinishwa.

Sasa unahitaji kusanidi mwenyeji wa kawaida katika nginx ili maombi ya faili tuli yachakatwa na nginx yenyewe, na maombi ya hati za php huhamishiwa kwa php-fpm kwa usindikaji. Mfano:

seva (
sikiliza 80;
server_name webpanels.spb.ru;

mzizi /var/www/webpanels;
index index.php;

eneo ~ \.php$ (
try_files $uri =404;

fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

ni pamoja na fastcgi_params;
}

eneo ~ ^/(fpmstat|ping)$ (
ufikiaji_logi imezimwa;
kuruhusu 127.0.0.1;
kuruhusu 123.123.123.123; #ip-yako
kukataa yote;
ni pamoja na fastcgi_params;
fastcgi_param SCRIPT_FILENAME /fpmstat;
fastcgi_pass unix:/var/run/phpfpm-webpanels.sock;
}

eneo ~* ^.+.(html|jpg|jpeg|gif|css|png|js|ico|txt)$ (
inaisha 60d;
}
}

Hii inaonyesha mahali pa kuelekeza maombi upya. Kwa upande wetu, tundu la unix hutumiwa. Pia tunaashiria faili ya index na njia ya faili. Kama unaweza kuona, kila kitu ni rahisi sana. Mfano huu inaweza kutumika kama fomula.

Sasa hebu tusanidi php-fpm. Kwenye Debian, mipangilio ya jumla iko kwenye /etc/php5/fpm/php-fpm.conf faili:

pid = /var/run/php5-fpm.pid
error_log = /var/log/php5-fpm.log
mchakato.kiwango cha juu = 64
mchakato.kipaumbele = -5
rlimit_files = 1024
matukio.utaratibu = epoll
ni pamoja na=/etc/php5/fpm/pool.d/*.conf

Ni wazi kwamba mipangilio hii ni ndogo na mengi yameachwa kwa chaguo-msingi. Lakini inafanya kazi na pengine itashughulikia ziara elfu moja kwa siku bila matatizo yoyote.

Mfano wa kuanzisha bwawa ulitolewa hapo juu. Inafaa kukumbuka kuwa kila bwawa limezinduliwa kutoka mtumiaji binafsi, ambayo inaweza kuundwa kwa amri kama:

Useradd -m -d /var/www/webpanels -s /usr/sbin/nologin -c "tovuti ya paneli" -U paneli za wavuti

Aidha, wanasema hivyo kwa operesheni ya kawaida Vigezo vifuatavyo lazima viwekwe katika /etc/php5/fpm/php.ini faili:

cgi.fix_pathinfo = 0

Pia, kwa sababu ya kuachwa kwa Apache, inaweza kuwa muhimu kubadilisha sheria za mod_rewrite kuwa sheria zinazoeleweka kwa nginx. Hii inaweza kufanywa, kwa mfano, kwa kutumia vibadilishaji vinavyopatikana kwa:

Seva ya wavuti ya Nginx ni mojawapo ya seva za wavuti maarufu na utendaji wa juu sana na usindikaji wa haraka maswali tuli kutoka kwa watumiaji. Kwa usanidi sahihi unaweza kufikia sana utendaji wa juu kutoka kwa seva hii ya wavuti. Nginx ni haraka sana katika kushughulikia faili tuli, iwe hivyo kurasa za html au aina zingine za rasilimali.

Katika moja ya makala zilizopita tayari tuliangalia kuanzisha vigezo vyake kuu, katika makala hii nataka kukaa zaidi juu ya utendaji na maandalizi ya seva ya mtandao kwa matumizi katika hali ya kupambana. Kuhusu Usambazaji wa Linux, basi leo tutazingatia CentOS, mfumo huu mara nyingi hutumiwa kwenye seva na matatizo fulani yanaweza kutokea kwa kuanzisha Nginx. Ifuatayo tutaangalia kusanidi Nginx CentOS, wacha tuzungumze juu ya jinsi ya kuwezesha msaada kamili kwa http2, kasi ya kurasa za google, na usanidi faili kuu ya usanidi.

Hazina rasmi za CentOS ni pamoja na Nginx na kuna uwezekano mkubwa kuwa tayari zimesakinishwa kwenye mfumo wako. Lakini tunataka tovuti ifanye kazi kwa kutumia itifaki ya http2, ambayo inakuwezesha kuhamisha data zote kwa uunganisho mmoja, na hii huongeza utendaji. Kufanya kazi kupitia http2 utahitaji kusanidi Cheti cha SSL, lakini hii tayari imeandikwa katika nakala kupata cheti cha Lets Encrypt Nginx. Lakini si hayo tu. Ili kubadilisha kutoka kwa SSL ya kawaida hadi HTTP2.0, vivinjari vingi sasa vinatumia itifaki ya ALPN, na inatumika tangu OpenSSL 1.02. Wakati kwenye hazina kuna OpenSSL 1.01 tu. Kwa hivyo, tunahitaji kusakinisha toleo la Nginx iliyojengwa na OpenSSL 1.02. Unaweza kutumia Broken Repo kwa hili:

sudo yum -y kufunga yum-utils
# sudo yum-config-manager --add-repo https://brouken.com/brouken.repo

Ikiwa unatumia hazina ya EPEL, basi unahitaji kuashiria kuwa hauitaji kuchukua Nginx kutoka kwake:

sudo yum-config-manager --save --setopt=epel.exclude=nginx*;

Sasa ili kusakinisha toleo sahihi la Nginx, chapa tu:

sudo yum kufunga nginx

wengi zaidi toleo la hivi punde Nginx 1.13.2, pamoja na msaada kamili ALPN. Ifuatayo, wacha tuendelee kwenye usanidi.

2. Kuweka Nginx

Hatua ya kwanza ni kuzingatia muundo wa faili ya usanidi. Kwa mtazamo wa kwanza, kila kitu hapa kinaweza kuonekana kuwa cha kutatanisha, lakini kila kitu ni sawa:

chaguzi za kimataifa
matukio ()
http(
seva (
eneo()
}
seva ()
}

Kwanza kuna chaguzi za kimataifa, ambazo huweka vigezo vya msingi vya programu, kwa mfano, ni mtumiaji gani itazinduliwa kama na idadi ya taratibu. Ifuatayo kuna sehemu matukio, ambayo inaelezea jinsi Nginx itajibu kwa miunganisho inayoingia, ikifuatiwa na sehemu http, ambayo inachanganya mipangilio yote kuhusu uendeshaji wa itifaki ya http. Ina sehemu seva, kila sehemu kama hiyo inawajibika kwa kikoa tofauti; sehemu ya seva ina sehemu eneo, ambayo kila moja inawajibika kwa maalum Omba URL, tafadhali kumbuka kuwa sio faili kwenye seva, kama ilivyo kwa Apache, lakini URL ya ombi.

Msingi mipangilio ya kimataifa tutafanya katika /etc/nginx/nginx.conf faili. Ifuatayo, hebu tuangalie ni nini hasa tutabadilisha na ni maadili gani ambayo inashauriwa kuweka. Wacha tuanze na chaguzi za ulimwengu:

  • mtumiaji- mtumiaji ambaye seva itazinduliwa kwa niaba yake lazima awe mmiliki wa saraka na faili za tovuti, na php-fpm lazima iendeshwe kwa niaba yake;
  • michakato_ya_mfanyikazi- idadi ya michakato ya Nginx ambayo itazinduliwa lazima iwekwe sawa na vile una cores, kwa mfano, nina 4;
  • mshikamano_wa_cpu- parameta hii hukuruhusu kugawa kila mchakato kwa msingi tofauti wa processor; weka dhamana kwa kiotomatiki ili programu yenyewe ichague cha kushikamana nayo;
  • worker_rlimit_nofile- idadi kubwa ya faili ambazo programu inaweza kufungua, kwa kila unganisho unahitaji angalau faili mbili na kila mchakato utakuwa na idadi ya miunganisho unayotaja, kwa hivyo formula ni: michakato_ya_mfanyikazi * miunganisho_ya_mfanyikazi * 2, kigezo miunganisho_ya_mfanyikazi Hebu itazame hapa chini;
  • pcre_jit- Wezesha chaguo hili ili kuharakisha usindikaji maneno ya kawaida kutumia mkusanyiko wa JIT;

Katika sehemu ya matukio unapaswa kusanidi vigezo viwili:

  • miunganisho_ya_mfanyikazi- idadi ya viunganisho kwa mchakato mmoja lazima iwe ya kutosha kusindika miunganisho inayoingia. Kwanza, tunahitaji kujua ni wangapi wa viunganisho hivi vinavyoingia, kwa hili tunaangalia takwimu kwenye seva ip_address/nginx_status. Tutaangalia jinsi ya kuiwezesha hapa chini. Katika mstari wa Viunganisho vinavyotumika tunaona idadi ya miunganisho inayotumika kwa seva; tunahitaji pia kuzingatia kwamba viunganisho na php-fpm pia huhesabiwa. Ifuatayo, makini na mashamba yaliyokubaliwa na kubebwa, ya kwanza inaonyesha miunganisho iliyosindika, ya pili - idadi ya wale waliokubaliwa. Thamani lazima ziwe sawa. Ikiwa zinatofautiana, inamaanisha hakuna miunganisho ya kutosha. Tazama mifano, picha ya kwanza ni shida, ya pili ni mpangilio. Kwa usanidi wangu, takwimu bora inaweza kuwa viunganisho 200 (800 kwa jumla, kwa kuzingatia michakato 4):

  • kubali_nyingi- inaruhusu programu kukubali viunganisho kadhaa wakati huo huo, pia huharakisha kazi, wakati kiasi kikubwa miunganisho;
  • kubali_mutex- kuweka thamani ya parameter hii ili kuzima ili taratibu zote kupokea taarifa mara moja kuhusu viunganisho vipya;

Inapendekezwa pia kutumia maagizo ya matumizi ya epoll katika sehemu ya matukio, kwa kuwa hii ndiyo njia bora zaidi ya usindikaji miunganisho inayoingia ya Linux, lakini njia hii hutumiwa kwa chaguo-msingi, kwa hivyo sioni maana ya kuiongeza kwa mikono. Wacha tuangalie vigezo vichache zaidi kutoka kwa sehemu ya http:

  • sendfile- tumia njia ya kutuma data ya sendfile. Njia bora zaidi ya Linux.
  • tcp_nodelay, tcp_nopush- hutuma vichwa na mwili wa ombi katika pakiti moja, hufanya kazi kwa kasi kidogo;
  • keepalive_timeout- kuisha kwa kudumisha muunganisho na mteja, ikiwa huna maandishi ya polepole sana, basi sekunde 10 zitatosha, kuweka thamani kwa muda mrefu iwezekanavyo ili mtumiaji aweze kushikamana na seva;
  • reset_timedout_connection- kuvunja miunganisho baada ya muda kuisha.
  • fungua_cache_ya_faili- habari ya cache kuhusu faili wazi. Kwa mfano, open_file_cache max=200000 inactive=120s; max - idadi ya juu ya faili kwenye kashe, wakati wa kuhifadhi.
  • open_file_cache_valid- wakati unahitaji kuangalia umuhimu wa faili. Kwa mfano: open_file_cache_valid 120s;
  • open_file_cache_min_uses- cache faili tu ambazo zimefunguliwa idadi maalum ya nyakati;
  • open_file_cache_ errors- kumbuka makosa ya kufungua faili.
  • ikiwa_imebadilishwa_tangu- huweka jinsi if-modified-tangu vichwa vitachakatwa. Kwa kichwa hiki, kivinjari kinaweza kupokea jibu la 304 ikiwa ukurasa haujabadilika tangu wakati huo mara ya mwisho kutazamwa. Chaguzi zinazowezekana: usitume - kuzima, tuma ikiwa wakati unalingana haswa - haswa, tuma ikiwa wakati unalingana haswa au zaidi - hapo awali;

Hivi ndivyo usanidi wa nginx conf utaonekana kama:

mtumiaji nginx;
michakato_ya_mfanyikazi 4;
worker_cpu_affinity auto;
mfanyakazi_rlimit_nofile 10000;
pcre_jit juu;

error_log /var/log/nginx/error.log onya;
load_module "modules/ngx_pagespeed.so";

matukio (
multi_kubali juu;
accept_mutex off;
miunganisho_ya_mfanyikazi 1024;
}

sendfile imewashwa;
tcp_nopush imewashwa;
tcp_nodelay imewashwa;

open_file_cache max=200000 inaktiv=s20;
open_file_cache_valid 120s;
open_file_cache_errors zimewashwa;

reset_timedout_connection on;
mteja_mwili_timeout 10;
keepalive_timeout 65;

ni pamoja na /etc/nginx/sites-enabled.*.conf

3. Kuanzisha http2

Sitaelezea kwa undani kusanidi sehemu ya seva, kwa sababu tayari nilifanya hivi katika kifungu cha kusanikisha Nginx kwenye Ubuntu na sina cha kuongeza hapa, Mpangilio wa SSL Hii ni mada pana na pia itajadiliwa katika nakala tofauti. Lakini ili kusanidi http2 unahitaji tayari kuwa na SSL. Ifuatayo, rekebisha tu maagizo ya kusikiliza katika sehemu ya seva yako:

sikiliza 194.67.215.125:443 default_server;

sikiliza 194.67.215.125:443 http2 default_server;

Kwa njia hii rahisi unaweza kuwezesha http2 ikiwa umeisakinisha hapo awali toleo sahihi Nginx.

4. Kuweka PageSpeed

Google Pagespeed ni moduli ya Nginx ambayo hufanya uboreshaji mbalimbali ili kuhakikisha kwamba kurasa zinapakia haraka, seva ya wavuti inaendeshwa kwa ufanisi zaidi, na watumiaji hupata usumbufu mdogo. Hii ni pamoja na caching, optimization nambari ya html, uboreshaji wa picha, javascript kuunganisha Na nambari ya css na mengi zaidi. Haya yote yanafanywa kwa kiwango cha Nginx, kwa hivyo ni bora zaidi kuliko ikiwa ulifanya katika PHP. Lakini kuna drawback moja: moduli huondoa kichwa cha Mwisho kilichobadilishwa.

Ukweli ni kwamba PageSpeed ​​​​huweka mstari mrefu sana wa kache kwa faili zote, na huongeza hashi yake kwa jina la faili. Kwa njia hii, kasi ya upakiaji wa rasilimali ni ya juu zaidi, kwani kivinjari kitaomba faili tu na hashi mpya, na LastModified imeondolewa ili watumiaji waweze kuona mabadiliko ikiwa faili yoyote imebadilishwa. Sasa hebu tuangalie jinsi ya kufunga moduli. Itabidi tuijenge kutoka kwa msimbo wa chanzo.

Sakinisha kwanza zana za kusanyiko, ni muhimu sana, ikiwa hautaisanikisha, basi utapata kosa na hautajua la kufanya:

yum install wget gcc cmake unzip gcc-c++ pcre-devel zlib-devel

Pakua na utoe vyanzo vya Nginx vya toleo lako, kwa mfano 1.13.3:

wget -c https://nginx.org/download/nginx-1.13.3.tar.gz
# tar -xzvf nginx-1.13.3.tar.gz

Kusanidi seva ya nginx haijumuishi kuunganisha na kubadilisha programu kutoka kwa hazina; tunatumia vyanzo hivi kuunda moduli. Pakua na utoe vyanzo vya PageSpeed:

wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
# fungua v1.12.34.2-stable.zip

Pakua na ufungue maktaba ya uboreshaji wa PageSpeed ​​kwenye folda na vyanzo vya moduli:

cd ngx_pagespeed-1.12.34.2-stable/
# wget -c https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
# tar -xvzf 1.12.34.2-x64.tar.gz

Pakua na ufungue vyanzo vya OpenSSL 1.02:

wget -c https://www.openssl.org/source/openssl-1.0.2k.tar.gz -O /opt/lib/$OPENSSL.tar.gz
# lami xvpzf openssl-1.0.2k.tar.gz

Sasa tunahitaji kukusanya moduli. Kwanza, angalia chaguzi ambazo Nginx ya sasa imejengwa:

Sasa twende kwenye folda iliyo na Nginx, badilisha chaguo zote zilizopokelewa, --add-dynamic-module chaguo la PageSpeed, OpenSSL na ujaribu kukusanya:

cd nginx-1.13.3
# ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx .conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx .pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache /nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path= /var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --yenye-http_flv_moduli --yenye-http_gunzip_moduli --yenye-http_gzip_tuli_moduli --yenye-http_mp4_moduli --yenye-http_random_index_moduli --na-http_realip_moduli --yenye-http_salama_link_moduli --yenye-http_s_t_t_t_moduli moduli --na-http_moduli_ndogo --yenye-http_v2_moduli --na-barua --na-barua_ssl_moduli --na-mtiririko --na-mtiririko_moduli_ya_reallip --na-mtiririko_ssl_moduli --na-mtiririko_ssl_preread_module --with-cc-opt="- O2 -g -bomba -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-swichi -m64 -mtune=generic" --with- ld-opt= --with-openssl=$HOME/openssl-1.0.2k --add-dynamic-module=$HOME/ngx_pagespeed-1.12.34.2-stable $(PS_NGX_EXTRA_FLAGS)
# fanya

Ikiwa kila kitu kilifanywa kwa usahihi, basi kwenye pato utapokea moduli ya ngx_pagespeed.so kwenye folda ya obj, unahitaji kuinakili kwenye folda ya /etc/nginx/modules:

cp ngx_pagespeed.so /etc/nginx/modules/ngx_pagespeed.so

Unda folda ya kashe:

mkdir -p /var/ngx_pagespeed_cache
# iliyochaguliwa -R nginx:nginx /var/ngx_pagespeed_cache

Sasa ongeza laini ifuatayo ili kuwezesha moduli katika /etc/nginx/nginx.conf:

load_module "modules/ngx_pagespeed.so";