Dieses Tutorial zeigt Ihnen die Installation des Nginx-Webservers auf Debian 8. Nginx (ausgesprochen „Engine x“) ist ein kostenloser, leistungsstarker Open-Source-HTTP-Server. Nginx ist bekannt für seine Stabilität, seinen umfangreichen Funktionsumfang, seine einfache Konfiguration und seinen geringen Ressourcenverbrauch. Dieses Tutorial zeigt, wie Sie Nginx mit PHP-Unterstützung (über PHP-FPM) und MariaDB als Drop-In-Ersatz für MySQL installieren können. Dieser Aufbau wird oft als LEMP =L bezeichnet inux + nginx (ausgesprochen "e Motor x") + M ySQL + P PS) .
Vorbemerkung
In diesem Tutorial verwende ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.1.100. Diese Einstellungen können für Sie unterschiedlich sein, daher müssen Sie sie gegebenenfalls ersetzen. Sie sollten einen Debian 8-Server haben, ich werde den Debian-Minimalserver als Basissystem für dieses Tutorial verwenden.
Aktualisieren des Systems
Es wird empfohlen, die Paketlisten zu aktualisieren und alle ausstehenden Updates zu installieren, bevor wir mit dem Nginx-Setup beginnen. Führen Sie die folgenden Befehle aus, um ausstehende Updates zu installieren.
apt-get update
apt-get upgrade -y
Ich werde den Nano-Editor später verwenden, um Konfigurationsdateien zu bearbeiten. Nano kann mit diesem Befehl installiert werden:
apt-get -y install nano
Installieren von MariaDB (als Drop-in-Ersatz für MySQL)
Um MariaDB zu installieren, führen wir Folgendes aus:
apt-get -y install mariadb-server mariadb-client
Sie werden aufgefordert, ein Passwort für den MariaDB-Root-Benutzer anzugeben – dieses Passwort gilt sowohl für den Benutzer [email protected] als auch für [email protected], sodass wir später kein MariaDB-Root-Passwort manuell angeben müssen:
Neues Passwort für den „root“-Benutzer von MariaDB:<-- yourrootsqlpassword
Wiederholen Sie das Passwort für den „root“-Benutzer von MariaDB:<-- yourrootsqlpassword
Installation von Nginx
Nginx ist als Paket für Debian Jessie verfügbar, das wir wie folgt installieren können:
apt-get -y install nginx
Starten Sie danach Nginx:
systemctl start nginx.service
Geben Sie die IP-Adresse oder den Hostnamen Ihres Webservers in einen Browser ein (z. B. http://192.168.1.100), und Sie sollten die folgende Seite sehen:
Das standardmäßige nginx-Dokumentstammverzeichnis unter Debian 8 ist /var/www/html.
Installation von PHP
Wir können PHP5 in nginx durch PHP-FPM zum Laufen bringen (PHP-FPM (FastCGI Process Manager) ist eine alternative PHP-FastCGI-Implementierung mit einigen zusätzlichen Funktionen, die für Websites jeder Größe nützlich sind, insbesondere für stark frequentierte Websites), die wir wie folgt installieren:
apt-get -y install php5-fpm
PHP-FPM ist ein Daemon-Prozess (mit der systemd-Unit-Datei php5-fpm.service), der einen FastCGI-Server auf dem Socket /var/run/php5-fpm.sock.
ausführt
nginx konfigurieren
Die nginx-Konfiguration befindet sich in /etc/nginx/nginx.conf, die wir jetzt öffnen:
nano /etc/nginx/nginx.conf
Die Konfiguration ist einfach zu verstehen (mehr darüber erfahren Sie hier:http://wiki.nginx.org/NginxFullExample und hier:http://wiki.nginx.org/NginxFullExample2)
Setzen Sie zuerst das keepalive_timeout auf einen vernünftigen Wert wie 2 Sekunden:
[...] keepalive_timeout 2; [...]
Die virtuellen Hosts sind in Server-{}-Containern definiert. Der Standard-vhost ist in der Datei /etc/nginx/sites-available/default definiert – ändern wir ihn wie folgt:
nano /etc/nginx/sites-available/default
[...] server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
} [...]
Servername _; macht dies zu einem Standard-Catchall-Vhost (natürlich können Sie hier auch einen Hostnamen wie www.example.com angeben).
Ich habe index.php zur Indexzeile hinzugefügt. root /var/www/html; bedeutet, dass das Dokumenten-Stammverzeichnis das Verzeichnis /var/www/html ist.
Der wichtige Teil für PHP ist die Zeile location ~ \.php$ {}. Kommentieren Sie es wie oben gezeigt aus, um es zu aktivieren.
Speichern Sie nun die Datei und laden Sie Nginx neu:
systemctl reload nginx.service
Als nächstes öffnen Sie /etc/php5/fpm/php.ini...
nano /etc/php5/fpm/php.ini
... und setze cgi.fix_pathinfo=0:
[...] ; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. ; http://php.net/cgi.fix-pathinfo cgi.fix_pathinfo=0 [...]
PHP-FPM neu laden:
systemctl reload php5-fpm.service
Erstellen Sie nun im Document Root /var/www/html/ folgende PHP-Datei:
nano /var/www/html/info.php
<?php phpinfo(); ?>
Nun nennen wir diese Datei in einem Browser (z. B. http://192.168.1.100/info.php):
Wie Sie sehen, funktioniert PHP5 und es funktioniert über FPM/FastCGI, wie in der Server-API-Zeile gezeigt. Wenn Sie weiter nach unten scrollen, sehen Sie alle Module, die bereits in PHP5 aktiviert sind. MySQL ist dort nicht aufgeführt, was bedeutet, dass wir noch keine MariaDB / MySQL-Unterstützung in PHP haben.
MySQL-/MariaDB-Unterstützung in PHP erhalten
Um MySQL-Unterstützung in PHP zu erhalten, können wir das Paket php5-mysqlnd installieren. Es ist eine gute Idee, einige andere PHP-Module zu installieren, die Sie möglicherweise für Ihre Anwendungen benötigen. Sie können wie folgt nach verfügbaren PHP-Modulen suchen:
apt-cache search php5
Wählen Sie die benötigten aus und installieren Sie sie wie folgt:
apt-get -y install php5-mysqlnd php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-intl php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
APCu ist ein kostenloser und offener PHP-Opcode-Cacher zum Zwischenspeichern und Optimieren von PHP-Zwischencode, der den PHP-Opcache erweitert. Er ersetzt den APC-Cache. und es ähnelt anderen PHP-Opcode-Cachern wie eAccelerator und Xcache. Es wird dringend empfohlen, eines davon zu installieren, um Ihre PHP-Seite zu beschleunigen.
APCu kann wie folgt installiert werden:
apt-get install php5-apcu
Laden Sie nun PHP-FPM neu:
systemctl reload php5-fpm.service
Laden Sie nun http://192.168.1.100/info.php in Ihrem Browser neu und scrollen Sie erneut nach unten zum Modulbereich. Dort sollten Sie jetzt viele neue Module finden, einschließlich des MySQL-Moduls:
PHP-FPM dazu bringen, eine TCP-Verbindung zu verwenden (optional)
Standardmäßig lauscht PHP-FPM auf dem Socket /var/run/php5-fpm.sock. Es ist auch möglich, PHP-FPM dazu zu bringen, eine TCP-Verbindung zu verwenden. Öffnen Sie dazu /etc/php5/fpm/pool.d/www.conf...
nano /etc/php5/fpm/pool.d/www.conf
... und lass die Listen-Zeile wie folgt aussehen:
[...] ;listen = /var/run/php5-fpm.sock listen = 127.0.0.1:9000 [...]
Dadurch lauscht PHP-FPM auf Port 9000 auf der IP 127.0.0.1 (localhost). Stellen Sie sicher, dass Sie einen Port verwenden, der auf Ihrem System nicht verwendet wird.
Laden Sie dann PHP-FPM neu:
systemctl reload php5-fpm.service
Gehen Sie als nächstes Ihre Nginx-Konfiguration und alle Ihre vhosts durch und ändern Sie die Zeile fastcgi_pass unix:/var/run/php5-fpm.sock; zu fastcgi_pass 127.0.0.1:9000;, z. so:
nano /etc/nginx/sites-available/default
[...]
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
# fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_pass 127.0.0.1:9000;
} [...]
Laden Sie zum Schluss Nginx neu:
systemctl reload nginx.service
Image der virtuellen Maschine
Dieses Tutorial ist als fertige virtuelle Maschine im OVA / OVF-Format für Howtoforge-Abonnenten verfügbar. Das VM-Format ist kompatibel mit VMWare und Virtualbox und wahrscheinlich einigen anderen Tools, die dieses Format importieren können. Sie finden den Download-Link im rechten Menü oben. Klicken Sie auf den Dateinamen, um den Download zu starten.
Die Anmeldedaten der VM lauten:
SSH-Anmeldung
Benutzername:root
Passwort:howtoforge
MariaDB-Anmeldung
Benutzername:root
Passwort:howtoforge
Bitte ändern Sie die Passwörter nach dem ersten Booten.
Die VM ist für die statische IP 192.168.1.100 konfiguriert, die IP kann in der Datei /etc/network/interfaces.
geändert werden
Links
- nginx:http://nginx.net/
- nginx-Wiki:http://wiki.codemongers.com/Main
- PHP:http://www.php.net/
- PHP-FPM:http://php-fpm.org/
- MariaDB: https://mariadb.org/
- Debian:http://www.debian.org/