Kako instalirati Nginx, MariaDB 10, PHP 7 (LEMP Stack) u 16.10/16.04


LEMP stog je akronim koji predstavlja grupu paketa (Linux OS, Nginx web server, MySQL\MariaDB baza podataka i PHP serverski dinamički programski jezik) koji se koriste za implementaciju dinamičkih web aplikacija i web stranice.

Ovaj vodič će vas uputiti kako da instalirate LEMP stack sa MariaDB 10, PHP 7 i HTTP 2.0 podrškom za Nginx na Ubuntu 16.10 i Ubuntu 16.04 serverskim/desktop izdanjima.

Zahtjevi

  1. Instalacija Ubuntu 16.04 Server Edition [uputstva rade i na Ubuntu 16.10]

Korak 1: Instalirajte Nginx web server

1. Nginx je moderan i resursno efikasan web server koji se koristi za prikazivanje web stranica posjetiteljima na internetu. Počećemo tako što ćemo instalirati Nginx web server iz Ubuntu zvaničnih repozitorija koristeći apt komandnu liniju.

sudo apt-get install nginx

2. Zatim izdajte naredbe netstat i systemctl kako biste potvrdili da li je Nginx pokrenut i vezuje se za port 80.

netstat -tlpn

sudo systemctl status nginx.service

Kada dobijete potvrdu da je server pokrenut, možete otvoriti pretraživač i navigirati do IP adrese vašeg servera ili DNS zapisa koristeći HTTP protokol kako biste posjetili Nginx zadanu web stranicu.

http://IP-Address

Korak 2: Omogućite Nginx HTTP/2.0 protokol

3. HTTP/2.0 protokol koji je podrazumevano izgrađen u najnovijem izdanju Nginx binarnih datoteka na Ubuntu 16.04 radi samo u kombinaciji sa SSL i obećava veliko poboljšanje brzine učitavanja web SSL web stranica.

Da biste omogućili protokol u Nginxu na Ubuntu 16.04, prvo idite do konfiguracijskih datoteka Nginx dostupnih lokacija i napravite sigurnosnu kopiju zadane konfiguracijske datoteke izdavanjem donje naredbe.

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

4. Zatim, pomoću uređivača teksta kreirajte novu zadanu stranicu sa sljedećim uputstvima:

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

Gornji isječak konfiguracije omogućava korištenje HTTP/2.0 dodavanjem parametra http2 svim SSL direktivama slušanja.

Također, posljednji dio izvoda koji je priložen u direktivi servera koristi se za preusmjeravanje cjelokupnog ne-SSL prometa na SSL/TLS default host. Također, zamijenite server_name direktivu da odgovara vašoj IP adresi ili DNS zapisu (poželjno FQDN).

5. Kada završite s uređivanjem Nginx default konfiguracijskog fajla s gore navedenim postavkama, generirajte i navedite datoteku i ključ SSL certifikata tako što ćete izvršiti donje naredbe.

Popunite certifikat svojim vlastitim prilagođenim postavkama i obratite pažnju na postavku Common Name koja odgovara vašem DNS FQDN zapisu ili IP adresi vašeg servera koja će se koristiti za pristup web stranici.

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. Također, kreirajte jaku DH šifru, koja je promijenjena u gornjoj konfiguracijskoj datoteci na ssl_dhparam liniji instrukcija, izdavanjem donje naredbe:

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

7. Nakon što je ključ Diffie-Hellman kreiran, provjerite da li je Nginx konfiguracijska datoteka ispravno napisana i da li je Nginx web server može primijeniti i ponovo pokrenite demon da odrazi promjene od strane izvršavanje naredbi ispod.

sudo nginx -t
sudo systemctl restart nginx.service

8. Da biste testirali da li Nginx koristi HTTP/2.0 protokol izdajte naredbu ispod. Prisustvo h2 oglašenog protokola potvrđuje da je Nginx uspješno konfigurisan da koristi HTTP/2.0 protokol. Svi moderni ažurirani pretraživači bi trebali podržavati ovaj protokol prema zadanim postavkama.

openssl s_client -connect localhost:443 -nextprotoneg ''

Korak 3: Instalirajte PHP 7 Interpreter

Nginx se može koristiti sa PHP tumačem jezika za dinamičku obradu za generisanje dinamičkog web sadržaja uz pomoć FastCGI menadžera procesa dobijenog instaliranjem php-fpm binarnog paketa iz Ubuntu zvaničnih repozitorija.

9. Da biste preuzeli PHP7.0 i dodatne pakete koji će omogućiti PHP-u da komunicira sa Nginx web serverom, izdajte naredbu ispod na konzoli vašeg servera:

sudo apt install php7.0 php7.0-fpm 

10. Nakon što je PHP7.0 interpreter uspješno instaliran na vašu mašinu, pokrenite i provjerite php7.0-fpm demon tako što ćete izdati sljedeće naredba:

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

11. Trenutna konfiguraciona datoteka Nginxa je već konfigurisana da koristi PHP FastCGI menadžer procesa za serverski dinamički sadržaj.

Blok servera koji omogućava Nginx-u da koristi PHP interpreter predstavljen je u donjem izvodu, tako da nisu potrebne daljnje modifikacije zadane Nginx konfiguracijske datoteke.

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

Ispod je snimak ekrana koja uputstva treba da dekomentirate i izmenite je slučaj originalne Nginx podrazumevane konfiguracione datoteke.

12. Da biste testirali odnos Nginx web servera sa PHP FastCGI proces menadžerom, kreirajte PHP info.php test konfiguracijski fajl izdavanjem donje naredbe i provjerite postavke posjetom ovoj konfiguracijskoj datoteci koristeći donju adresu: http://IP_or domain/info.php.

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

Također provjerite da li server oglašava protokol HTTP/2.0 tako što ćete locirati red $_SERVER[‘SERVER_PROTOCOL’] u bloku PHP Variables kao što je ilustrovano na snimku ekrana ispod.

13. Da biste instalirali dodatne PHP7.0 module, koristite naredbu apt search php7.0 da biste pronašli PHP modul i instalirali ga.

Takođe, pokušajte da instalirate sledeće PHP module koji vam mogu biti od koristi u slučaju da planirate da instalirate WordPress ili drugi CMS.

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

14. Da biste registrovali PHP dodatne module, samo ponovo pokrenite PHP-FPM demon izdavanjem naredbe ispod.

sudo systemctl restart php7.0-fpm.service

Korak 4: Instalirajte MariaDB bazu podataka

15. Konačno, da bismo kompletirali naš LEMP stog, potrebna nam je komponenta MariaDB baze podataka za pohranjivanje i upravljanje podacima web stranice.

Instalirajte MariaDB sistem za upravljanje bazom podataka tako što ćete pokrenuti naredbu ispod i ponovo pokrenite uslugu PHP-FPM kako biste koristili MySQL modul za pristup bazi podataka.

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

16. Da biste osigurali MariaDB instalaciju, pokrenite sigurnosnu skriptu koju obezbjeđuje binarni paket iz Ubuntu spremišta koja će od vas tražiti da postavite root lozinku, uklonite anonimne korisnike, onemogućite root prijavu na daljinu i uklonite testnu bazu podataka.

Pokrenite skriptu izdavanjem naredbe ispod i odgovorite na sva pitanja sa da. Koristite snimak ekrana ispod kao vodič.

sudo mysql_secure_installation

17. Da konfigurišete MariaDB tako da obični korisnici mogu pristupiti bazi podataka bez sistemskih sudo privilegija, idite na MySQL interfejs komandne linije sa root privilegijama i pokrenite sledeće komande na MySQL interpreteru:

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

Konačno, prijavite se na MariaDB bazu podataka i pokrenite proizvoljnu naredbu bez root privilegija izvršavanjem naredbe ispod:

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

To je sve! Sada imate LEMP stog konfiguriran na Ubuntu 16.10 i Ubuntu 16.04 serveru koji vam omogućava da implementirate složene dinamičke web aplikacije koje mogu komunicirati s bazama podataka.