Kako namestiti Nginx, MariaDB 10, PHP 7 (LEMP Stack) v 16.10/16.04


Sklad LEMP je kratica, ki predstavlja skupino paketov (Linux OS, spletni strežnik Nginx, baza podatkov MySQL\MariaDB in dinamični programski jezik na strežniku PHP), ki se uporabljajo za razmestitev dinamičnih spletnih aplikacij in spletnih strani.

Ta vadnica vas bo vodila, kako namestiti sklad LEMP s podporo MariaDB 10, PHP 7 in HTTP 2.0 za Nginx v strežniških/namiznih izdajah Ubuntu 16.10 in Ubuntu 16.04.

  1. Namestitev Ubuntu 16.04 Server Edition [navodila delujejo tudi na Ubuntu 16.10]

1. korak: Namestite spletni strežnik Nginx

1. Nginx je sodoben in z viri učinkovit spletni strežnik, ki se uporablja za prikaz spletnih strani obiskovalcem v internetu. Začeli bomo z namestitvijo spletnega strežnika Nginx iz uradnih repozitorijev Ubuntu z uporabo ukazne vrstice apt.

$ sudo apt-get install nginx

2. Nato izdajte ukaze systemctl, da potrdite, ali se Nginx zažene in se veže na vrata 80.

$ netstat -tlpn
$ sudo systemctl status nginx.service

Ko dobite potrditev, da se strežnik zažene, lahko odprete brskalnik in po protokolu HTTP poiščete IP naslov ali zapis DNS strežnika, da obiščete privzeto spletno stran Nginx.

http://IP-Address

2. korak: Omogočite protokol Nginx HTTP/2.0

3. Protokol HTTP/2.0, ki je privzeto zgrajen v zadnji izdaji binarnih datotek Nginx v Ubuntu 16.04, deluje samo v povezavi s SSL in obljublja velik napredek pri nalaganju spletnih strani SSL.

Če želite omogočiti protokol v Nginxu v Ubuntu 16.04, najprej pojdite do Nginxovih razpoložljivih konfiguracijskih datotek in varnostno kopirajte privzeto konfiguracijsko datoteko z izdajo spodnjega ukaza.

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

4. Nato z urejevalnikom besedil ustvarite novo privzeto stran s spodnjimi navodili:

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

Zgornji del konfiguracije omogoča uporabo HTTP/2.0 z dodajanjem parametra http2 vsem direktivam o poslušanju SSL.

Prav tako se zadnji del izvlečka, priloženega strežniški direktivi, uporablja za preusmeritev celotnega prometa, ki ni SSL, na privzetega gostitelja SSL/TLS. Zamenjajte tudi direktivo ime_strežnika , da se ujema z vašim naslovom IP ali zapisom DNS (po možnosti FQDN).

5. Ko končate z urejanjem privzete konfiguracijske datoteke Nginx z zgornjimi nastavitvami, z naslednjimi ukazi ustvarite in navedite datoteko in ključ potrdila SSL.

Potrdilo izpolnite z lastnimi nastavitvami po meri in bodite pozorni na nastavitev Common Name, da se ujema z zapisom DNS FQDN ali IP naslovom strežnika, ki bo uporabljen za dostop do spletne strani.

$ 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. Ustvarite tudi močno DH šifro, ki je bila spremenjena v zgornji konfiguracijski datoteki v ukazni vrstici ssl_dhparam , tako da izdate spodnji ukaz:

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

7. Ko je ključ Diffie-Hellman ustvarjen, preverite, ali je konfiguracijska datoteka Nginx pravilno napisana in jo lahko spletni strežnik uporabi, in znova zaženite demon, da odraža spremembe, tako da zaženete spodnje ukaze.

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

8. Če želite preizkusiti, ali Nginx uporablja protokol HTTP/2.0, izdajte spodnji ukaz. Prisotnost oglaševanega protokola h2 potrjuje, da je bil Nginx uspešno konfiguriran za uporabo protokola HTTP/2.0. Vsi sodobni brskalniki naj privzeto podpirajo ta protokol.

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

3. korak: Namestite PHP 7 Interpreter

Nginx se lahko uporablja s PHP tolmačem za dinamično obdelavo jezika za ustvarjanje dinamične spletne vsebine s pomočjo upravitelja procesov FastCGI, pridobljenega z namestitvijo binarnega paketa php-fpm iz uradnih repozitorijev Ubuntu.

9. Če želite zajeti PHP7.0 in dodatne pakete, ki bodo PHP-ju omogočili komunikacijo s spletnim strežnikom Nginx, na strežniški konzoli izdajte spodnji ukaz:

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

10. Ko je tolmač PHP7.0 uspešno nameščen v vaš računalnik, zaženite in preverite demon php7.0-fpm z izdajo spodnjega ukaza:

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

11. Trenutna konfiguracijska datoteka Nginxa je že konfigurirana za uporabo PHP FastCGI upravitelja procesov za strežnik dinamične vsebine.

Strežniški blok, ki Nginxu omogoča uporabo tolmača PHP, je predstavljen v spodnjem odlomku, zato nadaljnje spremembe privzete konfiguracijske datoteke Nginx niso potrebne.

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

Spodaj je posnetek zaslona navodil, ki jih morate razkomentirati in spremeniti, na primeru originalne privzete konfiguracijske datoteke Nginx.

12. Če želite preizkusiti povezavo spletnega strežnika Nginx z upraviteljem procesov PHP FastCGI, ustvarite preskusno konfiguracijsko datoteko PHP info.php , tako da izdate spodnji ukaz in preverite nastavitve tako, da obiščete to konfiguracijsko datoteko z uporabo spodnjega naslova: http:// IP_ali domena/info.php .

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

Preverite tudi, ali strežnik oglašuje protokol HTTP/2.0, tako da poiščete vrstico $_SERVER [‘SERVER_PROTOCOL’] v bloku PHP Variables, kot je prikazano na spodnjem posnetku zaslona.

13. Če želite namestiti dodatne module PHP7.0, z ukazom apt search php7.0 poiščite modul PHP in ga namestite.

Poskusite namestiti tudi naslednje PHP module, ki vam lahko pridejo prav, če nameravate namestiti WordPress ali drug CMS.

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

14. Če želite registrirati dodatne module PHP, znova zaženite demon PHP-FPM, tako da izdate spodnji ukaz.

$ sudo systemctl restart php7.0-fpm.service

4. korak: Namestite zbirko podatkov MariaDB

15. Nazadnje, da dokončamo svoj niz LEMP, potrebujemo komponento baze podatkov MariaDB za shranjevanje in upravljanje podatkov spletnega mesta.

Namestite sistem za upravljanje zbirke podatkov MariaDB tako, da zaženete spodnji ukaz in znova zaženete storitev PHP-FPM, da lahko z modulom MySQL dostopate do baze podatkov.

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

16. Če želite zavarovati namestitev MariaDB, zaženite varnostni skript, ki ga nudi binarni paket iz Ubuntujevih repozitorijev, ki vas bo pozval, da nastavite korensko geslo, odstranite anonimne uporabnike, onemogočite prijavo root in odstranite testno bazo podatkov.

Zaženite skript tako, da izdate spodnji ukaz in na vsa vprašanja odgovorite z yes . Kot vodilo uporabite spodnji posnetek zaslona.

$ sudo mysql_secure_installation

17. Če želite MariaDB konfigurirati tako, da lahko navadni uporabniki dostopajo do baze podatkov brez privilegijev sistema sudo, pojdite na vmesnik ukazne vrstice MySQL s korenskimi privilegiji in zaženite spodnje ukaze v tolmaču MySQL:

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

Na koncu se prijavite v bazo podatkov MariaDB in zaženite poljuben ukaz brez korenskih pravic tako, da izvedete spodnji ukaz:

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

To je vse! Zdaj imate na strežniku Ubuntu 16.10 in Ubuntu 16.04 konfiguriran sklad LEMP, ki omogoča uvajanje zapletenih dinamičnih spletnih aplikacij, ki lahko komunicirajo z bazami podatkov.