Php fpm nginx quraşdırılması. Qabiliyyət paketi menecerinin quraşdırılması, indeksin və paketlərin yenilənməsi. Yığın pozulmasına qarşı qorunma qurun

Nginx, İnternetdəki ən böyük və ən işlək saytlardan bəzilərini yerləşdirmək üçün istifadə edilən dünyanın ən məşhur veb serverlərindən biridir. Nginx Apache ilə müqayisədə daha az resurs tələb edir; həm veb server, həm də əks proxy kimi istifadə edilə bilər.

Bu yazıda Ubuntu 16.04 serverinizdə Nginx quraşdırma prosesini nəzərdən keçirəcəyik.

Quraşdırmadan əvvəl

Bu məqalədəki addımları yerinə yetirməyə başlamazdan əvvəl, sudo imtiyazları olan adi kök olmayan istifadəçi olduğunuzdan əmin olun. Serverinizdə belə bir istifadəçinin necə qurulacağını öyrənə bilərsiniz.

Belə bir istifadəçi yaratdıqdan sonra onun istifadəçi adı və şifrəsi ilə serverə daxil olun. İndi bu məqalədə təsvir olunan addımları izləməyə hazırsınız.

Addım 1: Nginx Veb Serverinin quraşdırılması

Nginx standart Ubuntu depolarında mövcuddur, ona görə də onu quraşdırmaq olduqca sadədir.

Bu sessiyada apt-dan ilk dəfə istifadə edəcəyimiz üçün yerli paket siyahısını yeniləməyə başlayacağıq. Sonra, serveri quraşdırın:

  • sudo apt-get yeniləməsi
  • sudo apt-get quraşdırma nginx

Bunların nəticəsində apt-get əmrləri Nginx və onun işləməsi üçün lazım olan digər paketləri serverinizdə quraşdıracaq.

Addım 2: Firewall qurmaq

Nginx-i sınaqdan keçirməyə başlamazdan əvvəl xidmətə girişə icazə vermək üçün firewallımızı konfiqurasiya etməliyik. Quraşdırma zamanı Nginx ufw firewall xidməti ilə qeydiyyatdan keçir. Buna görə də, giriş qurmaq olduqca sadədir.

Ufw-də qeydiyyatdan keçmiş proqramlar üçün giriş parametrlərini göstərmək üçün əmri daxil edin:

  • sudo ufw proqram siyahısı

Bu əmrin icrası nəticəsində tətbiq profillərinin siyahısı görünəcək:

Mövcud proqramlar: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

Bu çıxışdan göründüyü kimi, Nginx konfiqurasiya edilmiş üç profilə malikdir:

  • Nginx Tam: Bu profil 80 (sadə, şifrələnməmiş veb trafiki) və 443 (TLS/SSL istifadə edərək şifrələnmiş trafik) portlarını açır.
  • Nginx HTTP: Bu profil yalnız 80 portunu açır (sadə, şifrələnməmiş veb trafiki).
  • Nginx HTTPS: Bu profil yalnız 443 portunu açır (trafik TLS/SSL istifadə edərək şifrələnir).

Ufw-ni yalnız icazə vermək istədiyiniz trafikə icazə vermək üçün konfiqurasiya etmək tövsiyə olunur açıq şəkildə. Hələ serverimiz üçün SSL konfiqurasiya etmədiyimiz üçün bu məqalədə biz yalnız 80-ci portda trafikə icazə verəcəyik.

Bunu aşağıdakı əmrlə edə bilərsiniz:

  • sudo ufw "Nginx HTTP"-yə icazə verir

Dəyişiklikləri əmri daxil etməklə yoxlaya bilərsiniz:

  • sudo ufw statusu

Nəticə aşağıdakı kimi çıxmalıdır:

Vəziyyət: Fəaliyyətə Aktiv -- ------ ---- OpenSSH Hər Yerə İCAZƏ VER Nginx HTTP Hər Yerə İCAZƏ VER OpenSSH (v6) Hər Yerə İCAZƏ VER (v6) Nginx HTTP (v6) Hər Yerə İCAZƏ VER (v6)

Addım 3: Veb serveri yoxlayın

Proses başa çatdıqdan sonra Ubuntu quraşdırmaları 16.04 Nginx-i avtomatik işə salacaq. Buna görə veb server artıq işləməlidir.

Bunu aşağıdakı əmri işlətməklə yoxlaya bilərik:

  • systemctl statusu nginx
● nginx.service - Yüksək performans veb server və tərs proxy server Yükləndi: yükləndi (/lib/systemd/system/nginx.service; aktiv; təchizatçı əvvəlcədən təyini: aktiv) Aktiv: Bazar ertəsi 2016-04-18 16:14:00 EDT tarixindən aktivdir (çalışır); 4 dəqiqə 2 saniyə əvvəl Əsas PID: 12857 (nginx) CQrup: /system.slice/nginx.service ├─12857 nginx: master proses /usr/sbin/nginx -g daemon açıq; └─12858 nginx-də master_process: işçi prosesi

Yuxarıdakı çıxışdan göründüyü kimi, xidmət işləyir və işləyir. Bununla belə, veb səhifə tələb etməklə onun tam işlək olmasına əmin olaq.

Bunu etmək üçün, domen adını və ya server IP ünvanını daxil edərkən standart olaraq mövcud olan Nginx veb səhifəsinin göstərildiyini yoxlaya bilərik.

Əgər serveriniz üçün domen adını konfiqurasiya etmək istəmirsinizsə, serverinizin ictimai IP ünvanından istifadə edə bilərsiniz. Əgər serverin ümumi IP ünvanını bilmirsinizsə, bu IP ünvanını aşağıdakı əmrlə tapa bilərsiniz:

  • ip adresini göstər eth0 | grep inet | awk "($2 çap; )" | sed "s/\/.*$//"

Nəticədə bir neçə IP ünvanı göstəriləcək. Onların hər birini brauzerinizə yapışdırmağa çalışın.

IP ünvanınızı təyin etməyin başqa bir yolu, serverinizin İnternetdən necə göründüyünü yoxlamaqdır:

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

Qəbul edilmiş IP ünvanını və ya domen adını veb brauzerinizə daxil edin. Siz standart Nginx səhifəsini görməlisiniz.

http:// domen_adı_və ya_IP_ünvanı

Brauzerinizdə belə bir səhifə görürsünüzsə, Nginx-i uğurla quraşdırmısınız.

Addım 4: Nginx Prosesini idarə edin

İndi Nginx quraşdırılıb və onun işlədiyinə əminik, gəlin bəzilərinə nəzər salaq əsas əmrlər veb serverimizi idarə etmək üçün.

Veb serveri dayandırmaq üçün əmrdən istifadə edin:

  • sudo systemctl stop nginx

Dayanmış veb serveri işə salmaq üçün yazın:

  • sudo systemctl nginx-i işə salın

Veb serveri yenidən başlatmaq üçün aşağıdakı əmrdən istifadə edə bilərsiniz:

  • sudo systemctl nginx-i yenidən başladın

Nginx-in konfiqurasiyasına dəyişiklik etsəniz, tez-tez əlaqələri bağlamadan onu yenidən başlada bilərsiniz. Bunu etmək üçün aşağıdakı əmrdən istifadə edə bilərsiniz:

  • sudo systemctl nginx-i yenidən yükləyin

Varsayılan olaraq Nginx konfiqurasiya edilmişdir avtomatik başlanğıc serveri işə saldıqda. Bu veb server davranışına ehtiyacınız yoxdursa, onu aşağıdakı əmrlə söndürə bilərsiniz:

  • sudo systemctl nginx-i söndürün

üçün yenidən başlamaq serveri işə salarkən Nginx-i işə salmaq üçün daxil edin:

  • sudo systemctl nginx-i aktivləşdirir

Addım 5: Vacib Nginx Faylları və Kataloqları

İndi biz veb serveri idarə etmək üçün əsas əmrləri bildiyimiz üçün əsas kataloq və fayllara nəzər salaq.

Məzmun

  • /var/www/html: Varsayılan olaraq yalnız əvvəllər gördüyümüz Nginx test səhifəsindən ibarət olan veb məzmun /var/www/html kataloqunda yerləşir. Bu qovluğa gedən yol fayllarda konfiqurasiya edilə bilər Nginx konfiqurasiyaları.

Server konfiqurasiyası

  • /etc/nginx: Nginx konfiqurasiya kataloqu. Bütün Nginx konfiqurasiya faylları bu kataloqda yerləşir.
  • /etc/nginx/nginx.conf: Nginx əsas konfiqurasiya faylı. Bu fayl qlobal Nginx konfiqurasiyasında dəyişiklik etmək üçün istifadə olunur.
  • /etc/nginx/sites-available: Hər bir sayt üçün "server bloklarının" saxlandığı qovluq (server blokları təxminən Apache-də virtual hostlara bərabərdir). Nginx bu qovluqda konfiqurasiya fayllarından istifadə etməyəcək, əgər onların saytların aktivləşdirdiyi qovluqda müvafiq keçidlər yoxdursa (aşağıya bax). Tipik olaraq, bütün server blok parametrləri bu kataloqda edilir və sonra başqa bir kataloqda bir keçid yaratmaqla sayt aktivləşdirilir.
  • /etc/nginx/sites-enabled/ : Bu kataloq aktiv saytlar üçün server bloklarını saxlayır. Bu, adətən, saytların mövcud kataloqunda yerləşən sayt konfiqurasiya profillərinə keçidlər yaratmaqla əldə edilir.
  • /etc/nginx/snippets: Bu kataloq hər hansı saytları konfiqurasiya etmək üçün istifadə edilə bilən konfiqurasiya parçaları saxlayır. Çoxsaylı konfiqurasiya fayllarında potensial olaraq istifadə oluna bilən konfiqurasiya fraqmentləri bu fraqmentləri yaratmaq üçün əla namizəddir.

Server qeydləri

  • /var/log/nginx/access.log: Nginx parametrləri ilə başqa cür göstərilmədiyi təqdirdə veb serverinizə hər sorğu bu log faylına yazılır.
  • /var/log/nginx/error.log: İstənilən Nginx xətası bu fayla daxil ediləcək.

Nəticə

Artıq sizdə quraşdırılmış və konfiqurasiya edilmiş bir veb server var, siz istifadəçilərə hansı məzmunu təqdim edəcəyinizi və veb serverə əlavə olaraq hansı digər texnologiyalardan istifadə edə biləcəyinizi seçə bilərsiniz.

Salam, hörmətli Habrahabr istifadəçisi. Söhbətim əməliyyat otağında yerli veb inkişaf layihələri üçün zəmin hazırlamaq haqqında olacaq Ubuntu sistemi 16.04.1 LTS.

Bu yazıda mən bunu dağıtmaq və aydınlaşdırmaq istərdim mümkün çətinliklərüçün tələb olunan proqram təminatının quraşdırılması və konfiqurasiyası ilə əlaqədardır müasir veb inkişafı, hansı təcrübəsiz tərtibatçıların qarşılaşa biləcəyi və yalnız deyil.

Məqalədə istifadə olunacaq texnologiyalar: nginx, php-fpm.

Hekayəyə başlamazdan əvvəl qeyd etmək istəyirəm ki, mən bütün bu hərəkətləri “çılpaq” sistemdə etmişəm.
Qabiliyyət paketi meneceri ilə işləyəcəm. Proqramı quraşdırmadan əvvəl paket indeksini və paketlərin özlərini yeniləməyi də tövsiyə edirəm. Bu yazıda bu addımları birlikdə edəcəyik.

Get!

Paket menecerinin quraşdırılması qabiliyyət, indeks və paket yeniləmələri

Yüklemek:

Sudo apt quraşdırma qabiliyyəti
İndeksi yeniləyirik.

Sudo qabiliyyət yeniləməsi
Paketləri yeniləyirik (komanda yeni versiyaları olan bütün paketləri yeniləyəcək; paketləri silmək lazımdırsa, bu, yerinə yetiriləcək).

Sudo qabiliyyəti tam təkmilləşdirmə

Quraşdırma və konfiqurasiya nginx(versiya >= 1.10.0)

Quraşdırırıq.

Sudo aptitude nginx quraşdırın
başlayaq.

Sudo xidməti nginx başladı
Köhnəsini, yəni 1.10.0-dan aşağı olanı quraşdırmadığımızdan əmin olmaq üçün versiyanı yoxlayırıq.

Quraşdırma və işə salma tamamlandı, indi nginximizin quraşdırıldığı qovluğa keçək və onun strukturuna baxaq. Nginx kataloqu bu yolda yerləşir:

CD /etc/nginx/
Siz kataloqun məzmununa ls əmri ilə baxa bilərsiniz -la bayraqları ilə kataloqun məzmununa baxmaq daha rahat olacaq (əslində xüsusi bayraqları olan bu əmr daha ətraflı və daha dəqiq təsvir edilə bilər, lakin; bu gün başqa mövzumuz var).

Ls-la
Biz maraqlanırıq Bu an ekran görüntüsündə gördüyünüz iki qovluq. Bunlar saytlar üçün mövcud olan və saytların aktivləşdirdiyi qovluqlardır.

Saytların mövcud kataloquna gedək və virtual hostumuzu (sayt) konfiqurasiya etməyə başlayaq.

CD /etc/nginx/sites-available
Yaratmağa başlamazdan əvvəl konfiqurasiya faylı, gəlin bizdə nə olduğunu yoxlayaq bu kataloq. Mənim vəziyyətimdə kataloq boş deyil, artıq konfiqurasiya faylları var, sizi yanıltmamaq üçün onları sildim.

Əhəmiyyətli sapma

Nginx-i “sıfırdan”, dəqiq “sıfırdan” quraşdırmaq vəziyyətində, nginx-i komanda ilə sildiyiniz zaman
sudo apt-get nginx sil və ya sudo apt sil nginx konfiqurasiya faylları qalır və birdən nginx-in niyə işləmədiyini başa düşmürsənsə və onu yenidən quraşdırmaq istəyirsən (adətən yeni başlayanlar buna müraciət edirlər) Linux istifadəçiləri), sonra yenidən quraşdırmadan sonra da düzgün işləməyəcək, çünki köhnə konfiqurasiya faylları (silmək əmri ilə silindikdən sonra silinmir) səhv parametrləri ehtiva edir, onlar silinməli və ya düzgün konfiqurasiya edilməli olacaq, yalnız bundan sonra nginx işləyəcək.

Sudo apt-get purge nginx və ya sudo apt purge nginx əmri ilə silməyi məsləhət görürəm. Əgər qabiliyyət paket menecerindən istifadə edirsinizsə sudo əmri aptitude purge nginx bütün paketi bütün asılılıqlar və konfiqurasiya faylları ilə silir.


Bu qovluqda standart olaraq defolt adlanan bir fayl olacaq. O, nümunə ilə, şərhləri olan bir konfiqurasiya faylını ehtiva edəcək, onu asudə vaxtınızda öyrənə bilərsiniz və ya tamamilə silə bilərsiniz (həmişə əlaqə saxlaya bilərsiniz rəsmi sənədlər).

Ls-la

Yerli saytımızın domen adına (və ya adını bilirsinizsə, həqiqi) uyğun olacaq öz konfiqurasiya faylımızı yaradaq. Bu rahatdır, gələcəkdə bir çox konfiqurasiya faylı olduqda, sizi onlarda qarışıqlıqdan xilas edəcəkdir. Mənim üçün bu fayl project.local adlanacaq.

Sudo touch project.local
Gəlin görək nə baş verdi.

İndi onu redaktorda açaq, mən nanoda açacağam.

Sudo nano project.local
Biz görürük ki, boşdur. İndi faylımızı yaratmağa keçək. Konfiqurasiyanı aşağıda təsvir edilən forma gətirməlisiniz. Mən bu faylın yalnız həyati direktivlərini təsvir edəcəyəm, qalanını təsvir etməyəcəyəm, çünki bu, hazırda vacib deyil, axırda bir mövzumuz var. əsas parametrlər. Bu "slayd" parametrləri yalnız kiçik deyil, həm də kifayət qədər böyük olan layihələri yerli olaraq inkişaf etdirmək üçün kifayətdir. Növbəti məqalələrdə bu faylın istifadə olunan hər bir direktivini (sətirlər belə adlandırılır, məsələn server_name) ayrıca təsvir edəcəyəm.

Konfiqurasiya faylında şərhlərə baxın.

Server (qulaq asmaq 80; # port dinləmək nginx server_name project.local; # cari virtual host root ilə əlaqəli domen adı /home/stavanger/code/project.local; # layihənin yerləşdiyi kataloq, giriş nöqtəsinə gedən yol index php; # add_header Access-Control-Allow-Origin *; ; log_not_found off ) yer / ( # add_header Access-Control-Allow-Origin *; try_files $uri $uri/ /index.php?$query_string; ) yer ~* \.php$ ( try_files $uri = 404; fastcgi_split_path_info ^ (.+ \.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; yer ~ /\.ht ( hamısını inkar et; ) )
Faylı yadda saxlayın. İndi orada hər hansı bir səhv olub olmadığını yoxlamaq lazımdır. Bunu komanda olaraq edə bilərik.

Sudo nginx -t
Ekran görüntüsündə olduğu kimi bu cür məlumatları görsək, hər şey düzgündür və quraşdırmaya davam edə bilərik. Hər hansı bir səhv əldə etsəniz, konfiqurasiya faylınızı iki dəfə yoxlamağa dəyər.

İndi konfiqurasiya faylını aktivləşdirməliyik, /etc/nginx/sites-enabled/ qovluğunda simvolik keçid (simvolik keçid) yaratmalıyıq. Əgər nginx-i sıfırdan quraşdırmısınızsa, o zaman bu qovluqda yuxarıda müzakirə olunan standart faylın simvolu var, ehtiyacınız yoxdursa, onu silə bilərsiniz; İstədiyiniz qovluğa gedin.

CD /etc/nginx/sites-enabled/
İndi girdik istədiyiniz kataloq. Gəlin simvolik əlaqəmizi yaradaq. Yaratmaq üçün -s bayrağı ilə ln əmrindən istifadə edin, sonra layihəmizə gedən yolu göstərəcəyik.local konfiqurasiya.

Sudo ln -s /etc/nginx/sites-available/project.local
Yaradılmış simvolik əlaqəmizə baxaq.

Hələ də hər şeyi düzgün etdiyimizə əmin olmaq üçün əmri yenidən işə salaq.

Fayl ev sahibliyi edir

Bu fayl /etc/hosts ünvanında yerləşir. İçindəki girişlərin olması, domen olaraq localhost istifadə edərək nginx-i işə salmağa imkan verir. Bu faylda siz təyin edə bilərsiniz alternativ ləqəblər, məsələn, layihəmiz üçün layihə.local, biz layihə.local domenini təyin edəcəyik.

Faylı nano redaktorda açın.

Sudo nano /etc/hosts
Bu faylda başqa məlumatınız olacaq, sadəcə ona məhəl qoymayın. Sadəcə ekran görüntüsümdəki kimi bir xətt əlavə etməlisiniz.

Quraşdırma php-fpm (>=7.0)

sudo aptitude php-fpm quraşdırın
Yoxlama quraşdırılmış versiya, hər halda, Ubuntu 16.04.1-də 7.0 versiyası depolarda olsa da.

Php-fpm7.0 -v

Hər şeyin qaydasında olduğuna əmin olaq. php-fpm-ə başlayaq.

Sudo xidməti php7.0-fpm başlayır
Konfiqurasiyaları redaktə etsəniz, demonu yenidən başlatmağı unutmayın. Belə edir. Amma buna ehtiyacımız olmayacaq.

Sudo xidməti php7.0-fpm yenidən başladın
Bu quraşdırma və php-fpm quraşdırma bitdi. Həqiqətən, hamısı budur. Bu sehrli deyil; php-fpm yuvasına gedən yol artıq konfiqurasiya faylında göstərilib. Əlbəttə ki, sizə lazım ola bilər php uzantılarışəxsi layihələrin inkişafı üçün, lakin siz onları tələb olunduğu kimi təmin edə bilərsiniz.

İndi layihəmizlə kataloqa keçək, məndə bu yolda var.

CD /home/stavanger/code/project.local
Yuxarıdakı kataloqa keçək və icazələri 777 edək (yəni edəcəyik tam hüquqlar layihə layihəmizlə qovluq.local). Bu, bizi gələcəkdə lazımsız problemlərdən xilas edəcək.

Cd .. sudo chmod -R 777 layihə.yerli
Bununla proqram təminatının quraşdırılması tamamlanır, gəlin project.local iş kataloqumuzda test faylı yaradaq və hər şeyin işlədiyinə əmin olaq. Bu məzmunla index.php faylı yaradacam.

Biz brauzerə gedirik və görürük ki, hər şey bizim üçün əla işləyir! PHP tərcüməçisi daxil olmaqla.

Oxuculara hörmətlə, Stavanger.

Nginx, php-fpm, php-apc birləşmələri saytı sürətləndirməyə imkan verir. düzgün parametr apache ilə müqayisədə və serverdəki yükü azaldır. Bu, çoxlu sayda ziyarəti olan saytlar qurarkən xüsusilə doğrudur. Komponentlərin bu birləşməsi son vaxtlar getdikcə populyarlaşır, lakin quraşdırma olduqca sadə və sürətlidir. Debian-da konfiqurasiya nümunəsinə baxaq. Nginx-i cache + php-fpm + php-apc ilə konfiqurasiya edək.

Əvvəlcə bu komponentlərin nə olduğunu xatırlayaq. Nginx sürətli və çevik veb serverdir və keşləşdirməyə də imkan verir. Php-fpm PHP FastCGI Proses Meneceri, PHP üçün FastCGI proses meneceridir. FastCGI, tək yivli CGI-dən fərqli olaraq, sorğuların çox yivli işlənməsinə imkan verən ikili müştəri-server protokoludur. Və php-apc Alternativ PHP Cache-dir, PHP bayt kodunu yaddaşda keşləmək üçün pulsuz çərçivədir və bu, əlbəttə ki, kodu təkrar istifadə edərkən PHP-nin icrasını əhəmiyyətli dərəcədə sürətləndirə bilər. Beləliklə, sürətlənmə bir neçə yerdə olmalıdır. Birincisi, nginx-in keşidir, ikincisi, apache ilə müqayisədə nginx-dən istifadə edərək daha sürətli statik çatdırılma, üçüncüsü, PHP bayt kodunun keşləşdirilməsi, dördüncüsü, apache + mod_php5 kombinasiyası ilə müqayisədə php-fpm istifadə edərək php kodunun daha sürətli icrası.

Paketlərin quraşdırılması

Paketləri quraşdırın:

Apt-get quraşdırın nginx php5-fpm php-apc php5-mysql

Sizə lazım olan hər şey asılılıqlara uyğun olaraq quraşdırılacaq

Nginx qurulması

Paketləri quraşdırdıqdan sonra nginx üçün parametrləri konfiqurasiya etməlisiniz. Saytımız üçün nginx parametrləri faylı yaradırıq, gəlin onu “sayt” adlandıraq.

/etc/nginx/sites-available/site toxunun

Fayla aşağıdakıları yazaq:

Server ( # IPv4 vasitəsilə 80 portunu dinləyin 0.0.0.0:80; # Saytın adı (domen adı) server_name saytı; # İndeks faylı indeksi index.php; # Sayt kökünün kök kataloqu /var/www/site; # İnkar et fayllara giriş .htaccess və .htpasswd yeri ~ /\.ht ( hamısını rədd et; ) # Statik qayıdış yeri ~ \.(jpg|jpeg|ico|gif|css)( # Statik fayllara xidmət haqqında qeydləri söndürün # Bu azalmağa kömək edəcək diskdə yazma əməliyyatlarının sayı access_log off max root /var/www/site ) yer ~ \.php ( daxildir /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php-fpm-site; fastcgi_index indeksi; .php; # nginx cache-ni aktivləşdirin, my-cache proxy_cache zonasını birləşdirin # server cavabından asılı olaraq keşdə səhifələrin saxlanması üçün fasilələr 200 və 302 - 60 dəqiqə, 404 - 1 dəqiqə proxy_cache_valid 200 302 60m; proxy_cache_valid 404 1m # Müvəqqəti yaddaş proxy_temp_path /var/cache/nginx/tmp;

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

İstifadə üçün artıq yazdığımız keşi /etc/nginx/nginx.conf faylına əlavə etməlisiniz. Http bölməsinin əvvəlinə aşağıdakı sətri daxil edin:

Proxy_cache_path /var/cache/nginx səviyyələri=1:2 keys_zone=my-cache:8m max_size=128m inaktiv=600m;

Bu sətir aşağıdakıları bildirir: önbelleği saxlamaq üçün kataloq /var/cache/nginx-dir. səviyyələr — keşləmə səviyyələri 1:2, bunlar keşin saxlanması üçün kataloqda qovluqların yerləşdirilməsi səviyyələridir. keys_zone parametri keş zonasının adını və ölçüsünü müəyyən edir (bir neçə zona ola bilər). 1 meqabaytlıq zona 8000 açar saxlaya bilər. max_size parametri keş bu ölçüyə çatdıqda keşin maksimal ölçüsünü müəyyən edir, yer boşaltmaq üçün keşdən köhnə fayllar silinəcək; Aktiv olmayan parametrdə göstərilən vaxt ərzində (bizim halda, 600 dəqiqə) məlumat keşdən tələb olunmazsa, keşdən silinəcəkdir. Aktiv olmayan parametr göstərilməyibsə, standart vaxt 10 dəqiqədir.

php-fpm qurulması

Php-fpm parametrləri /etc/php5/fpm kataloqunda yerləşir. Bu kataloqda saytlarla işləmək üçün faylları saxlayan pool.d alt kataloqu var. Veb saytımız üçün bir fayl yaratmalıyıq. Gəlin onu site.conf adlandıraq

/etc/php5/fpm/pool.d/site.conf üzərinə toxunun

Bu faylda aşağıdakıları yazırıq:

# Nginx ilə məlumat mübadiləsi üçün soket faylı dinləyin = /var/run/php-fpm-site.sock # Sistemdə mövcud olan maksimum əlaqə sayı listen.backlog = -1 # Soket sahibi və sahiblik qrupu listen.owner = www-data qulaq asın .group = www-data # Soket yaratarkən icazələr təyin edildi listen.mode = 660 istifadəçi = www-data group = www-data # Proseslərin sayı dinamik şəkildə idarə olunacaq pm = dinamik pm.max_children = 30 pm.start_servers = 2 pm.min_spare_servers = 2 pm.max_spare_servers = 5 pm.max_requests = 50 env = site env = /usr/local/bin:/usr/bin:/bin env = /tmp env = /tmp env = /tmp

İndi əmrlə php-fpm-i işlədə bilərsiniz

Xidmət php5-fpm başlanğıcı

Və bundan sonra da nginx-i işə salın

Nginx xidmətinin başlanğıcı

Əgər hələ yaradılmayıbsa, /var/www/site kataloqunu yaradaq:

Mkdir -p /var/www/site

Və bu kataloqda aşağıdakı məzmunu olan /var/www/site/index.php faylı yaradacağıq:

İndi brauzerimizdə serverimizi açaq: domen adı. Məsələn, "http://site". Server məlumatı olan bir səhifə açılmalıdır. İstifadə olunan bütün modullar da orada verilmişdir. apc modulu bu siyahıda olmalıdır və onun statusu “Enabled” olmalıdır.

php-apc-nin qurulması

apc konfiqurasiya faylı aşağıdakı yolda yerləşir: /etc/php/fpm/conf.d/20-apc.ini

Prinsipcə, bu modul artıq standart parametrlərlə istifadə edilə bilər, lakin onu daha incə konfiqurasiya etmək istəyirsinizsə, onda bütün parametrlərin təsvirini görə bilərsiniz.

Ümumiyyətlə, konfiqurasiya hazırdır, siz saytı yerləşdirə və saytın necə qurulduğundan və əməliyyat zamanı hansı statistikanın toplanacağından asılı olaraq bütün bu komponentləri daha ətraflı şəkildə konfiqurasiya edə bilərsiniz.

PHP-də yazılmış veb saytları idarə etmək üçün klassik birləşmə apache + mod_php-dir. Mod_php standart olaraq prefork_mpm tələb etdiyi üçün apache hər birini emal etməlidir ayrı əlaqə yaradır ayrı proses, bu da RAM istehlakı baxımından çox da qənaətcil deyil.

Sonra o peyda oldu nginx- yüngül bir proxy veb server və onu apache-nin qarşısında quraşdırmağa başladılar ki, o, statik məlumat versin və apache-ni xırda şeylərlə narahat etməsin. Növbəti məntiqi addım apache simasında olan vasitəçini nginx - apache - php zəncirindən ayırmaqdır, biz bunu edəcəyik.

php-fpm FastCGI-nin də edə biləcəyi (CGI-nin əziyyət çəkdiyi) proseslərin başlanması xərclərinin qarşısını almaq üçün php-ni demonizasiya etməyə imkan verir. Lakin php-fpm digər faydalı xüsusiyyətləri də təmin edir:

  • müəyyən istifadəçilər adından idarəedici hovuzların işə salınması,
  • işləyən işləyicilərin sayına dinamik nəzarət,
  • onlarla bir şey səhv olarsa, işləyiciləri yenidən başlatma imkanı,
  • mysql-ə bənzər yavaş sorğuları qeyd etmək,
  • status və ping səhifələri,
  • digər.

Debian-da php-fpm quraşdırmaq olduqca sadədir:

Bacarıq quraşdırma php5-fpm

Bundan sonra, öz-özlüyündə kifayət qədər yaxşı sənədləşdirilmiş iki konfiqurasiya faylını redaktə edə bilərsiniz, lakin çox sayda söz də onların arxasındakı mahiyyəti tapmağı çətinləşdirə bilər. Birincisi (/etc/php5/fpm/php-fpm.conf) təyin etməyə imkan verir. Ümumi parametrlər:

daxildir- əlavə konfiqurasiyaları hansı kataloqdan daxil etmək,
pid- proses identifikatoru ilə fayla yol,
error_log- səhv jurnalına gedən yol,
syslog.facility- hansı jurnala yazılacağını təyin etməyə imkan verir,
syslog.ident- sistem jurnalında qeydləri hansı adla qeyd etmək lazımdır,
log_level- Xəbərdarlıqdan sazlamaya qədər qeyd səviyyəsi,

Prinsipcə, məsələn, sazlama tələb olunmursa, yuxarıda göstərilən parametrlər standart olaraq buraxıla bilər. Daha maraqlı parametrlər:

fövqəladə_yenidən başlatma_ərəfəsi- müəyyən bir müddət ərzində SIGSEGV və ya SIGBUS siqnalları ilə php-fpm-i yumşaq bir şəkildə yenidən başlatmağın lazım olduğunu müəyyən etməyə imkan verir,
təcili_yenidən başladın_interval- müəyyən bir müddət.
prosesə_nəzarət_zaman aşımı- nəsillər ustanın siqnallara cavab verməsini nə qədər gözləməlidirlər,
proses.maks- bütün hovuzlar üçün maksimum proseslərin sayı,
proses.prioritet- master prosesinin prioritetini təyin edə bilərsiniz,
demonizasiya etmək- şeytanlaşdırmaq və ya etməmək. Sazlama üçün faydalı ola bilər,
rlimit_files- əsas proses üçün mövcud fayl deskriptorlarının sayı,
rlimit_core- başa düşmədim
hadisələr.mexanizm- linux-da mütləq epoll,
systemd_interval- ƏS sisteminizdə systemd istifadə edirsə, o zaman proseslərin vəziyyəti haqqında hesabatların tezliyini təyin edə bilərsiniz. Debian 8-də aktual olacaq.

İkinci konfiqurasiya hovuzları konfiqurasiya etmək üçün əsasdır və /etc/php5/fpm/pool.d/www.conf ünvanında yerləşir. Bu faylda siz daha çox parametr təyin edə bilərsiniz və onların hamısı orada yaxşı sənədləşdirilmişdir. Biz bu faylı siləcəyik və ya adını dəyişəcəyik və öz konfiqurasiya faylımızı yaradacağıq.

Maraqlıdır ki, hovuz konfiqurasiyasında siz hovuz adını dəyişən kimi istifadə edə bilərsiniz $ hovuz. Bunun sayəsində siz vahid konfiqurasiya faylı yarada və onu yeni hovuzlar üçün əsas kimi istifadə edə bilərsiniz. Hovuzun adı kvadrat mötərizədə verilir və parametrlər blokundan əvvəl verilir. Əslində, bütün hovuzları bir faylda təsvir etmək olar, lakin görünür ki, bu edilməməlidir. Misal konfiqurasiya faylı:


prefiks = /var/www/$pool

istifadəçi = $ hovuz
qrup = $ hovuz

qulaq asın = /var/run/phpfpm-$pool.sock
dinləyin.sahibi = $hovuz
dinləyin.qrup = www-data
dinləyin.mode = 0660

pm = dinamik
pm.max_uşaqlar = 16
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4

pm.status_path = /fpmstat

request_slowlog_timeout = 3s
slowlog = /var/www/logs/$pool.slow.log

Zəruridirsə:

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

Parametrlərə baxaq:

prefiks- slowlog, listen, chroot, chdir, php_values, php_admin_values ​​parametrlərində istifadə edilə bilən standart yolu təyin etməyə imkan verir.
istifadəçiqrup- işə salınacaq proseslərin sahibini və qrupunu müəyyən edir.
dinləmək- hansı rozetkaya qulaq asacağınızı göstərir. Həm UNIX, həm də TCP soketləri dəstəklənir. Əgər veb server və PHP işləyiciləri eyni serverdədirsə, UNIX soketlərindən istifadə etmək daha yaxşıdır, çünki bu, potensial olaraq daha sürətlidir, çünki paketlərin yaradılması ilə bağlı heç bir əlavə xərc yoxdur.
dinləmək.sahibi, dinləmək.qrup, dinləmək.rejim- rozetkaya giriş parametrlərini təyin etməyə imkan verir. Hovuz adına uyğun gələn ad sahib kimi göstərilir. Müvafiq istifadəçi yaratmalı və onun üçün ssh girişinin olmadığına əmin olmalısınız, əlbəttə ki, virtual hosting. Qrup www-data kimi göstərilib, çünki onun altında nginx işləyir və onu yuva faylına girişi təmin etmək lazımdır. Hüquqlar 660 sizə başqalarına girişi bloklamağa imkan verir.
pm- proses menecerinin uşaq proseslərin sayını necə idarə edəcəyini müəyyənləşdirir. O, statik (sabit sayda proseslər), dinamik (proseslərin sayı müəyyən edilmiş məhdudiyyətlər daxilində dəyişə bilər) və tələb üzrə (proses başlandıqda və fasilədən sonra öldürüldükdə) ola bilər.
pm.max_uşaqlar- uşaq proseslərinin maksimum sayı.
pm.start_servers- php-fpm başlayanda nə qədər proses işə salınır.
pm.min_spare_servers- gözləmə proseslərinin minimum sayı. Parametr dəyərindən daha az proses varsa, o zaman yeni proseslər yaradılacaq.
pm.max_spare_servers- gözləmə proseslərinin maksimum sayı. Parametrin dəyərindən daha çox gözləmə prosesləri varsa, əlavə proseslər məhv ediləcək.
pm.status_path- status səhifəsinə gedən yol.
request_slowlog_timeout- sorğunun yavaş hesab edildiyi vaxt.
yavaş log- yavaş sorğu log faylına yol.
access.log- giriş jurnalı olan fayla gedən yol.

Digər maraqlı variantlar:

pm.max_istəklər- işlənmiş sorğuların sayı, ondan sonra prosesin yenidən başlaması lazımdır. Yaddaş sızması ilə mübarizə aparmağa imkan verir.
proses.prioritet- bu hovuzda proseslərin prioritetini təyin edir.
chroot- müəyyən edilmiş kataloqa prosesləri əlavə etməyə imkan verir. Bununla belə, php tərəfindən istifadə edilən bütün yollar əlavə konfiqurasiya tələb edən göstərilən kataloqa nisbətən işləyəcək.
təhlükəsizlik.limit_uzantıları- php-fpm ilə emal üçün fayl uzantılarının siyahısını müəyyən etməyə imkan verir.

Siz həmçinin mühit dəyişənlərini ləğv edə bilərsiniz, məsələn:

və demək olar ki, .htaccess-də olduğu kimi php.ini-dən parametrləri ləğv edin:

php_bayraq = off

Yəni bir çoxunu konfiqurasiya edə bilərik php parametrləri hər hovuz üçün ayrıca.

Yeri gəlmişkən, sayt kataloqunda parametrləri dəyişdirmək üçün php-dən istifadə edə bilərsiniz.

İcra

Yuxarıdakı material bir qədər xaotik şəkildə təqdim olunur. Tətbiqin konkret sadə nümunəsinə baxmağa çalışaq.

Biz güman edirik ki, nginx və php-fpm artıq quraşdırılıb.

İndi nginx-də virtual hostu konfiqurasiya etməlisiniz ki, statik fayllara edilən sorğular nginx-in özü tərəfindən emal edilsin və php skriptlərinə edilən sorğular emal üçün php-fpm-ə köçürülsün. Misal:

server(
qulaq asmaq 80;
server_name webpanels.spb.ru;

kök /var/www/webpanels;
indeks index.php;

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

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

fastcgi_params daxil edin;
}

yer ~ ^/(fpmstat|ping)$ (
access_log off;
icazə 127.0.0.1;
icazə 123.123.123.123; #sizin-ip
hamısını inkar etmək;
fastcgi_params daxil edin;
fastcgi_param SCRIPT_FILENAME /fpmstat;
fastcgi_pass unix:/var/run/phpfpm-webpanels.sock;
}

yer ~* ^.+.(html|jpg|jpeg|gif|css|png|js|ico|txt)$ (
60d müddəti başa çatır;
}
}

Bu, sorğuların hara yönləndiriləcəyini göstərir. Bizim vəziyyətimizdə unix yuvası istifadə olunur. Biz də göstəririk indeks faylı və fayla gedən yol. Gördüyünüz kimi, hər şey olduqca sadədir. Bu misal düstur kimi istifadə edilə bilər.

İndi php-fpm-i konfiqurasiya edək. Debian-da ümumi parametrlər /etc/php5/fpm/php-fpm.conf faylındadır:

pid = /var/run/php5-fpm.pid
error_log = /var/log/php5-fpm.log
proses.max = 64
proses.prioritet = -5
rlimit_files = 1024
hadisələr.mexanizm = epoll
daxildir=/etc/php5/fpm/pool.d/*.conf

Aydındır ki, bu parametrlər minimaldır və standart olaraq çox şey qalır. Ancaq işləyir və yəqin ki, gündə min ziyarəti problemsiz idarə edəcək.

Hovuzun qurulması nümunəsi yuxarıda verilmişdir. Hər bir hovuzun işə salındığını xatırlatmaq lazımdır fərdi istifadəçi kimi bir əmrlə yaradıla bilən:

Useradd -m -d /var/www/webpanels -s /usr/sbin/nologin -c "webpanels saytı" -U veb panelləri

Üstəlik, bunun üçün deyirlər normal əməliyyat/etc/php5/fpm/php.ini faylında aşağıdakı parametrlər təyin edilməlidir:

cgi.fix_pathinfo = 0

Həmçinin, Apache-dən imtinaya görə mod_rewrite qaydalarını nginx üçün başa düşülən qaydalara çevirmək lazım gələ bilər. Bu, məsələn, aşağıda mövcud olan çeviricilərdən istifadə etməklə edilə bilər:

Nginx veb serveri çox yüksək performanslı və ən populyar veb serverlərdən biridir sürətli emal statik sorğular istifadəçilərdən. Düzgün quraşdırma ilə çox şey əldə edə bilərsiniz yüksək performans bu veb serverdən. Nginx statik faylları idarə etməkdə çox sürətlidir html səhifələri və ya digər növ resurslar.

Əvvəlki məqalələrdən birində onun əsas parametrlərinin qurulmasına baxdıq, bu məqalədə mən veb serverin döyüş şəraitində istifadə üçün performansı və hazırlanması üzərində daha çox dayanmaq istəyirəm. Haqqında Linux paylanması, onda bu gün CentOS-u nəzərdən keçirəcəyik, bu sistem tez-tez serverlərdə istifadə olunur və Nginx-in qurulmasında bəzi çətinliklər yarana bilər. Sonra Nginx CentOS-un qurulmasına baxacağıq, http2 üçün tam dəstəyi necə aktivləşdirmək barədə danışaq, google səhifə sürəti, və əsas konfiqurasiya faylını konfiqurasiya edin.

Rəsmi CentOS repozitoriyalarına Nginx daxildir və o, çox güman ki, artıq sisteminizdə quraşdırılıb. Amma biz saytın http2 protokolundan istifadə edərək işləməsini istəyirik ki, bu da bir əlaqə ilə bütün məlumatları ötürməyə imkan verir və bu, performansı artırır. http2 vasitəsilə işləmək üçün konfiqurasiya etməlisiniz SSL sertifikatı, lakin bu, Lets Encrypt Nginx sertifikatı əldə edən məqalədə artıq yazılıb. Ancaq bu hamısı deyil. Adi SSL-dən HTTP2.0-a keçmək üçün əksər brauzerlər indi ALPN protokolundan istifadə edir və bu, OpenSSL 1.02-dən bəri dəstəklənir. Depolarda yalnız OpenSSL 1.01 var. Buna görə də, OpenSSL 1.02 ilə qurulmuş Nginx versiyasını quraşdırmalıyıq. Bunun üçün Broken Repo istifadə edə bilərsiniz:

sudo yum -y yum-utils quraşdırın
# sudo yum-config-manager --add-repo https://brouken.com/brouken.repo

Əgər siz EPEL repozitoriyasından istifadə edirsinizsə, onda siz Nginx-i ondan götürməyinizə ehtiyac olmadığını bildirməlisiniz:

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

İndi Nginx-in düzgün versiyasını quraşdırmaq üçün sadəcə yazın:

sudo yum nginx quraşdırın

Ən çox son versiya Nginx 1.13.2, ilə tam dəstək ALPN. Sonra, quraşdırmaya keçək.

2. Nginx-in qurulması

İlk addım konfiqurasiya faylının strukturunu nəzərdən keçirməkdir. İlk baxışdan burada hər şey çox qarışıq görünə bilər, lakin hər şey olduqca məntiqlidir:

qlobal seçimlər
hadisələr()
http(
server(
yer()
}
server()
}

Əvvəlcə proqramın əsas parametrlərini təyin edən qlobal seçimlər var, məsələn, onun hansı istifadəçi kimi işə salınacağı və proseslərin sayı. Sonrakı bölmə var hadisələr, Nginx-in daxil olan əlaqələrə necə cavab verəcəyini təsvir edən, ardınca bölmə http http protokolunun işləməsi ilə bağlı bütün parametrləri birləşdirən . Bir bölmə ehtiva edir server, hər bir belə bölmə ayrı bir domen üçün cavabdehdir, server bölməsi bölmələri ehtiva edir; yer, onların hər biri konkret üçün məsuliyyət daşıyır Sorğu URL, lütfən nəzərə alın ki, bu, Apache-də olduğu kimi serverdəki fayl deyil, sorğu URL-dir.

Əsas qlobal parametrlər bunu /etc/nginx/nginx.conf faylında edəcəyik. Sonra, dəqiq nəyi dəyişəcəyimizə və hansı dəyərləri təyin etməyin məqsədəuyğun olduğuna baxaq. Qlobal seçimlərdən başlayaq:

  • istifadəçi- adından server işə salınacaq istifadəçi sayt faylları olan kataloqun sahibi olmalı və onun adından php-fpm işlədilməlidir;
  • işçi_prosesləri- işə salınacaq Nginx proseslərinin sayı sizin nüvələriniz qədər təyin edilməlidir, məsələn, məndə 4;
  • işçi_cpu_yaxınlığı- bu parametr hər bir prosesi ayrıca prosessor nüvəsinə təyin etməyə imkan verir ki, proqram özü nəyə qoşulacağını seçsin;
  • worker_rlimit_nofile- proqramın aça biləcəyi maksimum fayl sayı, hər bir əlaqə üçün sizə ən azı iki fayl lazımdır və hər bir prosesdə qeyd etdiyiniz bağlantıların sayı olacaq, belə ki, formula belədir: işçi_prosesləri * işçi_əlaqələri * 2, parametr işçi_əlaqələri Gəlin aşağıda baxaq;
  • pcre_jit- emal prosesini sürətləndirmək üçün bu seçimi aktivləşdirin müntəzəm ifadələr JIT kompilyasiyasından istifadə etmək;

Hadisələr bölməsində iki parametri konfiqurasiya etməlisiniz:

  • işçi_əlaqələri- bir proses üçün qoşulmaların sayı daxil olan əlaqələri emal etmək üçün kifayət olmalıdır. Əvvəlcə bu daxil olan əlaqələrin neçə olduğunu bilməliyik, bunun üçün ip_address/nginx_status serverindəki statistikaya baxırıq. Aşağıda onu necə aktivləşdirəcəyimizə baxacağıq. Active Connections sətirində serverə aktiv qoşulmaların sayını görürük. Sonra, qəbul edilmiş və idarə olunan sahələrə diqqət yetirin, birincisi işlənmiş əlaqələri, ikincisi - qəbul edilənlərin sayını göstərir. Dəyərlər eyni olmalıdır. Əgər onlar fərqlidirlərsə, bu, kifayət qədər əlaqə olmadığını göstərir. Nümunələrə baxın, birinci şəkil problem, ikincisi sifarişdir. Konfiqurasiyam üçün optimal rəqəm 200 əlaqə ola bilər (cəmi 800, 4 prosesi nəzərə alaraq):

  • multi_qəbul edin- proqrama eyni vaxtda bir neçə əlaqəni qəbul etməyə imkan verir, həmçinin işi sürətləndirir böyük miqdardaəlaqələr;
  • qəbul_mutex- bu parametrin dəyərini söndürün ki, bütün proseslər dərhal yeni bağlantılar haqqında bildiriş alsın;

Hadisələr bölməsində istifadə epoll direktivindən də istifadə etmək tövsiyə olunur, çünki bu, Linux üçün daxil olan əlaqələri emal etmək üçün ən səmərəli üsuldur, lakin bu üsul standart olaraq istifadə olunur, ona görə də onu əl ilə əlavə etməyin mənası yoxdur. http bölməsindən daha bir neçə parametrə baxaq:

  • göndərmə faylı- sendfile məlumat göndərmə metodundan istifadə edin. Linux üçün ən təsirli üsul.
  • tcp_nodelay, tcp_nopush- sorğunun başlıqlarını və gövdəsini bir paketdə göndərir, bir az daha sürətli işləyir;
  • saxlama_zamanı- müştəri ilə əlaqə saxlamaq üçün fasilə, əgər çox yavaş skriptləriniz yoxdursa, onda 10 saniyə kifayət edəcək, istifadəçinin serverə qoşula bilməsi üçün dəyəri lazım olduğu qədər təyin edin;
  • əlaqəni sıfırla- fasilədən sonra əlaqələri kəsin.
  • açıq_fayl_keşi- açıq fayllar haqqında keş məlumatı. Məsələn, open_file_cache max=200000 inaktiv=120s; max - keşdəki faylların maksimum sayı, keşləmə vaxtı.
  • open_fayl_cache_valid- faylların uyğunluğunu yoxlamaq lazım olduqda. Məsələn: open_file_cache_valid 120s;
  • open_fayl_cache_min_uses- yalnız müəyyən edilmiş sayda açılmış faylları keş edin;
  • open_fayl_cache_errors- faylın açılması səhvlərini xatırlayın.
  • əgər_dəyişdirilmişdir- if-modified-sice başlıqlarının necə işlənəcəyini təyin edir. Səhifə o vaxtdan bəri dəyişməyibsə, bu başlıqla brauzer 304 cavabı ala bilər son baxılıb. Mümkün variantlar: göndərməyin - buraxın, vaxt tam uyğun gəlirsə göndərin - dəqiq, vaxt tam uyğun gəlirsə göndərin və ya daha çox - əvvəl;

Nginx conf quraşdırması belə görünəcək:

istifadəçi nginx;
işçi_prosesləri 4;
worker_cpu_affinity auto;
worker_rlimit_nofile 10000;
pcre_jit açıq;

error_log /var/log/nginx/error.log xəbərdarlıq;
load_module "modules/ngx_pagespeed.so";

hadisələr (
multi_accept on;
qəbul_mutex off;
işçi_əlaqələri 1024;
}

göndərmə faylı;
tcp_nopush açıq;
tcp_nodelay aktivdir;

open_file_cache max=200000 inaktiv=20s;
open_file_cache_valid 120s;
open_file_cache_errors on;

reset_timeout_connection aktivdir;
client_body_timeout 10;
keepalive_timeout 65;

daxildir /etc/nginx/sites-enabled.*.conf

3. http2 quraşdırma

Server bölməsinin qurulmasını ətraflı təsvir etməyəcəyəm, çünki bunu Ubuntu-da Nginx-in quraşdırılması məqaləsində artıq etmişəm və burada əlavə edəcəyim heç nə yoxdur, SSL quraşdırma Bu kifayət qədər geniş mövzudur və ayrıca məqalədə müzakirə ediləcəkdir. Lakin http2-ni konfiqurasiya etmək üçün sizdə artıq SSL olmalıdır. Sonra, sadəcə olaraq server bölmənizdə dinləmə direktivini tənzimləyin:

qulaq asın 194.67.215.125:443 default_server;

qulaq asın 194.67.215.125:443 http2 default_server;

Əgər əvvəllər quraşdırmısınızsa, bu sadə üsulla http2-ni aktivləşdirə bilərsiniz düzgün versiya Nginx.

4. Səhifə Sürətinin qurulması

Google Pagespeed, səhifələrin daha sürətli yüklənməsini, veb serverin daha səmərəli işləməsini və istifadəçilərin daha az narahatlıq keçirməsini təmin etmək üçün müxtəlif optimallaşdırmalar həyata keçirən Nginx moduludur. Buraya keşləmə, optimallaşdırma daxildir html kodu, təsvirin optimallaşdırılması, javascript birləşməsicss kodu və daha çox. Bütün bunlar Nginx səviyyəsində edilir, ona görə də PHP-də etdiyinizdən daha səmərəlidir. Ancaq bir çatışmazlıq var: modul Son Dəyişiklik başlığını silir.

Fakt budur ki, PageSpeed ​​bütün fayllar üçün çox uzun bir keş xətti təyin edir və fayl adına hash əlavə edir. Bu yolla, resursun yükləmə sürəti daha yüksəkdir, çünki brauzer yalnız yeni hash ilə fayllar tələb edəcək və LastModified silinir ki, istifadəçilər hər hansı bir fayl dəyişdirildikdə dəyişiklikləri görə bilsinlər. İndi modulun necə qurulacağına baxaq. Biz onu mənbə kodundan qurmalıyıq.

Əvvəlcə montaj üçün alətləri quraşdırın, bu çox vacibdir, əgər quraşdırmasanız, səhv alacaqsınız və nə edəcəyinizi bilməyəcəksiniz:

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

Versiyanız üçün Nginx mənbələrini yükləyin və çıxarın, məsələn 1.13.3:

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

Nginx serverinin qurulması proqramın repozitoriyadan yığılması və dəyişdirilməsini əhatə etmir, biz sadəcə modulu qurmaq üçün bu mənbələrdən istifadə edirik; PageSpeed ​​mənbələrini yükləyin və çıxarın:

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

PageSpeed ​​optimallaşdırma kitabxanasını yükləyin və modul mənbələri olan qovluğa açın:

cd ngx_pagespeed-1.12.34.2-stabil/
# 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

OpenSSL 1.02 mənbələrini yükləyin və açın:

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

İndi modulu yığmalıyıq. Əvvəlcə mövcud Nginx-in qurulduğu seçimlərə baxın:

İndi Nginx ilə qovluğa gedək, alınan bütün variantları, PageSpeed, OpenSSL üçün --add-dynamic-module seçimini əvəz edək və qurmağa çalışaq:

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 --vhttp_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --link-http_secure -http_secure -http_secure _ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_dule --with-stream_ssmodule --with-t O2 -g -boru -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic" --with- ld-opt= --with-openssl=$HOME/openssl-1.0.2k --add-dynamic-module=$HOME/ngx_pagespeed-1.12.34.2-stabil $(PS_NGX_EXTRA_FLAGS)
#edin

Hər şey düzgün aparılıbsa, nəticədə siz obj qovluğunda ngx_pagespeed.so modulunu alacaqsınız, onu /etc/nginx/modules qovluğuna kopyalamalısınız:

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

Keş üçün qovluq yaradın:

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

İndi modulu /etc/nginx/nginx.conf-da aktivləşdirmək üçün aşağıdakı sətri əlavə edin:

load_module "modules/ngx_pagespeed.so";