Website-Suche

So installieren Sie Nginx, MariaDB 10, PHP 7 (LEMP Stack) in 16.10/16.04


Der LEMP-Stack ist ein Akronym, das eine Gruppe von Paketen (Linux OS, Nginx-Webserver, MySQL\MariaDB-Datenbank und serverseitige dynamische Programmiersprache PHP) darstellt, die zur Bereitstellung dynamischer Webanwendungen und verwendet werden Webseiten.

Dieses Tutorial zeigt Ihnen, wie Sie einen LEMP-Stack mit MariaDB 10, PHP 7 und HTTP 2.0 installieren. Unterstützung für Nginx auf den Server-/Desktop-Editionen Ubuntu 16.10 und Ubuntu 16.04.

Anforderungen

  1. Installation von Ubuntu 16.04 Server Edition [Anleitung funktioniert auch auf Ubuntu 16.10]

Schritt 1: Installieren Sie den Nginx-Webserver

1. Nginx ist ein moderner und ressourceneffizienter Webserver, der dazu dient, Webseiten für Besucher im Internet anzuzeigen. Wir beginnen mit der Installation des Nginx-Webservers aus den offiziellen Ubuntu-Repositorys mithilfe der apt-Befehlszeile.

sudo apt-get install nginx

2. Geben Sie als Nächstes die Befehle „netstat“ und „systemctl“ ein, um zu bestätigen, ob Nginx gestartet ist und an Port 80 bindet.

netstat -tlpn

sudo systemctl status nginx.service

Sobald Sie die Bestätigung erhalten haben, dass der Server gestartet wurde, können Sie einen Browser öffnen und mithilfe des HTTP-Protokolls zu Ihrer Server-IP-Adresse oder Ihrem DNS-Eintrag navigieren, um die Nginx-Standardwebseite aufzurufen.

http://IP-Address

Schritt 2: Aktivieren Sie das Nginx HTTP/2.0-Protokoll

3. Das HTTP/2.0-Protokoll, das standardmäßig in der neuesten Version der Nginx-Binärdateien unter Ubuntu 16.04 erstellt wird, funktioniert nur in Verbindung mit SSL und verspricht eine enorme Geschwindigkeitsverbesserung beim Laden von Web-SSL-Webseiten.

Um das Protokoll in Nginx unter Ubuntu 16.04 zu aktivieren, navigieren Sie zunächst zu den Konfigurationsdateien der verfügbaren Nginx-Sites und sichern Sie die Standardkonfigurationsdatei, indem Sie den folgenden Befehl ausführen.

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

4. Erstellen Sie dann mit einem Texteditor eine neue Standardseite mit den folgenden Anweisungen:

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

Das obige Konfigurations-Snippet ermöglicht die Verwendung von HTTP/2.0, indem der Parameter http2 zu allen SSL-Listen-Anweisungen hinzugefügt wird.

Außerdem wird der letzte Teil des in der Serveranweisung enthaltenen Auszugs verwendet, um den gesamten Nicht-SSL-Verkehr zum SSL/TLS-Standardhost umzuleiten. Ersetzen Sie außerdem die Anweisung server_name so, dass sie mit Ihrer eigenen IP-Adresse oder Ihrem DNS-Eintrag (vorzugsweise FQDN) übereinstimmt.

5. Sobald Sie die Bearbeitung der Nginx-Standardkonfigurationsdatei mit den oben genannten Einstellungen abgeschlossen haben, generieren und listen Sie die SSL-Zertifikatdatei und den Schlüssel auf, indem Sie die folgenden Befehle ausführen.

Füllen Sie das Zertifikat mit Ihren eigenen benutzerdefinierten Einstellungen aus und achten Sie darauf, dass die Einstellung Common Name mit Ihrem DNS-FQDN-Eintrag oder Ihrer Server-IP-Adresse übereinstimmt, die für den Zugriff auf die Webseite verwendet wird.

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. Erstellen Sie außerdem eine starke DH-Verschlüsselung, die in der obigen Konfigurationsdatei in der Anweisungszeile ssl_dhparam geändert wurde, indem Sie den folgenden Befehl ausgeben:

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

7. Sobald der Diffie-Hellman-Schlüssel erstellt wurde, überprüfen Sie, ob die Nginx-Konfigurationsdatei korrekt geschrieben ist und vom Nginx-Webserver angewendet werden kann, und starten Sie den Daemon neu, um die Änderungen zu übernehmen Führen Sie die folgenden Befehle aus.

sudo nginx -t
sudo systemctl restart nginx.service

8. Um zu testen, ob Nginx das HTTP/2.0-Protokoll verwendet, geben Sie den folgenden Befehl ein. Das Vorhandensein des h2 angekündigten Protokolls bestätigt, dass Nginx erfolgreich für die Verwendung des HTTP/2.0-Protokolls konfiguriert wurde. Alle modernen aktuellen Browser sollten dieses Protokoll standardmäßig unterstützen.

openssl s_client -connect localhost:443 -nextprotoneg ''

Schritt 3: Installieren Sie PHP 7 Interpreter

Nginx kann mit dem PHP-Interpreter für die dynamische Verarbeitungssprache verwendet werden, um dynamische Webinhalte mit Hilfe des FastCGI-Prozessmanagers zu generieren, der durch die Installation des Binärpakets php-fpm aus den offiziellen Ubuntu-Repositorys erhalten wird.

9. Um PHP7.0 und die zusätzlichen Pakete zu erhalten, die es PHP ermöglichen, mit dem Nginx-Webserver zu kommunizieren, geben Sie den folgenden Befehl auf Ihrer Serverkonsole ein:

sudo apt install php7.0 php7.0-fpm 

10. Sobald der PHP7.0-Interpreter erfolgreich auf Ihrem Computer installiert wurde, starten und überprüfen Sie den php7.0-fpm-Daemon, indem Sie Folgendes eingeben Befehl:

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

11. Die aktuelle Konfigurationsdatei von Nginx ist bereits für die Verwendung des PHP FastCGI-Prozessmanagers zum Servern dynamischer Inhalte konfiguriert.

Der Serverblock, der es Nginx ermöglicht, den PHP-Interpreter zu verwenden, wird im folgenden Auszug dargestellt, sodass keine weiteren Änderungen an der Standard-Nginx-Konfigurationsdatei erforderlich sind.

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

Unten sehen Sie einen Screenshot der Anweisungen, die Sie zum Entfernen des Kommentars und zum Ändern einer ursprünglichen Nginx-Standardkonfigurationsdatei benötigen.

12. Um die Nginx-Webserverbeziehung mit dem PHP FastCGI-Prozessmanager zu testen, erstellen Sie eine PHP-Testkonfigurationsdatei info.php, indem Sie den folgenden Befehl ausführen und die Einstellungen überprüfen, indem Sie diese Konfigurationsdatei besuchen Verwenden Sie dazu die folgende Adresse: http://IP_or domain/info.php.

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

Überprüfen Sie außerdem, ob das HTTP/2.0-Protokoll vom Server angekündigt wird, indem Sie die Zeile $_SERVER[‘SERVER_PROTOCOL’] im PHP-Variablenblock suchen, wie im folgenden Screenshot dargestellt.

13. Um zusätzliche PHP7.0-Module zu installieren, verwenden Sie den Befehl apt search php7.0, um ein PHP-Modul zu finden und es zu installieren.

Versuchen Sie außerdem, die folgenden PHP-Module zu installieren, die nützlich sein können, wenn Sie die Installation von WordPress oder einem anderen CMS planen.

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

14. Um die PHP-Zusatzmodule zu registrieren, starten Sie einfach den PHP-FPM-Daemon neu, indem Sie den folgenden Befehl ausführen.

sudo systemctl restart php7.0-fpm.service

Schritt 4: Installieren Sie die MariaDB-Datenbank

15. Um unseren LEMP-Stack zu vervollständigen, benötigen wir schließlich die MariaDB-Datenbankkomponente zum Speichern und Verwalten von Website-Daten.

Installieren Sie das Datenbankverwaltungssystem MariaDB, indem Sie den folgenden Befehl ausführen und den PHP-FPM-Dienst neu starten, um das MySQL-Modul für den Zugriff auf die Datenbank zu verwenden.

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

16. Um die MariaDB-Installation zu sichern, führen Sie das Sicherheitsskript aus, das vom Binärpaket aus den Ubuntu-Repositorys bereitgestellt wird. Es fordert Sie auf, ein Root-Passwort festzulegen, anonyme Benutzer zu entfernen, die Root-Anmeldung aus der Ferne zu deaktivieren und die Testdatenbank zu entfernen.

Führen Sie das Skript aus, indem Sie den folgenden Befehl eingeben und alle Fragen mit yes beantworten. Verwenden Sie den folgenden Screenshot als Leitfaden.

sudo mysql_secure_installation

17. Um MariaDB so zu konfigurieren, dass normale Benutzer ohne System-sudo-Berechtigungen auf die Datenbank zugreifen können, gehen Sie zur MySQL-Befehlszeilenschnittstelle mit Root-Berechtigungen und führen Sie die folgenden Befehle auf dem MySQL-Interpreter aus:

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

Melden Sie sich abschließend bei der MariaDB-Datenbank an und führen Sie einen beliebigen Befehl ohne Root-Rechte aus, indem Sie den folgenden Befehl ausführen:

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

Das alles! Jetzt haben Sie einen LEMP-Stack, der auf Ubuntu 16.10- und Ubuntu 16.04-Servern konfiguriert ist und es Ihnen ermöglicht, komplexe dynamische Webanwendungen bereitzustellen, die mit Datenbanken interagieren können.