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 Nginx på Ubuntu 16.10 og Ubuntu 16.04 server-/desktop-utgaver.
Krav
- 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.