Slik installerer du Nginx, MariaDB 10, PHP 7 (LEMP Stack) i 16.10/16.04


LEMP-stakken er et akronym som representerer en gruppe pakker (Linux OS, Nginx webserver, MySQL\MariaDB database og PHP serverside dynamisk programmeringsspråk) som brukes til å distribuere dynamiske webapplikasjoner og nettsider.

Denne veiledningen vil veilede deg om hvordan du installerer en LEMP-stabel med MariaDB 10, PHP 7 og HTTP 2.0-støtte for NginxUbuntu 16.10 og Ubuntu 16.04 server-/desktop-utgaver.

Krav

  1. Installasjon av Ubuntu 16.04 Server Edition [instruksjoner fungerer også på Ubuntu 16.10]

Trinn 1: Installer Nginx Web Server

1. Nginx er en moderne og ressurseffektiv nettserver som brukes til å vise nettsider til besøkende på internett. Vi starter med å installere Nginx webserver fra Ubuntu offisielle repositories ved å bruke apt kommandolinjen.

sudo apt-get install nginx

2. Utfør deretter netstat- og systemctl-kommandoene for å bekrefte om Nginx er startet og binder til port 80.

netstat -tlpn

sudo systemctl status nginx.service

Når du har bekreftet at serveren er startet, kan du åpne en nettleser og navigere til serverens IP-adresse eller DNS-post ved hjelp av HTTP-protokollen for å besøke Nginx standard nettside.

http://IP-Address

Trinn 2: Aktiver Nginx HTTP/2.0-protokoll

3. HTTP/2.0-protokollen som er bygget som standard i den siste versjonen av Nginx-binærfiler på Ubuntu 16.04 fungerer bare sammen med SSL og lover en enorm hastighetsforbedring ved lasting av web-SSL-websider.

For å aktivere protokollen i Nginx på Ubuntu 16.04, naviger først til konfigurasjonsfiler for Nginx tilgjengelige nettsteder og sikkerhetskopier standard konfigurasjonsfilen ved å gi kommandoen nedenfor.

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

4. Deretter, bruk et tekstredigeringsprogram for å opprette en ny standardside med instruksjonene nedenfor:

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

Konfigurasjonskodebiten ovenfor muliggjør bruk av HTTP/2.0 ved å legge til http2-parameteren i alle SSL-lyttedirektiver.

Den siste delen av utdraget vedlagt i serverdirektivet brukes også til å omdirigere all ikke-SSL-trafikk til SSL/TLS-standardverten. Erstatt også server_name-direktivet for å matche din egen IP-adresse eller DNS-post (helst FQDN).

5. Når du er ferdig med å redigere Nginx standard konfigurasjonsfil med innstillingene ovenfor, generer og liste opp SSL-sertifikatfilen og nøkkelen ved å utføre kommandoene nedenfor.

Fyll sertifikatet med dine egne tilpassede innstillinger og vær oppmerksom på Fellesnavn-innstillingen for å matche DNS FQDN-posten din eller serverens IP-adresse som vil bli brukt for å få tilgang til nettsiden.

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. Lag også en sterk DH-cypher, som ble endret på konfigurasjonsfilen ovenfor på ssl_dhparam instruksjonslinjen, ved å utstede kommandoen nedenfor:

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

7. Når Diffie-Hellman-nøkkelen er opprettet, kontroller om Nginx-konfigurasjonsfilen er korrekt skrevet og kan brukes av Nginx-nettserveren og start daemonen på nytt for å gjenspeile endringer av kjører kommandoene nedenfor.

sudo nginx -t
sudo systemctl restart nginx.service

8. Utfør kommandoen nedenfor for å teste om Nginx bruker HTTP/2.0-protokollen. Tilstedeværelsen av h2 annonsert protokoll bekrefter at Nginx har blitt konfigurert til å bruke HTTP/2.0-protokollen. Alle moderne oppdaterte nettlesere bør støtte denne protokollen som standard.

openssl s_client -connect localhost:443 -nextprotoneg ''

Trinn 3: Installer PHP 7 Interpreter

Nginx kan brukes med PHP dynamisk prosesseringsspråktolk for å generere dynamisk webinnhold ved hjelp av FastCGI-prosessbehandling oppnådd ved å installere php-fpm binærpakken fra Ubuntu offisielle repositories.

9. For å ta tak i PHP7.0 og tilleggspakkene som vil tillate PHP å kommunisere med Nginx-nettserveren, utfør kommandoen nedenfor på serverkonsollen din:

sudo apt install php7.0 php7.0-fpm 

10. Når PHP7.0-tolken har blitt installert på maskinen din, start og sjekk php7.0-fpm-demonen ved å utstede nedenstående kommando:

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

11. Den nåværende konfigurasjonsfilen til Nginx er allerede konfigurert til å bruke PHP FastCGI prosessbehandler for å servere dynamisk innhold.

Serverblokken som gjør det mulig for Nginx å bruke PHP-tolk er presentert i utdraget nedenfor, så ingen ytterligere modifikasjoner av standard Nginx-konfigurasjonsfil er nødvendig.

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

Nedenfor er et skjermbilde av hvilke instruksjoner du trenger for å fjerne kommentarer og endre når det gjelder en original Nginx standard konfigurasjonsfil.

12. For å teste Nginx-nettserverrelasjonen med PHP FastCGI-prosessleder oppretter du en PHP info.php-testkonfigurasjonsfil ved å utstede kommandoen nedenfor og verifiser innstillingene ved å besøke denne konfigurasjonsfilen ved å bruke adressen nedenfor: http://IP_or domain/info.php.

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

Sjekk også om HTTP/2.0-protokollen annonseres av serveren ved å finne linjen $_SERVER[‘SERVER_PROTOCOL’] på PHP-variabler-blokken som illustrert på skjermbildet nedenfor.

13. For å installere ekstra PHP7.0-moduler, bruk apt search php7.0-kommandoen for å finne en PHP-modul og installere den.

Prøv også å installere følgende PHP-moduler som kan komme godt med i tilfelle du planlegger å installere WordPress eller annet CMS.

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

14. For å registrere PHP-ekstramodulene, start bare PHP-FPM-demonen på nytt ved å gi kommandoen nedenfor.

sudo systemctl restart php7.0-fpm.service

Trinn 4: Installer MariaDB-databasen

15. Til slutt, for å fullføre LEMP-stabelen vår, trenger vi MariaDB-databasekomponenten for å lagre og administrere nettsteddata.

Installer MariaDB databasebehandlingssystem ved å kjøre kommandoen nedenfor og start PHP-FPM-tjenesten på nytt for å bruke MySQL-modulen for å få tilgang til databasen.

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

16. For å sikre MariaDB-installasjonen, kjør sikkerhetsskriptet levert av binærpakken fra Ubuntu-repositories som vil be deg angi et root-passord, fjerne anonyme brukere, deaktivere root-pålogging eksternt og fjerne testdatabasen.

Kjør skriptet ved å gi kommandoen nedenfor og svar på alle spørsmål med ja. Bruk skjermbildet nedenfor som en veiledning.

sudo mysql_secure_installation

17. For å konfigurere MariaDB slik at vanlige brukere kan få tilgang til databasen uten system-sudo-privilegier, gå til MySQL-kommandolinjegrensesnittet med root-privilegier og kjør kommandoene nedenfor på MySQL-tolken:

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

Til slutt, logg på MariaDB-databasen og kjør en vilkårlig kommando uten root-privilegier ved å utføre kommandoen nedenfor:

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

At alle! Nå har du en LEMP-stabel konfigurert på Ubuntu 16.10- og Ubuntu 16.04-server som lar deg distribuere komplekse dynamiske nettapplikasjoner som kan samhandle med databaser.