Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Sfat
  • Nginx: configurare și instalare. Modificarea lui Nginx

Nginx: configurare și instalare. Modificarea lui Nginx

O zi buna!

Da, în opinia mea, Nginx este de câteva ori mai rapid decât serverul Apache. Unii vor argumenta că Apache poate fi optimizat și va deveni și el rapid. Acest lucru este adevărat, dar amintiți-vă că Nginx poate fi și overclockat foarte mult. Cu siguranță voi scrie un articol separat despre optimizare în detaliu.

Câteva teorii despre Nginx + php-fpm

Apache php este un plug-in în serverul web, un astfel de pachet este lent și consumă multe resurse. Datorită acestei arhitecturi nefericite, Apache nu poate gestiona de obicei mai mult de 200-300 de solicitări pe secundă, chiar și pe un server foarte puternic. În Nginx, se folosește o arhitectură diferită - serverul web Nginx în sine procesează numai cereri de statică (imagini, css etc.), iar execuția php este dată unui alt server software - php-fpm. Php-fpm (FastCGI Process Manager) este un software complet independent, poate fi instalat pe același server cu Nginx (pentru proiecte mici) sau scos pe un server separat. Proiectele mari rulează de obicei mai multe servere cu Nginx, php-fpm și baze de date.

Prin înlocuirea serverului Apache cu Nginx + php-fpm, puteți accelera procesarea solicitărilor utilizatorilor și puteți economisi mult pe hardware. Un proiect web cu trafic de până la 10.000 de vizitatori unici pe zi poate trăi cu ușurință pe cel mai ieftin server virtual de la DigitalOcean pentru 5 USD pe lună. Apropo, dacă urmați acest link - DigitalOcean, veți primi 10 USD la înregistrare, adică 2 luni de utilizare a serverului virtual. Nu există condiții suplimentare acolo.

Dar să trecem la treabă. Voi descrie procesul de instalare și configurare folosind CentOS 6.x ca exemplu, dar nu va diferi mult pentru alte distribuții Linux.

Instalarea Nginx:

  • /var/run/php5-fpm.sock ar trebui să fie deja prezent pe server? în ubuntu 16.04 nu am găsit un astfel de fișier în / var / run
  • 1. Instalarea depozitului Nginx: Nu există nicio distribuție Nginx în mod implicit în distribuțiile standard Linux, așa că haideți să o adăugăm în sistem.

    vi /etc/yum.repos.d/nginx.repo


    nume = nginx repo
    baseurl = http: //nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck = 0
    activat = 1

    Apoi apăsați „: wq” și Enter pentru a salva și a ieși. Asta este, acum Nginx este disponibil pentru instalare automată prin managerul de pachete yum. Dacă utilizați o distribuție Linux diferită, accesați pentru instrucțiuni specifice sistemului dvs.

    2. Instalarea Nginx din depozit: acum doar rulați comanda de instalare.

    Instalați php-fpm:

    PHP-fpm este disponibil implicit pe toate distribuțiile moderne, așa că instalați-l:

    Aceasta va instala serverul în sine și toate pachetele auxiliare. Dacă ceva nu funcționează, puteți construi singur php-fpm din sursă, pentru instrucțiuni detaliate accesați aici.

    Configurarea și rularea Nginx + php-fpm:

    1. Să începem cu php-fpm: deschide fișierul de configurare

    vi /etc/php-fpm.d/www.conf

    și scrieți acolo funcționează printr-un socket (va funcționa mai repede în acest fel):

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

    schimbați linia existentă „listen =" sau adăugați una nouă și ștergeți-o pe cea veche.

    2. Acum să trecem la Nginx: creați un fișier de configurare pentru primul dvs. site (înlocuiți site1 cu numele site-ului, deși va funcționa așa)

    vi /etc/nginx/conf.d/site1.conf

    Mai jos este configurația minimă, o puteți copia doar. Orice lucru care trebuie înlocuit este evidențiat cu roșu. Această configurație este configurată pentru a servi fișiere statice și a accesa un fișier php - index.php. Toate CMS-urile moderne sunt lansate cu un singur fișier, astfel încât această configurație este potrivită pentru majoritatea sarcinilor. Dacă trebuie să rulați alte fișiere php, scrieți-le separat. În această configurație, fișierele site-ului trebuie plasate în folderul / home / mysite / public_html /

    Server (
    asculta [adresa ip server]: 80;
    site-ul nume_server;
    rezolutor 8.8.8.8;
    error_log / var / log / nginx / site _error.log warn;
    root / home / site / public_html;
    access_log / var / log / nginx / site -access.log;
    set de caractere utf-8;
    index index.php;
    locație ~. * (gif | jpg | jpeg | png | ico | swf | txt | pdf | doc | docx | exe | xls | xlsx | șiruri de caractere | zip | rar | 7z) $ (
    expiră 1 an;
    }

    Locație ~. * (Html ​​​​| htm | js | css) $ (
    expiră 1 an;
    }

    locație ~ ^ / index.php (
    fastcgi_pass unix: /var/run/php5-fpm.sock;
    fastcgi_param SCRIPT_FILENAME / home / site /public_html/index.php;
    include / etc / nginx / fastcgi_params;
    fastcgi_param SCRIPT_NAME /index.php;
    }

    Acum puneți primele fișiere ale site-ului în folderul / home / site1 / public_html / și suntem gata să mergem.

    3. Rularea nginx + php-fpm:

    service nginx start

    pornirea serviciului php-fpm

    Dacă ați făcut totul corect și nu ați făcut greșeli nicăieri, rezultatul va fi astfel:

    Dacă aveți întrebări sau aveți nevoie de clarificări, vă rugăm să puneți o întrebare sau lăsați un comentariu.

    Sunt mereu fericit să ajut!

    |

    Nginx este unul dintre cele mai populare servere web din lume pentru găzduirea de site-uri foarte mari și cu trafic ridicat. În general, utilizează mai puține resurse decât Apache. Poate fi folosit și ca server proxy invers.

    Acest tutorial vă va ghida prin instalarea Nginx pe un server Ubuntu 16.04.

    Cerințe

    • Server Ubuntu 16.04.
    • Un utilizator non-root cu acces la comanda sudo (mai multe despre asta în).

    Pasul 1 - Instalarea Nginx

    Pachetul Nginx este disponibil în depozitul standard de sistem Ubuntu.

    Deoarece aceasta este prima interacțiune cu sistemul de ambalare apt în sesiunea curentă, indexul pachetului trebuie actualizat. După aceea, puteți instala Nginx.

    sudo apt-get update
    sudo apt-get install nginx

    Managerul de pachete va instala apoi serverul web și toate dependențele acestuia.

    Pasul 2 - configurarea firewall-ului

    Înainte de a porni Nginx, trebuie să vă configurați firewall-ul pentru a suporta traficul acestui serviciu. În timpul instalării, Nginx se înregistrează ca serviciu cu ufw, deci este foarte ușor să permiteți traficul pe serverul web.

    Deschideți lista cu setările aplicațiilor ufw:

    lista de aplicații sudo ufw

    Comanda va reveni:

    Aplicații disponibile:
    Nginx plin
    Nginx HTTP
    Nginx HTTPS
    OpenSSH

    După cum puteți vedea, există trei profiluri Nginx în listă:

    • Nginx Full: Acest profil deschide portul 80 (trafic de rețea necriptat) și 443 (trafic TLS / SSL criptat).
    • Nginx HTTP: Profil pentru trafic HTTP necriptat pe portul 80.
    • Nginx HTTPS: Profil pentru trafic criptat TLS/SSL pe portul 443.

    Pentru a activa un profil, introduceți:

    sudo ufw permite „Nginx HTTP”

    Asigurați-vă că profilul este activat:

    Comanda ar trebui să raporteze că traficul HTTP este permis:

    Stare: activ
    La Acțiune De la
    -- ------ ----
    OpenSSH ALLOW oriunde
    Nginx HTTP ALLOW oriunde
    OpenSSH (v6) ALLOW Anywhere (v6)
    Nginx HTTP (v6) ALLOW Anywhere (v6)

    Pasul 3 - Testarea serverului web

    Odată instalat, Ubuntu 16.04 va lansa automat Nginx. În acest moment, serverul web ar trebui să funcționeze.

    Pentru a verifica dacă Nginx rulează, interogați starea acestuia pe sistemul systemd init.

    starea systemctl nginx
    nginx.service - Un server web de înaltă performanță și un server proxy invers
    Încărcat: încărcat (/lib/systemd/system/nginx.service; activat; prestabilit furnizor: activat)
    Activ: activ (în rulare) din Luni 2016-04-18 16:14:00 EDT; acum 4 minute 2 secunde
    PID principal: 12857 (nginx)
    CGroup: /system.slice/nginx.service
    ├─12857 nginx: proces principal / usr / sbin / nginx -g daemon activat; master_process activat
    └─12858 nginx: proces de lucru

    După cum puteți vedea, serviciul a început cu succes.

    De asemenea, puteți încerca să vizitați pagina de destinație Nginx implicită. Este disponibil în browser după numele de domeniu sau adresa IP.

    Dacă nu vă cunoașteți adresa IP, o puteți găsi folosind linia de comandă. Introduce:

    adresă ip arată eth0 | grep inet | awk „(tipărește 2 $;)” | sed "s /\/.*$//"

    Comanda va returna mai multe linii. Verificați fiecare adresă într-un browser.

    De asemenea, puteți afla cum alte puncte din rețea văd adresa dvs. IP.

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

    După ce vă cunoașteți IP-ul, introduceți-l în browser pentru a vă asigura că serverul web funcționează corect.

    http: // server_domain_or_IP

    Pagina de destinație Nginx implicită ar trebui să apară pe ecran:

    Bine ați venit la Nginx!
    Dacă vedeți această pagină, serverul web nginx este instalat și funcționează cu succes. Este necesară o configurare suplimentară.

    Pasul 4 - Gestionarea proceselor Nginx

    Să ne uităm la câteva programe de bază de gestionare a serverelor web.

    Pentru a opri Nginx, introduceți:

    sudo systemctl stop nginx

    Pentru a rula, introduceți:

    sudo systemctl start nginx

    Pentru a reporni, utilizați comanda:

    sudo systemctl reporniți nginx

    Pentru a actualiza setările Nginx fără a întrerupe conexiunile, introduceți comanda:

    sudo systemctl reîncărcați nginx

    În mod implicit, Nginx pornește automat când serverul pornește. Acest comportament poate fi dezactivat:

    sudo systemctl dezactivează nginx

    Pentru a relua pornirea automată a serviciului, introduceți:

    sudo systemctl enable nginx

    Pasul 5: Fișiere și directoare Nginx

    Acum știi cum să gestionezi serviciul. Este timpul să vă familiarizați cu fișierele și directoarele importante ale Nginx.

    Conţinut

    • / var / www / htm: Acest director conține conținutul actual al site-ului. În mod implicit, conține doar pagina de destinație prestabilită pe care ați văzut-o deja. Acest director poate fi modificat în fișierul de configurare Nginx.

    Setări server

    • / etc / nginx: directorul de setări nginx unde sunt stocate toate fișierele de configurare.
    • /etc/nginx/nginx.conf: Fișierul principal de configurare Nginx care conține setările globale ale serverului web.
    • / etc / nginx / site-available: director care conține blocurile de server configurate (gazde virtuale) ale fiecărui site individual. Nginx nu va folosi aceste blocuri până când nu apare un link către ele în directorul activat pentru site-uri (mai multe despre asta mai târziu). De obicei, acest director este folosit pentru a configura gazde virtuale.
    • / etc / nginx / site-enabled /: directorul care conține blocurile de server activate. Pentru a activa blocarea, trebuie să creați o legătură simbolică către fișierul stocat în directorul site-uri disponibile.
    • / etc / nginx / snippets: Acest director stochează fragmente de setări care pot fi incluse în configurația Nginx. De obicei, segmentele de configurație potențial repetabile sunt adăugate ca fragmente.

    Bușteni

    • /var/log/nginx/access.log: Acest jurnal înregistrează toate solicitările primite de serverul web Nginx (dacă nu este configurat altfel).
    • /var/log/nginx/error.log: Acest jurnal stochează toate mesajele de eroare Nginx.

    Concluzie

    Serverul web Nginx este acum instalat și gata de funcționare. Folosiți-l pentru a difuza conținutul site-ului dvs.

    Bună, dragă utilizator Habrahabr. Povestea mea va fi despre cum să pregătesc scena pentru proiectele locale de dezvoltare web în sistemul de operare Ubuntu 16.04.1 LTS.

    În acest articol, aș dori să elimin și să clarific posibilele dificultăți asociate cu instalarea și configurarea software-ului care este necesar pentru dezvoltarea web modernă, cu care se pot confrunta dezvoltatorii începători și nu numai.

    Tehnologii care vor fi folosite în articol: nginx, php-fpm.

    Înainte de a începe povestea, vreau să remarc că toate aceste acțiuni le-am făcut pe un sistem „gol”.
    Voi lucra cu aptitude manager de pachete. De asemenea, recomand să actualizați indexul pachetelor și pachetele în sine înainte de a instala software-ul. În acest articol, vom face acești pași împreună.

    Merge!

    Instalarea managerului de pachete aptitudini, actualizarea indexului și a pachetelor

    Instalare:

    Sudo apt install aptitude
    Actualizăm indexul.

    Sudo aptitude update
    Actualizăm pachetele (comanda va actualiza toate pachetele pentru care există versiuni noi, dacă este necesară eliminarea pachetelor, se va face).

    Sudo aptitude complet upgrade

    Instalare și configurare nginx(versiunea> = 1.10.0)

    Instalare.

    Sudo aptitude instalează nginx
    Lansăm.

    Serviciul Sudo nginx începe
    Verificăm versiunea pentru a ne asigura că nu am instalat-o pe cea veche, adică sub 1.10.0.

    L-am instalat și lansat, acum să mergem la directorul în care este instalat nginx-ul nostru și să ne uităm la structura lui. Directorul nginx este situat pe această cale:

    Cd / etc / nginx /
    Puteți vizualiza conținutul directorului cu comanda ls, cu steaguri -la va fi mai convenabil să vizualizați conținutul directorului (de fapt, această comandă cu steaguri specifice poate fi descrisă mai detaliat și mai precis, dar avem un alt subiect astăzi).

    Ls -la
    Momentan suntem interesați de cele două directoare pe care le vedeți în captură de ecran. Acestea sunt directoarele site-uri disponibile și site-uri activate.

    Să mergem la directorul site-available și să începem configurarea gazdei noastre virtuale (site).

    Cd / etc / nginx / site-uri disponibile
    Înainte de a începe să creăm un fișier de configurare, să verificăm ce avem în acest director. In cazul meu, directorul nu este gol, contine deja fisiere de configurare, le-am suprascris pentru a nu te induce in eroare.

    Digresiune importantă

    În cazul instalării nginx „de la zero”, și anume „de la zero”, deoarece la eliminarea nginx cu comanda
    sudo apt-get remove nginx sau sudo apt remove nginx rămân fișierele de configurare, iar dacă brusc nu înțelegeți de ce nginx nu funcționează și doriți să-l reinstalați (de obicei utilizatorii Linux începători recurg la aceasta), atunci după reinstalare nu va funcționa corect , din cauza faptului că în fișierele vechi de configurare (nu sunt eliminate după ștergere cu comanda remove) sunt scrise setări incorecte, acestea vor trebui eliminate sau configurate corect, abia atunci nginx va funcționa.

    Recomand dezinstalarea cu sudo apt-get purge nginx sau sudo apt purge nginx. Dacă utilizați managerul de pachete aptitude, comanda sudo aptitude purge nginx elimină întregul pachet, inclusiv toate dependențele și fișierele de configurare.


    Acest director va avea un fișier implicit, numit implicit. Acesta va conține un fișier de configurare cu un exemplu, cu comentarii, îl puteți studia la îndemâna dvs. sau îl puteți șterge complet (vă puteți consulta oricând la documentația oficială).

    Ls -la

    Să ne creăm propriul fișier de configurare care va corespunde numelui de domeniu al site-ului nostru local (sau unul real, dacă îi cunoașteți deja numele). Acest lucru este convenabil, în viitor, când vor exista o mulțime de fișiere de configurare, vă va scuti de confuzie în ele. Pentru mine acest fișier se va numi project.local.

    Sudo touch project.local
    Să vedem ce s-a întâmplat.

    Acum să-l deschidem în editor, îl voi deschide în nano.

    Sudo nano project.local
    Vedem că îl avem gol. Acum să trecem la formarea fișierului nostru. Este necesar să aduceți configurația la forma descrisă mai jos. Voi descrie doar directivele vitale ale acestui fișier, nu voi descrie restul, deoarece acest lucru nu este important în acest moment, la urma urmei, avem un subiect de configurare de bază. Aceste setări cu un „diapozitiv” vor fi suficiente pentru dezvoltarea proiectelor la nivel local, nu numai mici, ci și destul de mari. În următoarele articole voi descrie separat fiecare directivă utilizată (așa sunt numite liniile, de exemplu server_name) din acest fișier.

    Vedeți comentariile direct în fișierul de configurare.

    Server (ascultă 80; # portul de ascultare pe nginx nume_server proiect.local; # nume de domeniu legat de rădăcina gazdei virtuale curente /home/stavanger/code/project.local; # director în care se află proiectul, calea către indexul punctului de intrare index. php; # add_header Access-Control-Allow-Origin *; # serviți fișierele statice direct locația ~ * \. (jpg | jpeg | gif | css | png | js | ico | html) $ (access_log off; expiră max; log_not_found off ;) locație / (# add_header Access-Control-Allow-Origin *; try_files $ uri $ uri / /index.php?$query_string;) locație ~ * \ .php $ (try_files $ uri = 404; fastcgi_split_path_info ^ ( . + \ .php) (/.+) $; fastcgi_pass unix: /var/run/php/php7.0-fpm.sock; # activați socketul php-fpm fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; include fastcgi_script_params ) locație ~ /\.ht (nega tot;))
    Salvăm fișierul. Acum trebuie să verificăm dacă există erori în el. Putem face asta ca o echipă.

    Sudo nginx -t
    Dacă vedem astfel de informații ca în captura de ecran, atunci totul este corect pentru noi, putem continua configurarea. Dacă primiți erori, merită să verificați din nou fișierul de configurare.

    Acum trebuie să activăm fișierul de configurare, în directorul / etc / nginx / site-enabled / trebuie să creăm un link simbolic (link simbolic). Dacă ați instalat nginx „de la zero”, atunci în acest director există un link simbolic către fișierul implicit, care a fost descris mai sus, îl puteți șterge dacă nu aveți nevoie de el. Accesați directorul dorit.

    Cd / etc / nginx / site-uri activate /
    Suntem acum în directorul potrivit. Să creăm linkul nostru simbolic. Pentru a-l crea, utilizați comanda ln cu steag-ul -s, apoi vom indica calea către proiectul nostru.config local.

    Sudo ln -s /etc/nginx/sites-available/project.local
    Să aruncăm o privire la linkul simbolic creat de noi.

    Pentru a vă asigura că facem totul corect, executați din nou comanda.

    Fişier gazde

    Acest fișier se află în calea / etc / hosts. Prezența intrărilor în acesta vă permite să rulați nginx folosind localhost ca domeniu. În acest fișier, puteți atribui aliasuri alternative, de exemplu, pentru proiectul nostru project.local, vom atribui domeniul project.local.

    Deschideți fișierul în editorul nano.

    Sudo nano / etc / hosts
    Veți avea alte informații în acest fișier, ignorați-l. Trebuie doar să adăugați o linie ca în captura mea de ecran.

    Instalare php-fpm (>=7.0)

    sudo aptitude instalează php-fpm
    Verificăm versiunea instalată, pentru orice eventualitate, deși în Ubuntu 16.04.1 versiunea 7.0 este în depozite.

    PHP-fpm7.0 -v

    Ne asigurăm că totul este în regulă. Pornim php-fpm.

    Serviciul Sudo php7.0-fpm începe
    Dacă editați configurațiile, atunci nu uitați să reporniți demonul. Așa face. Dar nu avem nevoie de asta.

    Reporniți serviciul Sudo php7.0-fpm
    Aceasta finalizează instalarea și configurarea php-fpm. Adevărat, asta-i tot. Acest lucru nu este magic, calea către socket-ul php-fpm a fost deja scrisă în fișierul de configurare. Desigur, este posibil să aveți nevoie de niște extensii php pentru a vă dezvolta proiectele personale, dar le puteți instala așa cum aveți nevoie.

    Acum să mergem la directorul cu proiectul nostru, îl am pe această cale.

    Cd /home/stavanger/code/project.local
    Să urcăm în director și să facem drepturile 777 (adică vom face toate drepturile asupra directorului cu proiectul nostru.local). În viitor, acest lucru ne va scuti de probleme inutile.

    Cd .. sudo chmod -R 777 proiect.local
    Aceasta completează configurarea software-ului, să creăm un fișier de test în directorul nostru de lucru project.local și să ne asigurăm că totul funcționează. Voi crea un fișier index.php cu conținut ca acesta.

    Mergem la browser și vedem că totul funcționează grozav pentru noi! interpret PHP inclusiv.

    Salutări pentru cititori, Stavanger.

    Serverul web Nginx este unul dintre cele mai populare servere web cu performanțe foarte înalte și procesare rapidă a cererilor statice de la utilizatori. Dacă este configurat corect, puteți obține performanțe foarte ridicate de la acest server web. Nginx este foarte rapid la manipularea fișierelor statice, fie că este vorba de pagini html sau de alte tipuri de resurse.

    Într-unul din articolele anterioare, ne-am gândit deja la stabilirea parametrilor săi principali, în același articol vreau să mă opresc mai mult asupra performanței și pregătirii serverului web pentru utilizare în condiții de luptă. În ceea ce privește distribuția Linux, astăzi vom lua în considerare CentOS, acest sistem este adesea folosit pe servere și pot exista unele dificultăți la configurarea Nginx. În continuare, vom lua în considerare configurarea Nginx CentOS, vom vorbi despre cum să activați suportul complet pentru http2, viteza paginii Google și să configurați fișierul de configurare principal.

    Există Nginx în depozitele oficiale CentOS și cel mai probabil este deja instalat pe sistemul dumneavoastră. Dar dorim ca site-ul să funcționeze pe protocolul http2, care vă permite să transferați toate datele cu o singură conexiune, iar acest lucru crește performanța. Pentru a lucra prin http2, trebuie să configurați un certificat SSL, dar acest lucru este deja acoperit în articolul Obținerea unui certificat Lets Encrypt Nginx. Dar asta nu este tot. Majoritatea browserelor folosesc acum ALPN pentru a trece de la SSL obișnuit la HTTP2.0 și este acceptat începând cu OpenSSL 1.02. În timp ce depozitele au doar OpenSSL 1.01. Prin urmare, trebuie să instalăm versiunea de Nginx construită cu OpenSSL 1.02. Puteți utiliza Broken Repo pentru asta:

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

    Dacă utilizați depozitul EPEL, atunci trebuie să indicați că nu trebuie să luați Nginx din acesta:

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

    Acum, pentru a instala versiunea corectă de Nginx, trebuie doar să tastați:

    sudo yum install nginx

    Va fi instalată cea mai recentă versiune de Nginx 1.13.2, cu suport complet ALPN. În continuare, să trecem la configurare.

    2. Configurarea Nginx

    Primul pas este să luați în considerare structura fișierului de configurare. La prima vedere, totul aici poate părea foarte confuz, dar totul este destul de logic acolo:

    opțiuni globale
    evenimente ()
    http (
    Server (
    Locație ()
    }
    Server ()
    }

    În primul rând, există opțiuni globale care setează parametrii principali ai programului, de exemplu, de la ce utilizator va fi lansat și numărul de procese. Apoi există o secțiune evenimente, care descrie modul în care Nginx va reacționa la conexiunile de intrare, apoi există o secțiune http, care combină toate setările privind funcționarea protocolului http. Conține o secțiune Server, fiecare astfel de secțiune este responsabilă pentru un domeniu separat, secțiunea de server conține secțiuni Locație, fiecare dintre acestea fiind responsabil pentru o anumită adresă URL de solicitare, vă rugăm să rețineți că nu este un fișier de pe server, ca în Apache, ci URL-ul solicitării.

    Vom face setările globale principale în fișierul /etc/nginx/nginx.conf. În continuare, vom lua în considerare ce anume vom schimba și ce valori este de dorit să setăm. Să începem cu opțiunile globale:

    • utilizator- utilizatorul in numele caruia va fi lansat serverul trebuie sa fie proprietarul directorului cu fisierele site-ului, iar php-fpm trebuie sa fie rulat in numele lui;
    • procese_lucrători- numărul de procese Nginx care vor fi lansate, trebuie să instalați exact câte nuclee aveți, de exemplu, eu am 4;
    • worker_cpu_affinity- acest parametru vă permite să atribuiți fiecare proces unui nucleu de procesor separat, să setați valoarea la auto, astfel încât programul însuși să aleagă ce și la ce să atașeze;
    • worker_rlimit_nofile- numărul maxim de fișiere pe care programul le poate deschide, pentru fiecare conexiune aveți nevoie de cel puțin două fișiere și fiecare proces va avea numărul de conexiuni pe care l-ați specificat, deci formula este următoarea: worker_proceses * worker_connections * 2, parametrul conexiuni_lucrători vom analiza putin mai jos;
    • pcre_jit- activați această opțiune pentru a accelera procesarea expresiilor regulate folosind compilarea JIT;

    În secțiunea de evenimente, ar trebui să configurați doi parametri:

    • conexiuni_lucrători- numărul de conexiuni pentru un proces trebuie să fie suficient pentru a gestiona conexiunile de intrare. În primul rând, trebuie să știm câte dintre aceste conexiuni de intrare există, pentru aceasta ne uităm la statisticile de la adresa ip_server / nginx_status. Vom analiza mai jos cum să-l activăm. În linia Active Connections vedem numărul de conexiuni active la server, de asemenea, trebuie să țineți cont de faptul că sunt numărate și conexiunile la php-fpm. În continuare, atenție la câmpurile acceptate și gestionate, primul afișează conexiunile procesate, al doilea - numărul celor acceptate. Valorile trebuie să fie aceleași. Dacă diferă, atunci nu există suficiente conexiuni. Vezi exemple, primul instantaneu este problema, al doilea este ordinea. Pentru configurația mea, cifra optimă poate fi 200 de conexiuni (total 800, având în vedere 4 procese):

    • multi_accept- permite programului sa accepte mai multe conexiuni in acelasi timp, de asemenea, accelereaza munca, cu un numar mare de conexiuni;
    • accept_mutex- setați valoarea acestui parametru la off, astfel încât toate procesele să primească imediat o notificare despre noile conexiuni;

    De asemenea, este recomandat să folosiți directiva use epoll în secțiunea de evenimente, deoarece aceasta este cea mai eficientă metodă de procesare a conexiunilor de intrare pentru Linux, dar această metodă este folosită implicit, așa că nu văd niciun motiv să o adaug manual. Să luăm în considerare încă câțiva parametri din secțiunea http:

    • Trimite fișier- utilizați metoda sendfile de trimitere a datelor. Cea mai eficientă metodă pentru Linux.
    • tcp_nodelay, tcp_nopush- trimite anteturile și corpul cererii într-un singur pachet, funcționează puțin mai rapid;
    • keepalive_timeout- timeout pentru menținerea conexiunii cu clientul, dacă nu aveți scripturi foarte lente, atunci 10 secunde vor fi suficiente, setați valoarea atâta timp cât aveți nevoie pentru ca utilizatorul să poată fi conectat la server;
    • reset_timedout_connection- deconectați-vă după expirarea timpului.
    • open_file_cache- cache informații despre fișierele deschise. De exemplu, open_file_cache max = 200000 inactiv = 120s; max - numărul maxim de fișiere din cache, timpul de stocare în cache.
    • open_file_cache_valid- când trebuie să verificați relevanța fișierelor. De exemplu: open_file_cache_valid 120s;
    • open_file_cache_min_uses- stocați în cache numai fișierele care au fost deschise de numărul specificat de ori;
    • open_file_cache_errors- amintiți-vă erorile de deschidere a fișierelor.
    • dacă_modificată- stabilește modul în care vor fi procesate anteturile if-modified-since. Folosind acest antet, browserul poate primi un răspuns 304 dacă pagina nu s-a schimbat de la ultima dată când a fost vizualizată. Opțiuni posibile - nu trimite - off, trimite dacă ora se potrivește exact - exact, trimite dacă ora se potrivește exact sau mai mult - înainte;

    Iată cum va arăta setarea nginx conf:

    utilizator nginx;
    lucrător_procese 4;
    worker_cpu_affinity auto;
    worker_rlimit_nofile 10000;
    pcre_jit on;

    error_log /var/log/nginx/error.log warn;
    load_module „module / ngx_pagespeed.so”;

    evenimente (
    multi_accept pe;
    accept_mutex dezactivat;
    conexiuni_muncitor 1024;
    }

    sendfile activat;
    tcp_nopush activat;
    tcp_nodelay activat;

    open_file_cache max = 200000 inactiv = 20s;
    open_file_cache_valid 120s;
    open_file_cache_errors activat;

    reset_timedout_connection activat;
    client_body_timeout 10;
    keepalive_timeout 65;

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

    3. Configurarea http2

    Nu voi descrie în detaliu setarea secțiunii de server, deoarece am făcut-o deja în articolul Instalarea Nginx în Ubuntu și nu am nimic de adăugat aici, configurarea SSL este un subiect destul de amplu și va fi discutat și într-un articol separat. . Dar pentru a configura http2 trebuie să aveți deja SSL. Apoi, modificați direct directiva de ascultare din secțiunea serverului dvs.:

    asculta 194.67.215.125:443 default_server;

    ascultați 194.67.215.125:443 http2 default_server;

    Într-un mod atât de simplu, puteți activa http2 dacă versiunea corectă de Nginx a fost instalată înainte.

    4. Setarea Viteza paginii

    Google Pagespeed este un modul Nginx care efectuează diverse optimizări pentru a face paginile să se încarce mai rapid, serverul web să ruleze mai eficient și utilizatorii să simtă mai puțin disconfort. Aceasta include stocarea în cache, optimizarea codului html, optimizarea imaginii, combinarea codului javascript și css și multe altele. Toate acestea se fac la nivel Nginx, deci este mai eficient decât dacă ai face-o în php. Dar există un dezavantaj, modulul elimină antetul Ultima modificare.

    Faptul este că PageSpeed ​​​​setează o linie cache foarte lungă pentru toate fișierele și adaugă hash-ul său la numele fișierului. Deci viteza de încărcare a resurselor este mult mai mare, deoarece browserul va solicita doar fișiere cu un hash nou, iar LastModified este șters, astfel încât utilizatorii să poată vedea modificările dacă se modifică orice fișier. Acum să vedem cum să instalăm modulul. Va trebui să-l construim de la sursă.

    Mai întâi, instalează instrumentele de construcție, este foarte important, dacă nu instalezi, atunci primești o eroare și nu vei ști ce să faci:

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

    Descărcați și despachetați sursele Nginx pentru versiunea dvs., de exemplu, 1.13.3:

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

    Configurarea serverului nginx nu include reconstruirea și înlocuirea programului din depozit, doar folosim aceste surse pentru a construi modulul. Descărcați și despachetați sursele PageSpeed:

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

    Descărcați și despachetați biblioteca de optimizare PageSpeed ​​în folderul sursă al modulului:

    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

    Descărcați și despachetați sursele OpenSSL 1.02:

    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

    Acum trebuie să construim modulul. Mai întâi, să ne uităm la opțiunile cu care este construit actualul Nginx:

    Și acum mergem la folderul cu Nginx, înlocuim toate opțiunile primite, opțiunea --add-dynamic-module pentru PageSpeed, OpenSSL și încercăm să construim:

    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 --cu-http_flv_module --cu-http_gunzip_module --cu-http_gzip_static_module --cu-http_mp4_module --cu-http_random_index_module --cu-http_realip_module --cu-http_secure_link_module --cu_modul_static_ --cu_modul_static_ --http_wit_sub-modul h-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt = "- O2 -g -pipe -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-stable $ (PS_NGX_EXTRA_FLAGS)
    # face

    Dacă totul a fost făcut corect, atunci la ieșire veți primi modulul ngx_pagespeed.so în folderul obj, trebuie să îl copiați în folderul / etc / nginx / modules:

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

    Creați un folder pentru cache:

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

    Acum adăugați o linie ca aceasta pentru a activa modulul în /etc/nginx/nginx.conf:

    load_module „module / ngx_pagespeed.so”;

    Nginx este unul dintre cele mai populare servere web din lume și este folosit pentru a găzdui cele mai mari și mai aglomerate site-uri de pe Internet. Nginx este în majoritatea covârșitoare a cazurilor mai puțin solicitant cu resurse decât Apache; poate fi folosit atât ca server web, cât și ca proxy invers.

    În acest tutorial, vă vom ghida prin procesul de instalare a Nginx pe serverul dumneavoastră Ubuntu 16.04.

    Înainte de instalare

    Înainte de a începe să urmați pașii din acest articol, asigurați-vă că aveți un utilizator obișnuit non-root cu privilegii sudo. Puteți afla cum să configurați un astfel de utilizator pe serverul dvs. de la.

    După ce ați creat un astfel de utilizator, conectați-vă la server folosind numele de utilizator și parola acestuia. Acum sunteți gata să urmați pașii din acest articol.

    Pasul 1: Instalarea serverului web Nginx

    Nginx este disponibil în depozitele standard Ubuntu, așa că instalarea este destul de simplă.

    Deoarece vom folosi apt pentru prima dată în această sesiune, vom începe prin a actualiza lista locală de pachete. În continuare, să instalăm serverul:

    • sudo apt-get update
    • sudo apt-get install nginx

    Ca urmare a executării acestor comenzi, apt-get va instala Nginx și alte pachete necesare funcționării sale pe serverul dumneavoastră.

    Pasul 2: configurarea firewall-ului

    Înainte de a începe să verificăm dacă Nginx funcționează, trebuie să ne configuram firewall-ul pentru a permite accesul la serviciu. În timpul instalării, Nginx se înregistrează cu serviciul firewall ufw. Prin urmare, configurarea accesului este destul de simplă.

    Pentru a afișa setările de acces pentru aplicațiile înregistrate în ufw, introduceți comanda:

    • lista de aplicații sudo ufw

    Ca rezultat al executării acestei comenzi, va fi afișată o listă de profiluri de aplicație:

    Aplicații disponibile: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

    După cum puteți vedea din această ieșire, există trei profiluri configurate pentru Nginx:

    • Nginx plin: Acest profil deschide porturile 80 (trafic web normal, necriptat) și 443 (trafic criptat folosind TLS / SSL).
    • Nginx HTTP: Acest profil deschide doar portul 80 (trafic web normal, necriptat).
    • Nginx HTTPS: Acest profil deschide doar portul 443 (traficul este criptat folosind TLS / SSL).

    Este recomandat să configurați ufw pentru a permite numai traficul pe care doriți să îl permiteți în mod explicit. Deoarece nu am configurat încă SSL pentru serverul nostru, în acest articol vom permite traficul doar pe portul 80.

    Acest lucru se poate face cu următoarea comandă:

    • sudo ufw permite „Nginx HTTP”

    Puteți verifica modificările introducând comanda:

    • sudo ufw status

    Ca rezultat, ar trebui să fie afișată următoarea ieșire:

    Stare: activ Pentru acțiune de la - ------ ---- OpenSSH ALLOW oriunde Nginx HTTP ALLOW oriunde OpenSSH (v6) ALLOW oriunde (v6) Nginx HTTP (v6) ALLOW oriunde (v6)

    Pasul 3: Verificarea serverului web funcționează

    Odată ce procesul de instalare este finalizat, Ubuntu 16.04 va lansa automat Nginx. Prin urmare, serverul web ar trebui să ruleze deja.

    Putem verifica acest lucru rulând următoarea comandă:

    • starea systemctl nginx
    ● nginx.service - Un server web de înaltă performanță și un server proxy invers Încărcat: încărcat (/lib/systemd/system/nginx.service; activat; prestabilit furnizor: activat) Activ: activ (în rulare) de luni 18-04-2016 16:14:00 EDT; 4min 2s în urmă PID principal: 12857 (nginx) CGroup: /system.slice/nginx.service ├─12857 nginx: proces principal / usr / sbin / nginx -g daemon activat; master_process pe └─12858 nginx: proces de lucru

    După cum puteți vedea din rezultatul de mai sus, serviciul este în funcțiune. Cu toate acestea, ne vom asigura că este pe deplin funcțional prin solicitarea unei pagini web.

    Pentru a face acest lucru, putem verifica dacă este afișată pagina web Nginx, care este disponibilă implicit când introduceți numele domeniului sau adresa IP a serverului.

    Dacă nu doriți să configurați un nume de domeniu pentru serverul dvs., puteți utiliza adresa IP publică a serverului dvs. Dacă nu cunoașteți adresa IP publică a serverului, puteți găsi această adresă IP cu următoarea comandă:

    • adresă ip arată eth0 | grep inet | awk „(tipărește 2 $;)” | sed "s /\/.*$//"

    Ca urmare, vor fi afișate mai multe adrese IP. Încercați să le lipiți pe fiecare în browser.

    O altă modalitate de a vă determina adresa IP este să verificați cum este vizibil serverul dvs. de pe Internet:

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

    Introduceți adresa IP sau numele domeniului obținut în browserul dvs. web. Ar trebui să vedeți pagina Nginx implicită.

    Http: // nume_domeniu_sau_adresă_IP

    Dacă vedeți o pagină similară în browser, ați instalat cu succes Nginx.

    Pasul 4: Gestionarea procesului Nginx

    Acum că Nginx este instalat și am verificat că funcționează, să aruncăm o privire la câteva comenzi de bază pentru gestionarea serverului nostru web.

    Pentru a opri serverul web, utilizați comanda:

    • sudo systemctl stop nginx

    Pentru a porni un server web oprit, tastați:

    • sudo systemctl start nginx

    Puteți folosi următoarea comandă pentru a reporni serverul web:

    • sudo systemctl reporniți nginx

    Dacă faceți modificări în configurația Nginx, o puteți reporni adesea fără a închide conexiunile. Pentru a face acest lucru, puteți utiliza următoarea comandă:

    • sudo systemctl reîncărcați nginx

    În mod implicit, Nginx este configurat să pornească automat când serverul pornește. Dacă nu aveți nevoie de acest comportament al serverului web, îl puteți dezactiva cu următoarea comandă:

    • sudo systemctl dezactivează nginx

    Pentru a reactiva Nginx să pornească la pornirea serverului, introduceți:

    • sudo systemctl enable nginx

    Pasul 5: Fișiere și directoare esențiale Nginx

    Acum că cunoaștem comenzile de bază pentru gestionarea serverului web, să aruncăm o privire la directoarele și fișierele principale.

    Conţinut

    • / var / www / html: conținutul web, care în mod implicit constă doar din pagina de testare Nginx pe care am văzut-o mai devreme, se află în directorul / var / www / html. Calea către acest director poate fi configurată în fișierele de configurare Nginx.

    Configurare server

    • / etc / nginx: directorul de configurare Nginx. Toate fișierele de configurare Nginx se află în acest director.
    • /etc/nginx/nginx.conf: fișierul principal de configurare Nginx. Acest fișier este folosit pentru a face modificări la configurația globală Nginx.
    • / etc / nginx / site-available: directorul care stochează „blocurile de server” pentru fiecare site (blocurile de server sunt aproximativ echivalente cu gazdele virtuale din Apache). Nginx nu va folosi fișierele de configurare din acest director dacă nu au linkuri corespunzătoare în directorul activat pentru site-uri (vezi mai jos). De obicei, toate setările blocului de server sunt făcute în acest director, iar apoi site-ul este activat prin crearea unui link în alt director.
    • / etc / nginx / site-enabled /: acest director stochează blocuri de server pentru site-urile activate. Acest lucru se realizează de obicei prin conectarea la profilurile de configurare a site-ului situate în directorul site-uri disponibile.
    • / etc / nginx / snippets: acest director stochează fragmente de configurare care pot fi folosite la configurarea oricărui site. Fragmentele de configurare care pot fi utilizate în mai multe fișiere de configurare sunt candidați excelente pentru crearea acestor fragmente.

    Jurnalele serverului

    • /var/log/nginx/access.log: Fiecare cerere către serverul dvs. web este înregistrată în acest fișier jurnal, dacă nu se specifică altfel de setările Nginx.
    • /var/log/nginx/error.log: Orice erori Nginx vor fi înregistrate în acest fișier.

    Concluzie

    Acum că aveți un server web instalat și configurat, puteți alege ce conținut să le difuzați utilizatorilor și ce alte tehnologii puteți utiliza în plus față de serverul web.

    Top articole similare