Kif Tinstalla Nginx, MariaDB 10, PHP 7 (LEMP Stack) f'16.10/16.04


Il-munzell LEMP huwa akronimu li jirrappreżenta huwa grupp ta 'pakketti (Linux OS, Nginx web server, MySQL\MariaDB database u PHP server-side programmar dinamiku lingwa) li huma wżati biex jintużaw applikazzjonijiet web dinamiċi u paġni web.

Dan it-tutorja jiggwidak dwar kif tinstalla munzell LEMP b'Sostenn MariaDB 10, PHP 7 u HTTP 2.0 għal Nginx fuq Ubuntu 16.10 u Ubuntu 16.04 server/edizzjonijiet desktop.

  1. Installazzjoni ta' Ubuntu 16.04 Server Edition [l-istruzzjonijiet jaħdmu wkoll fuq Ubuntu 16.10]

Pass 1: Installa l-Nginx Web Server

1. Nginx huwa server tal-web modern u effiċjenti fir-riżorsi użat biex juri paġni tal-web lill-viżitaturi fuq l-internet. Nibdew billi ninstallaw is-server tal-web Nginx minn repożitorji uffiċjali ta 'Ubuntu billi nużaw il-linja ta' kmand apt.

$ sudo apt-get install nginx

2. Sussegwentement, ħarġet il-kmandi systemctl sabiex tikkonferma jekk Nginx jinbedax u jorbotx fuq il-port 80.

$ netstat -tlpn
$ sudo systemctl status nginx.service

Ladarba jkollok il-konferma li s-server jinbeda tista 'tiftaħ browser u tinnaviga lejn l-indirizz IP tas-server tiegħek jew ir-rekord DNS billi tuża protokoll HTTP sabiex iżżur il-paġna web default ta' Nginx.

http://IP-Address

Pass 2: Ippermetti Nginx HTTP/2.0 Protokoll

3. Il-protokoll HTTP/2.0 li huwa mibni b'mod awtomatiku fl-aħħar rilaxx tal-binarji Nginx fuq Ubuntu 16.04 jaħdem biss flimkien ma 'SSL u jwiegħed titjib kbir fil-veloċità fit-tagħbija tal-paġni tal-web SSL tal-web.

Biex tippermetti l-protokoll f'Nginx fuq Ubuntu 16.04, l-ewwel innaviga lejn il-fajls ta 'konfigurazzjoni tas-siti disponibbli ta' Nginx u tagħmel backup tal-fajl ta 'konfigurazzjoni default billi toħroġ il-kmand ta' hawn taħt.

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

4. Imbagħad, billi tuża editur tat-test, oħloq paġna awtomatika ġdida bl-istruzzjonijiet hawn taħt:

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

Is-snippet tal-konfigurazzjoni ta' hawn fuq jippermetti l-użu ta' HTTP/2.0 billi żżid il-parametru http2 mad-direttivi kollha ta' smigħ SSL.

Ukoll, l-aħħar parti tas-silta mehmuża fid-direttiva tas-server tintuża biex tindirizza mill-ġdid it-traffiku kollu mhux SSL għall-host default SSL/TLS. Ukoll, ibdel id-direttiva server_name biex taqbel mal-indirizz tal-IP jew ir-rekord DNS tiegħek (FQDN preferibbilment).

5. Ladarba lestejt editja l-fajl tal-konfigurazzjoni default Nginx bis-settings ta 'hawn fuq, iġġenera u elenka l-fajl u ċ-ċavetta taċ-ċertifikat SSL billi tesegwixxi l-kmandi ta' hawn taħt.

Imla ċ-ċertifikat bl-issettjar tad-dwana tiegħek stess u oqgħod attent għall-issettjar tal-Isem Komuni biex taqbel ir-rekord DNS FQDN tiegħek jew l-indirizz IP tas-server tiegħek li se jintuża biex jaċċessa l-paġna 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. Ukoll, oħloq ċifra DH b'saħħitha, li nbidlet fuq il-fajl ta 'konfigurazzjoni ta' hawn fuq fuq il-linja ta 'struzzjoni ssl_dhparam, billi toħroġ il-kmand hawn taħt:

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

7. Ladarba ċ-ċavetta Diffie-Hellman tkun inħolqot, ivverifika jekk il-fajl tal-konfigurazzjoni Nginx huwiex miktub b'mod korrett u jistax jiġi applikat mis-server tal-web Nginx u jerġa 'jibda d-daemon biex jirrifletti l-bidliet billi tħaddem il-kmandi ta' hawn taħt.

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

8. Sabiex jiġi ttestjat jekk Nginx jużax il-protokoll HTTP/2.0 ħruġ il-kmand hawn taħt. Il-preżenza tal-protokoll reklamat h2 tikkonferma li Nginx ġie kkonfigurat b'suċċess biex juża protokoll HTTP/2.0. Il-browsers moderni kollha aġġornati għandhom jappoġġjaw dan il-protokoll b'mod awtomatiku.

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

Pass 3: Installa PHP 7 Interprete

Nginx jista 'jintuża ma' interpretu tal-lingwa tal-ipproċessar dinamiku PHP biex jiġġenera kontenut tal-web dinamiku bl-għajnuna tal-maniġer tal-proċess FastCGI miksub bl-installazzjoni tal-pakkett binarju php-fpm minn repożitorji uffiċjali ta 'Ubuntu.

9. Sabiex taqbad PHP7.0 u l-pakketti addizzjonali li jippermettu lill-PHP jikkomunika mas-server tal-web Nginx ħarġet il-kmand hawn taħt fuq il-console tas-server tiegħek:

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

10. Ladarba l-interpretu PHP7.0 ikun ġie installat b'suċċess fuq il-magna tiegħek, ibda u iċċekkja php7.0-fpm daemon billi toħroġ il-kmand hawn taħt:

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

11. Il-fajl tal-konfigurazzjoni attwali ta 'Nginx huwa diġà kkonfigurat biex juża l-maniġer tal-proċess PHP FastCGI sabiex il-kontenut dinamiku tas-server.

Il-blokk tas-server li jippermetti lil Nginx juża l-interpretu PHP huwa ppreżentat fis-silta ta’ hawn taħt, għalhekk m’hemmx bżonn ta’ aktar modifiki tal-fajl tal-konfigurazzjoni Nginx default.

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

Hawn taħt hawn screenshot ta 'liema istruzzjonijiet għandek bżonn biex tneħħi l-kumment u timmodifika l-każ ta' fajl ta 'konfigurazzjoni default oriġinali ta' Nginx.

12. Biex tittestja r-relazzjoni tas-server tal-web Nginx mal-maniġer tal-proċess PHP FastCGI oħloq fajl ta' konfigurazzjoni tat-test PHP info.php billi toħroġ il-kmand ta' hawn taħt u tivverifika s-settings billi żżur dan il-fajl ta' konfigurazzjoni billi tuża l-indirizz hawn taħt: http://IP_or domain/info.php.

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

Iċċekkja wkoll jekk il-protokoll HTTP/2.0 huwiex reklamat mis-server billi jsib il-linja $_SERVER[‘SERVER_PROTOCOL’] fuq il-blokk ta’ Varjabbli PHP kif muri fuq il-screenshot ta’ hawn taħt.

13. Sabiex tinstalla moduli PHP7.0 żejda uża l-kmand apt search php7.0 biex issib modulu PHP u tinstallah.

Ukoll, ipprova tinstalla l-moduli PHP li ġejjin li jistgħu jkunu utli f'każ li tkun qed tippjana li tinstalla WordPress jew CMS oħra.

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

14. Biex tirreġistra l-moduli żejda PHP sempliċement ibda mill-ġdid PHP-FPM daemon billi toħroġ il-kmand hawn taħt.

$ sudo systemctl restart php7.0-fpm.service

Pass 4: Installa MariaDB Database

15. Fl-aħħarnett, sabiex tlesti l-munzell LEMP tagħna neħtieġu l-komponent tad-database MariaDB biex jaħżen u jimmaniġġja d-dejta tal-websajt.

Installa s-sistema ta 'ġestjoni tad-database MariaDB billi tħaddem il-kmand ta' hawn taħt u terġa 'tibda s-servizz PHP-FPM sabiex tuża l-modulu MySQL biex taċċessa d-database.

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

16. Biex tiżgura l-installazzjoni ta 'MariaDB, mexxi l-iskrittura tas-sigurtà pprovduta mill-pakkett binarju mir-repożitorji ta' Ubuntu li jistaqsik issettja password ta 'l-għeruq, neħħi utenti anonimi, tiddiżattiva l-login ta' l-għeruq mill-bogħod u neħħi d-database tat-test.

Mexxi l-iskript billi toħroġ il-kmand hawn taħt u wieġeb il-mistoqsijiet kollha b'iva. Uża l-screenshot hawn taħt bħala gwida.

$ sudo mysql_secure_installation

17. Biex tikkonfigura MariaDB sabiex l-utenti ordinarji jkunu jistgħu jaċċessaw id-database mingħajr privileġġi sudo tas-sistema, mur fuq l-interface tal-linja tal-kmand MySQL bi privileġġi tal-għeruq u mexxi l-kmandi hawn taħt fuq l-interpretu MySQL:

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

Fl-aħħarnett, idħol fid-database MariaDB u mexxi kmand arbitrarju mingħajr privileġġi ta 'l-għeruq billi tesegwixxi l-kmand ta' hawn taħt:

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

Dak kollu! Issa għandek munzell LEMP ikkonfigurat fuq Ubuntu 16.10 u Ubuntu 16.04 server li jippermettilek li tuża applikazzjonijiet tal-web dinamiċi kumplessi li jistgħu jinteraġixxu ma 'databases.