Nginxi, MariaDB 10, PHP 7 (LEMP-i virna) installimine 16.10/16.04


LEMP-pinu on akronüüm, mis tähistab rühma pakette (Linux OS, Nginx veebiserver, MySQL\MariaDB andmebaas ja PHP serveripoolne dünaamiline programmeerimiskeel), mida kasutatakse dünaamiliste veebirakenduste ja veebilehtede juurutamiseks.

See õpetus aitab teil installida LEMP-virna koos MariaDB 10, PHP 7 ja HTTP 2.0 Nginxi toega Ubuntu 16.10 ja Ubuntu 16.04 serveri/töölaua väljaannetele.

  1. Ubuntu 16.04 Server Editioni installimine [juhised töötavad ka Ubuntu 16.10 puhul]

1. samm: installige Nginxi veebiserver

1. Nginx on kaasaegne ja ressursitõhus veebiserver, mida kasutatakse veebilehtede kuvamiseks külastajatele Internetis. Alustame Nginxi veebiserveri installimisega Ubuntu ametlikest hoidlatest apt-käsurea abil.

$ sudo apt-get install nginx

2. Järgmisena väljastage käsud systemctl, et veenduda, kas Nginx on käivitatud ja seob porti 80.

$ netstat -tlpn
$ sudo systemctl status nginx.service

Kui olete kinnitanud, et server on käivitatud, saate Nginxi vaikeveebilehe külastamiseks avada brauseri ja navigeerida HTTP-protokolli abil oma serveri IP-aadressile või DNS-kirjele.

http://IP-Address

2. samm: lubage Nginx HTTP/2.0 protokoll

3. HTTP/2.0 protokoll, mis on vaikimisi loodud Ubuntu 16.04 Nginxi binaarsete failide viimases versioonis, töötab ainult koos SSL-iga ja lubab veebi SSL-veebilehtede laadimisel tohutult kiirust parandada.

Protokolli lubamiseks Nginxis Ubuntu 16.04-s navigeerige esmalt Nginxi saadaolevate saitide konfiguratsioonifailidest ja varundage vaikekonfiguratsioonifail, väljastades alloleva käsu.

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

4. Seejärel looge tekstiredaktori abil uus vaikeleht järgmiste juhistega:

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;
}

Ülaltoodud konfiguratsioonijupp võimaldab HTTP/2.0 kasutamist, lisades parameetri http2 kõigile SSL-i kuulamisdirektiividele.

Samuti kasutatakse serveri direktiiviga lisatud väljavõtte viimast osa kogu SSL-välise liikluse suunamiseks SSL/TLS-i vaikimisserverile. Samuti asendage direktiiv server_name , et see vastaks teie enda IP-aadressile või DNS-kirjele (eelistatavalt FQDN).

5. Kui olete lõpetanud Nginxi vaikekonfiguratsioonifaili redigeerimise ülaltoodud sätetega, genereerige ja loetlege SSL-sertifikaadi fail ja võti, käivitades järgmised käsud.

Täitke sertifikaat oma kohandatud sätetega ja pöörake tähelepanu ühise nime seadele, et see vastaks teie DNS-i FQDN-kirjele või serveri IP-aadressile, mida kasutatakse veebisaidile juurdepääsemiseks.

$ 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. Looge ka tugev DH-kood, mida muudeti ülaltoodud konfiguratsioonifailis käsureal ssl_dhparam , väljastades järgmise käsu:

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

7. Kui Diffie-Hellmani võti on loodud, kontrollige, kas Nginxi konfiguratsioonifail on õigesti kirjutatud ja kas Nginxi veebiserver saab seda rakendada, ja taaskäivitage deemon muudatuste kajastamiseks allpool olevate käskude abil.

$ sudo nginx -t
$ sudo systemctl restart nginx.service

8. Selleks, et testida, kas Nginx kasutab HTTP/2.0 protokolli, väljastage järgmine käsk. Reklaamitud protokolli h2 olemasolu kinnitab, et Nginx on edukalt konfigureeritud HTTP/2.0 protokolli kasutamiseks. Kõik kaasaegsed ajakohased brauserid peaksid seda protokolli vaikimisi toetama.

$ openssl s_client -connect localhost:443 -nextprotoneg ''

3. samm: installige PHP 7 tõlk

Nginxit saab kasutada koos PHP dünaamilise töötluskeele interpretaatoriga dünaamilise veebisisu genereerimiseks FastCGI protsessihalduri abil, mis on saadud Ubuntu ametlikest hoidlatest binaarpaketi php-fpm installimisel.

9. PHP7.0 ja täiendavate pakettide haaramiseks, mis võimaldavad PHP-l Nginxi veebiserveriga suhelda, väljastage oma serverikonsoolis järgmine käsk:

$ sudo apt install php7.0 php7.0-fpm 

10. Kui PHP7.0 tõlk on teie arvutisse edukalt installitud, käivitage ja kontrollige deemonit php7.0-fpm, väljastades järgmise käsu:

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

11. Nginxi praegune konfiguratsioonifail on juba konfigureeritud kasutama PHP FastCGI protsessihaldurit dünaamilise sisu serveerimiseks.

Serveriplokk, mis võimaldab Nginxil kasutada PHP-tõlki, on toodud allolevas väljavõttes, seega pole Nginxi vaikimisi konfiguratsioonifaili täiendavaid muudatusi vaja.

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

Allpool on ekraanipilt sellest, milliseid juhiseid peate kommenteerimata jätma ja muutma, kui tegemist on algse Nginxi vaikekonfiguratsioonifailiga.

12. Nginxi veebiserveri seose testimiseks PHP FastCGI protsessihalduriga looge PHP info.php testi konfiguratsioonifail, väljastades alloleva käsu, ja kontrollige sätteid, külastades seda konfiguratsioonifaili alloleva aadressi abil: http:// IP_või domeen/info.php .

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

Samuti kontrollige, kas server reklaamib HTTP/2.0-protokolli, otsides PHP-muutujate plokist rea $_SERVER [’SERVER_PROTOCOL’] , nagu on näidatud alloleval ekraanipildil.

13. Lisamoodulite PHP7.0 installimiseks kasutage PHP mooduli leidmiseks ja installimiseks käsku apt search php7.0 .

Proovige installida ka järgmised PHP-moodulid, mis võivad olla kasulikud juhul, kui plaanite installida WordPressi või muud CMS-i.

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

14. PHP lisamoodulite registreerimiseks taaskäivitage PHP-FPM deemon, väljastades alltoodud käsu.

$ sudo systemctl restart php7.0-fpm.service

4. samm: installige MariaDB andmebaas

15. Lõpuks vajame oma LEMP-virna lõpuleviimiseks veebisaidi andmete salvestamiseks ja haldamiseks MariaDB andmebaasikomponenti.

Paigaldage MariaDB andmebaasihaldussüsteem, käivitades alloleva käsu, ja taaskäivitage teenus PHP-FPM, et andmebaasile juurdepääsuks kasutada MySQL-moodulit.

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

16. MariaDB installi turvalisuse tagamiseks käivitage Ubuntu hoidlatest binaarpaketi pakutav turbeskript, mis palub teil määrata juurparooli, eemaldada anonüümsed kasutajad, keelata juurte sisselogimine kaugelt ja eemaldada testandmebaas.

Käivitage skript, väljastades alloleva käsu ja vastake kõigile küsimustele yes -ga. Kasutage juhendina allolevat ekraanipilti.

$ sudo mysql_secure_installation

17. MariaDB konfigureerimiseks nii, et tavakasutajad saaksid andmebaasile juurde pääseda ilma süsteemi sudoõigusteta, minge MySQL-i käsurealiidesesse koos juurõigustega ja käivitage MySQL-i tõlgi juures järgmised käsud:

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

Lõpuks logige sisse MariaDB andmebaasi ja käivitage meelevaldne käsk ilma juurõigusteta, käivitades järgmise käsu:

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

See kõik! Nüüd on teil Ubuntu 16.10 ja Ubuntu 16.04 serveris konfigureeritud LEMP-pinu, mis võimaldab teil juurutada keerukaid dünaamilisi veebirakendusi, mis saavad andmebaasidega suhelda.