Kā instalēt Nginx, MariaDB 10, PHP 7 (LEMP Stack) 16.10/16.04


LEMP kaudze ir akronīms, kas apzīmē pakotņu grupu (Linux OS, Nginx tīmekļa serveris, MySQL\MariaDB datu bāze un PHP servera puses dinamiskā programmēšanas valoda), ko izmanto, lai izvietotu dinamiskas tīmekļa lietojumprogrammas un tīmekļa lapas.

Šī apmācība palīdzēs jums instalēt LEMP kaudzīti ar MariaDB 10, PHP 7 un HTTP 2.0 Nginx atbalstu Ubuntu 16.10 un Ubuntu 16.04 servera/darbvirsmas izdevumos.

  1. Ubuntu 16.04 Server Edition instalēšana [instrukcijas darbojas arī uz Ubuntu 16.10]

1. darbība: instalējiet Nginx tīmekļa serveri

1. Nginx ir mūsdienīgs un resursu ziņā efektīvs tīmekļa serveris, ko izmanto tīmekļa lapu parādīšanai apmeklētājiem internetā. Sāksim ar Nginx tīmekļa servera instalēšanu no oficiālajām Ubuntu krātuvēm, izmantojot apt komandrindu.

$ sudo apt-get install nginx

2. Pēc tam izdodiet komandas systemctl, lai pārliecinātos, vai Nginx ir palaists un saistās 80. portā.

$ netstat -tlpn
$ sudo systemctl status nginx.service

Kad esat saņēmis apstiprinājumu par servera palaišanu, varat atvērt pārlūku un, izmantojot HTTP protokolu, doties uz sava servera IP adresi vai DNS ierakstu, lai apmeklētu Nginx noklusējuma tīmekļa lapu.

http://IP-Address

2. darbība: iespējojiet Nginx HTTP/2.0 protokolu

3. HTTP/2.0 protokols, kas pēc noklusējuma tiek veidots jaunākajā Nginx bināro versiju versijā Ubuntu 16.04, darbojas tikai kopā ar SSL un sola milzīgu ātruma uzlabojumu, ielādējot Web SSL tīmekļa lapas.

Lai iespējotu protokolu Nginx Ubuntu 16.04, vispirms dodieties uz Nginx pieejamo vietņu konfigurācijas failiem un dublējiet noklusējuma konfigurācijas failu, izsniedzot tālāk norādīto komandu.

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

4. Pēc tam, izmantojot teksta redaktoru, izveidojiet jaunu noklusējuma lapu ar šādiem norādījumiem:

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

Iepriekš minētais konfigurācijas fragments ļauj izmantot HTTP/2.0, visām SSL klausīšanās direktīvām pievienojot parametru http2 .

Arī servera direktīvā ietvertā fragmenta pēdējā daļa tiek izmantota, lai novirzītu visu trafiku, kas nav SSL, uz SSL/TLS noklusējuma resursdatoru. Tāpat nomainiet direktīvu servera_nosaukums , lai tā atbilstu jūsu pašu IP adresei vai DNS ierakstam (vēlams FQDN).

5. Kad esat pabeidzis rediģēt Nginx noklusējuma konfigurācijas failu ar iepriekš minētajiem iestatījumiem, ģenerējiet un uzskaitiet SSL sertifikāta failu un atslēgu, izpildot tālāk norādītās komandas.

Aizpildiet sertifikātu ar saviem pielāgotajiem iestatījumiem un pievērsiet uzmanību iestatījumam Common Name, lai tas atbilstu jūsu DNS FQDN ierakstam vai servera IP adresei, kas tiks izmantota, lai piekļūtu tīmekļa lapai.

$ 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. Izveidojiet arī spēcīgu DH šifru, kas tika mainīts iepriekšminētajā konfigurācijas failā ssl_dhparam instrukciju rindā, izsniedzot šādu komandu:

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

7. Kad ir izveidota atslēga Diffie-Hellman, pārbaudiet, vai Nginx konfigurācijas fails ir pareizi uzrakstīts un vai Nginx tīmekļa serveris to var pielietot, un restartējiet dēmonu, lai atspoguļotu izmaiņas, izpildot zemāk norādītās komandas.

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

8. Lai pārbaudītu, vai Nginx izmanto HTTP/2.0 protokolu, izsniedziet šo komandu. Reklamētā protokola h2 klātbūtne apstiprina, ka Nginx ir veiksmīgi konfigurēts HTTP/2.0 protokola lietošanai. Visām mūsdienu atjauninātajām pārlūkprogrammām pēc noklusējuma jāatbalsta šis protokols.

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

3. darbība: instalējiet PHP 7 tulku

Nginx var izmantot kopā ar PHP dinamiskās apstrādes valodas tulku, lai ģenerētu dinamisku tīmekļa saturu ar FastCGI procesu pārvaldnieka palīdzību, kas iegūta, instalējot bināro pakotni php-fpm no Ubuntu oficiālajām krātuvēm.

9. Lai greifers PHP7.0 un papildu paketes, kas ļaus PHP sazināties ar Nginx tīmekļa serveri, servera konsolē izsniedziet šādu komandu:

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

10. Kad PHP7.0 tulks ir veiksmīgi instalēts jūsu datorā, sāciet un pārbaudiet dēmonu php7.0-fpm, izdodot šādu komandu:

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

11. Pašreizējais Nginx konfigurācijas fails jau ir konfigurēts, lai izmantotu PHP FastCGI procesu pārvaldnieku, lai serverī nodrošinātu dinamisku saturu.

Servera bloks, kas ļauj Nginx izmantot PHP tulku, ir parādīts zemāk esošajā fragmentā, tāpēc papildu noklusējuma Nginx konfigurācijas faila izmaiņas nav nepieciešamas.

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

Zemāk ir ekrānuzņēmums par norādījumiem, kas nepieciešami, lai komentētu un mainītu sākotnējā Nginx noklusējuma konfigurācijas faila gadījumu.

12. Lai pārbaudītu Nginx tīmekļa servera saistību ar PHP FastCGI procesu pārvaldnieku, izveidojiet PHP info.php testa konfigurācijas failu, izsniedzot komandu zemāk, un pārbaudiet iestatījumus, apmeklējot šo konfigurācijas failu, izmantojot šādu adresi: http:// IP vai domēns/info.php .

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

Pārbaudiet arī to, vai serveris reklamē HTTP/2.0 protokolu, PHP mainīgo blokā atrodot līniju $_SERVER [’SERVER_PROTOCOL’] , kā parādīts zemāk redzamajā ekrānuzņēmumā.

13. Lai instalētu papildu PHP7.0 moduļus, izmantojiet komandu apt search php7.0 , lai atrastu un instalētu PHP moduli.

Mēģiniet arī instalēt šādus PHP moduļus, kas var būt noderīgi, ja plānojat instalēt WordPress vai citu CMS.

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

14. Lai reģistrētu PHP papildu moduļus, vienkārši restartējiet PHP-FPM dēmonu, izsniedzot šādu komandu.

$ sudo systemctl restart php7.0-fpm.service

4. solis: instalējiet MariaDB datu bāzi

15. Visbeidzot, lai pabeigtu mūsu LEMP steku, mums ir nepieciešams MariaDB datu bāzes komponents, lai uzglabātu un pārvaldītu vietnes datus.

Instalējiet MariaDB datu bāzes pārvaldības sistēmu, palaižot zemāk esošo komandu, un restartējiet PHP-FPM pakalpojumu, lai piekļūtu datu bāzei MySQL moduli.

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

16. Lai nodrošinātu MariaDB instalēšanu, palaidiet binārā pakotnes nodrošināto drošības skriptu no Ubuntu krātuvēm, kas jums lūgs iestatīt saknes paroli, noņemt anonīmus lietotājus, attāli atspējot root pieteikšanos un noņemt testa datu bāzi.

Palaidiet skriptu, izsniedzot zemāk esošo komandu un atbildiet uz visiem jautājumiem ar yes . Izmantojiet zemāk redzamo ekrānuzņēmumu kā ceļvedi.

$ sudo mysql_secure_installation

17. Lai konfigurētu MariaDB tā, lai parastie lietotāji varētu piekļūt datu bāzei bez sistēmas sudo privilēģijām, dodieties uz MySQL komandrindas saskarni ar root tiesībām un MySQL tulkotājā izpildiet šādas komandas:

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

Visbeidzot, piesakieties MariaDB datu bāzē un palaidiet patvaļīgu komandu bez root tiesībām, izpildot šo komandu:

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

Tas viss! Tagad jums ir konfigurēta LEMP kaudze Ubuntu 16.10 un Ubuntu 16.04 serverī, kas ļauj izvietot sarežģītas dinamiskas tīmekļa lietojumprogrammas, kas var mijiedarboties ar datu bāzēm.