Kaip įdiegti Nginx, MariaDB 10, PHP 7 (LEMP Stack) 16.10/16.04


LEMP yra akronimas, kuris reiškia paketų grupę (Linux OS, Nginx žiniatinklio serveris, MySQL\MariaDB duomenų bazė ir PHP serverio dinaminio programavimo kalba), kurie naudojami diegti dinamines žiniatinklio programas ir internetiniai puslapiai.

Šioje pamokoje sužinosite, kaip įdiegti LEMP krūvą su MariaDB 10, PHP 7 ir HTTP 2.0 palaikymu Nginx Ubuntu 16.10 ir Ubuntu 16.04 serverio/darbalaukio leidimuose.

Reikalavimai

  1. „Ubuntu 16.04 Server Edition“ diegimas [instrukcijos taip pat veikia Ubuntu 16.10]

1 veiksmas: įdiekite „Nginx“ žiniatinklio serverį

1. „Nginx“ yra modernus ir išteklius efektyvus žiniatinklio serveris, naudojamas tinklalapiams rodyti lankytojams internete. Pradėsime diegdami „Nginx“ žiniatinklio serverį iš oficialių „Ubuntu“ saugyklų naudodami apt komandinę eilutę.

sudo apt-get install nginx

2. Tada išduokite komandas netstat ir systemctl, kad patikrintumėte, ar Nginx paleistas ir susieja su prievadu 80.

netstat -tlpn

sudo systemctl status nginx.service

Kai patvirtinsite, kad serveris paleistas, galite atidaryti naršyklę ir pereiti prie serverio IP adreso arba DNS įrašo naudodami HTTP protokolą, kad apsilankytumėte numatytajame „Nginx“ tinklalapyje.

http://IP-Address

2 veiksmas: įgalinkite Nginx HTTP/2.0 protokolą

3. Protokolas HTTP/2.0, kuris pagal numatytuosius nustatymus sukurtas naujausiame Nginx dvejetainių failų leidime Ubuntu 16.04, veikia tik kartu su SSL ir žada didžiulį greitį įkeliant žiniatinklio SSL tinklalapius.

Norėdami įgalinti Nginx protokolą Ubuntu 16.04, pirmiausia eikite į pasiekiamus Nginx svetainių konfigūracijos failus ir sukurkite numatytojo konfigūracijos failo atsarginę kopiją, išleisdami toliau pateiktą komandą.

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

4. Tada naudodami teksto rengyklę sukurkite naują numatytąjį puslapį su toliau pateiktomis instrukcijomis:

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

Aukščiau pateiktas konfigūracijos fragmentas leidžia naudoti HTTP/2.0, pridedant parametrą http2 prie visų SSL klausymo direktyvų.

Be to, paskutinė ištraukos dalis, įtraukta į serverio direktyvą, naudojama visam ne SSL srautui nukreipti į numatytąjį SSL/TLS pagrindinį kompiuterį. Be to, pakeiskite direktyvą serverio_pavadinimas, kad ji atitiktų jūsų IP adresą arba DNS įrašą (geriausia FQDN).

5. Baigę redaguoti numatytąjį Nginx konfigūracijos failą su anksčiau nurodytais parametrais, sugeneruokite ir įtraukite į sąrašą SSL sertifikato failą ir raktą vykdydami toliau pateiktas komandas.

Užpildykite sertifikatą savo tinkintais nustatymais ir atkreipkite dėmesį į Bendrojo pavadinimo nustatymą, kad atitiktų jūsų DNS FQDN įrašą arba serverio IP adresą, kuris bus naudojamas norint pasiekti tinklalapį.

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. Be to, sukurkite stiprų DH šifrą, kuris buvo pakeistas aukščiau esančiame konfigūracijos faile ssl_dhparam instrukcijos eilutėje, išduodami toliau nurodytą komandą:

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

7. Sukūrę Diffie-Hellman raktą, patikrinkite, ar „Nginx“ konfigūracijos failas parašytas teisingai ir ar jį gali pritaikyti „Nginx“ žiniatinklio serveris, ir iš naujo paleiskite demoną, kad atspindėtų pakeitimus paleisdami toliau pateiktas komandas.

sudo nginx -t
sudo systemctl restart nginx.service

8. Norėdami patikrinti, ar Nginx naudoja HTTP/2.0 protokolą, išduokite toliau pateiktą komandą. Reklamuojamo h2 protokolo buvimas patvirtina, kad Nginx sėkmingai sukonfigūruotas naudoti HTTP/2.0 protokolą. Visos šiuolaikinės naujausios naršyklės turėtų palaikyti šį protokolą pagal numatytuosius nustatymus.

openssl s_client -connect localhost:443 -nextprotoneg ''

3 veiksmas: įdiekite PHP 7 vertėją

Nginx galima naudoti su PHP dinaminio apdorojimo kalbos interpretatoriumi, kad būtų galima generuoti dinaminį žiniatinklio turinį naudojant FastCGI proceso tvarkyklę, gautą įdiegus php-fpm dvejetainį paketą iš oficialių Ubuntu saugyklų.

9. Norėdami paimti PHP7.0 ir papildomus paketus, kurie leis PHP susisiekti su Nginx žiniatinklio serveriu, serverio konsolėje išduokite toliau pateiktą komandą:

sudo apt install php7.0 php7.0-fpm 

10. Įrenginyje sėkmingai įdiegę PHP7.0 vertėją, paleiskite ir patikrinkite php7.0-fpm demoną, išduodami toliau pateiktą informaciją. komanda:

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

11. Dabartinis „Nginx“ konfigūracijos failas jau sukonfigūruotas naudoti PHP FastCGI procesų tvarkyklę, kad būtų galima serverio dinaminį turinį.

Serverio blokas, leidžiantis Nginx naudoti PHP interpretatorių, yra pateiktas toliau pateiktoje ištraukoje, todėl nereikia keisti numatytojo Nginx konfigūracijos failo.

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

Žemiau yra ekrano kopija, nurodanti, kokių instrukcijų reikia atšaukti ir pakeisti, jei yra originalus Nginx numatytosios konfigūracijos failas.

12. Norėdami išbandyti „Nginx“ žiniatinklio serverio ryšį su PHP FastCGI proceso tvarkykle, sukurkite PHP info.php testo konfigūracijos failą, išleisdami toliau pateiktą komandą ir patikrinkite nustatymus apsilankę šiame konfigūracijos faile naudodami toliau pateiktą adresą: http://IP_or domain/info.php.

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

Taip pat patikrinkite, ar serveris reklamuoja HTTP/2.0 protokolą, surasdami eilutę $_SERVER['SERVER_PROTOCOL'] PHP kintamųjų bloke, kaip parodyta toliau esančioje ekrano kopijoje.

13. Norėdami įdiegti papildomus PHP7.0 modulius, naudokite komandą apt search php7.0, kad surastumėte PHP modulį ir jį įdiegtumėte.

Taip pat pabandykite įdiegti šiuos PHP modulius, kurie gali būti naudingi, jei planuojate įdiegti „WordPress“ ar kitą TVS.

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

14. Norėdami užregistruoti papildomus PHP modulius, tiesiog iš naujo paleiskite PHP-FPM demoną, išleisdami toliau pateiktą komandą.

sudo systemctl restart php7.0-fpm.service

4 veiksmas: įdiekite MariaDB duomenų bazę

15. Galiausiai, norėdami užbaigti mūsų LEMP krūvą, mums reikia MariaDB duomenų bazės komponento, kad būtų galima saugoti ir tvarkyti svetainės duomenis.

Įdiekite MariaDB duomenų bazės valdymo sistemą vykdydami toliau pateiktą komandą ir iš naujo paleiskite PHP-FPM paslaugą, kad galėtumėte pasiekti duomenų bazę naudodami MySQL modulį.

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

16. Norėdami apsaugoti MariaDB diegimą, paleiskite saugos scenarijų, pateiktą dvejetainio paketo iš Ubuntu saugyklų, kuris paprašys nustatyti pagrindinį slaptažodį, pašalinti anoniminius vartotojus, nuotoliniu būdu išjungti root prisijungimą ir pašalinti bandomąją duomenų bazę.

Paleiskite scenarijų išleisdami toliau pateiktą komandą ir atsakykite į visus klausimus taip. Naudokite toliau pateiktą ekrano kopiją kaip vadovą.

sudo mysql_secure_installation

17. Norėdami sukonfigūruoti MariaDB, kad paprasti vartotojai galėtų pasiekti duomenų bazę be sistemos sudo privilegijų, eikite į MySQL komandų eilutės sąsają su root teisėmis ir paleiskite toliau pateiktas komandas MySQL interpretatoriuje:

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

Galiausiai prisijunkite prie MariaDB duomenų bazės ir paleiskite savavališką komandą be root teisių, vykdydami toliau pateiktą komandą:

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

Kad visi! Dabar turite LEMP rinkinį, sukonfigūruotą Ubuntu 16.10 ir Ubuntu 16.04 serveryje, kuris leidžia diegti sudėtingas dinamines žiniatinklio programas, kurios gali sąveikauti su duomenų bazėmis.