GNU/Linux >> LINUX-Kenntnisse >  >> Debian

Installation von Nginx mit PHP (als PHP-FPM) und MariaDB (LEMP) auf Debian 8

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

  • 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/

Debian
  1. Installation von Nginx mit PHP und MariaDB (als MySQL-Ersatz) – LEMP – auf Ubuntu 15.10 (Wiley Werewolf)

  2. So installieren Sie Phorum mit Nginx unter Debian 9

  3. So installieren Sie Etherpad mit Nginx und SSL unter Debian 11

  4. Anleitung zum Installieren und Einrichten von PHP und Nginx (LEMP) unter Debian 11

  5. Installieren Sie Pagekit auf einem Debian 7 VPS mit Nginx, PHP-FPM und MariaDB

So installieren Sie Nginx, MariaDB, PHP (LEMP-Stack) unter Debian 9

Installieren Sie Lighttpd mit PHP FPM und MariaDB (LLMP) unter Debian 9

So installieren Sie Nginx, MariaDB, PHP (LEMP Stack) unter Debian 11

Installieren Sie Nginx mit PHP und MySQL (LEMP) plus SSL unter Debian 10

So installieren Sie Nginx mit PHP-FPM unter Debian 10

So installieren Sie phpBB mit LEMP (Nginx, MariaDB und PHP) unter Debian 11 Bullseye