Cum se instalează Nginx, MariaDB 10, PHP 7 (LEMP Stack) în 16.10/16.04


Stiva LEMP este un acronim care reprezintă un grup de pachete (OS Linux, server web Nginx, bază de date MySQL\MariaDB și limbaj de programare dinamică pe server PHP) care sunt utilizate pentru a implementa aplicații web dinamice și pagini web.

Acest tutorial vă va ghida despre cum să instalați o stivă LEMP cu MariaDB 10, PHP 7 și HTTP 2.0 Suport pentru Nginx pe edițiile pentru server/desktop Ubuntu 16.10 și Ubuntu 16.04.

Cerințe

  1. Instalarea Ubuntu 16.04 Server Edition [instrucțiunile funcționează și pe Ubuntu 16.10]

Pasul 1: Instalați serverul web Nginx

1. Nginx este un server web modern și eficient din punct de vedere al resurselor, folosit pentru a afișa pagini web vizitatorilor de pe internet. Vom începe prin a instala serverul web Nginx din depozitele oficiale Ubuntu utilizând linia de comandă apt.

sudo apt-get install nginx

2. Apoi, lansați comenzile netstat și systemctl pentru a confirma dacă Nginx este pornit și se leagă pe portul 80.

netstat -tlpn

sudo systemctl status nginx.service

Odată ce aveți confirmarea că serverul este pornit, puteți deschide un browser și puteți naviga la adresa IP a serverului sau înregistrarea DNS folosind protocolul HTTP pentru a vizita pagina web implicită Nginx.

http://IP-Address

Pasul 2: Activați protocolul Nginx HTTP/2.0

3. Protocolul HTTP/2.0 care este construit implicit în cea mai recentă versiune a binarelor Nginx pe Ubuntu 16.04 funcționează numai împreună cu SSL și promite o îmbunătățire uriașă a vitezei de încărcare a paginilor web SSL.

Pentru a activa protocolul în Nginx pe Ubuntu 16.04, mai întâi navigați la fișierele de configurare ale site-urilor disponibile Nginx și faceți backup pentru fișierul de configurare implicit lansând comanda de mai jos.

cd /etc/nginx/sites-available/
sudo mv default default.backup

4. Apoi, folosind un editor de text, creați o nouă pagină implicită cu instrucțiunile de mai jos:

server {
        listen 443 ssl http2 default_server;
        listen [::]:443 ssl http2 default_server;

        root /var/www/html;

        index index.html index.htm index.php;

        server_name 192.168.1.13;

        location / {
                try_files $uri $uri/ =404;
        }

        ssl_certificate /etc/nginx/ssl/nginx.crt;
        ssl_certificate_key /etc/nginx/ssl/nginx.key;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
        ssl_dhparam  /etc/nginx/ssl/dhparam.pem;
        ssl_session_cache shared:SSL:20m;
        ssl_session_timeout 180m;
        resolver 8.8.8.8 8.8.4.4;
        add_header Strict-Transport-Security "max-age=31536000;
        #includeSubDomains" always;


        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }

}

server {
       listen         80;
       listen    [::]:80;
       server_name    192.168.1.13;
       return         301 https://$server_name$request_uri;
}

Fragmentul de configurare de mai sus permite utilizarea HTTP/2.0 prin adăugarea parametrului http2 la toate directivele de ascultare SSL.

De asemenea, ultima parte a fragmentului inclus în directiva serverului este folosită pentru a redirecționa tot traficul non-SSL către gazda implicită SSL/TLS. De asemenea, înlocuiți directiva server_name pentru a se potrivi cu propria dvs. adresă IP sau înregistrare DNS (de preferință FQDN).

5. După ce ați terminat de editat fișierul de configurare implicit Nginx cu setările de mai sus, generați și enumerați fișierul certificat SSL și cheia executând comenzile de mai jos.

Completați certificatul cu propriile setări personalizate și acordați atenție setării Nume comun pentru a se potrivi cu înregistrarea dvs. FQDN DNS sau adresa IP a serverului care va fi folosită pentru a accesa pagina web.

sudo mkdir /etc/nginx/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
ls /etc/nginx/ssl/

6. De asemenea, creați un cifr DH puternic, care a fost modificat în fișierul de configurare de mai sus pe linia de instrucțiuni ssl_dhparam, lansând comanda de mai jos:

sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

7. Odată ce cheia Diffie-Hellman a fost creată, verificați dacă fișierul de configurare Nginx este scris corect și poate fi aplicat de serverul web Nginx și reporniți demonul pentru a reflecta modificările prin rulează comenzile de mai jos.

sudo nginx -t
sudo systemctl restart nginx.service

8. Pentru a testa dacă Nginx utilizează protocolul HTTP/2.0, emiteți comanda de mai jos. Prezența protocolului h2 anunțat confirmă că Nginx a fost configurat cu succes pentru a utiliza protocolul HTTP/2.0. Toate browserele moderne și actualizate ar trebui să accepte acest protocol în mod implicit.

openssl s_client -connect localhost:443 -nextprotoneg ''

Pasul 3: Instalați PHP 7 Interpreter

Nginx poate fi folosit cu interpretul limbajului de procesare dinamic PHP pentru a genera conținut web dinamic cu ajutorul managerului de proces FastCGI obținut prin instalarea pachetului binar php-fpm din depozitele oficiale Ubuntu.

9. Pentru a prelua PHP7.0 și pachetele suplimentare care vor permite PHP să comunice cu serverul web Nginx, lansați comanda de mai jos pe consola serverului dvs.:

sudo apt install php7.0 php7.0-fpm 

10. Odată ce interpretul PHP7.0 a fost instalat cu succes pe computerul dvs., porniți și verificați demonul php7.0-fpm lansând următorul comanda:

sudo systemctl start php7.0-fpm
sudo systemctl status php7.0-fpm

11. Fișierul de configurare actual al Nginx este deja configurat pentru a utiliza managerul de procese PHP FastCGI pentru a server conținut dinamic.

Blocul de server care permite Nginx să utilizeze interpretul PHP este prezentat în fragmentul de mai jos, astfel încât nu sunt necesare alte modificări ale fișierului de configurare implicit Nginx.

location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

Mai jos este o captură de ecran cu instrucțiunile de care aveți nevoie pentru a anula comentariile și pentru a modifica cazul unui fișier de configurare implicit Nginx original.

12. Pentru a testa relația serverului web Nginx cu managerul de proces PHP FastCGI, creați un fișier de configurare de testare PHP info.php lansând comanda de mai jos și verificați setările vizitând acest fișier de configurare folosind adresa de mai jos: http://IP_or domain/info.php.

sudo su -c 'echo "<?php phpinfo(); ?>" |tee /var/www/html/info.php'

De asemenea, verificați dacă protocolul HTTP/2.0 este anunțat de server prin localizarea liniei $_SERVER[‘SERVER_PROTOCOL’] pe blocul Variabile PHP, așa cum este ilustrat în captura de ecran de mai jos.

13. Pentru a instala module PHP7.0 suplimentare, utilizați comanda apt search php7.0 pentru a găsi un modul PHP și a-l instala.

De asemenea, încercați să instalați următoarele module PHP, care vă pot fi utile în cazul în care intenționați să instalați WordPress sau alt CMS.

sudo apt install php7.0-mcrypt php7.0-mbstring

14. Pentru a înregistra modulele suplimentare PHP, trebuie doar să reporniți demonul PHP-FPM lansând comanda de mai jos.

sudo systemctl restart php7.0-fpm.service

Pasul 4: Instalați baza de date MariaDB

15. În cele din urmă, pentru a finaliza stiva noastră LEMP avem nevoie de componenta de bază de date MariaDB pentru a stoca și gestiona datele site-ului web.

Instalați sistemul de gestionare a bazei de date MariaDB rulând comanda de mai jos și reporniți serviciul PHP-FPM pentru a utiliza modulul MySQL pentru a accesa baza de date.

sudo apt install mariadb-server mariadb-client php7.0-mysql
sudo systemctl restart php7.0-fpm.service

16. Pentru a securiza instalarea MariaDB, rulați scriptul de securitate furnizat de pachetul binar din depozitele Ubuntu, care vă va cere să setați o parolă root, să eliminați utilizatorii anonimi, să dezactivați autentificarea root de la distanță și să eliminați baza de date de testare.

Rulați scriptul lansând comanda de mai jos și răspundeți la toate întrebările cu da. Utilizați captura de ecran de mai jos ca ghid.

sudo mysql_secure_installation

17. Pentru a configura MariaDB astfel încât utilizatorii obișnuiți să poată accesa baza de date fără privilegii de sistem sudo, accesați interfața de linie de comandă MySQL cu privilegii root și rulați comenzile de mai jos pe interpretul MySQL:

sudo mysql 
MariaDB> use mysql;
MariaDB> update user set plugin=’‘ where User=’root’;
MariaDB> flush privileges;
MariaDB> exit

În cele din urmă, conectați-vă la baza de date MariaDB și rulați o comandă arbitrară fără privilegii de root executând comanda de mai jos:

mysql -u root -p -e 'show databases'

Asta e tot! Acum aveți o stivă LEMP configurată pe serverul Ubuntu 16.10 și Ubuntu 16.04 care vă permite să implementați aplicații web dinamice complexe care pot interacționa cu bazele de date.