GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

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

Nginx (ausgesprochen „Engine x“) ist ein kostenloser, hochleistungsfähiger 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 auf einem Ubuntu 15.10-Server mit PHP-Unterstützung (über PHP-FPM) und MariaDB (als MySQL-Ersatz) installieren können. Der Begriff LEMP steht für:Linux + Nginx + MySQL + PHP.

1 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 abweichen, daher müssen Sie sie gegebenenfalls ersetzen.

2 MariaDB installieren

Ich werde MariaDB anstelle von MySQL installieren, MariaDB ist ein MySQL-Fork, der vom ursprünglichen MySQL-Gründer Monty Widenius gepflegt wird und im Vergleich zu MySQL einige Geschwindigkeits- und Funktionsverbesserungen aufweist. Um MariaDB zu installieren, führen Sie Folgendes aus:

sudo apt-get -y install mariadb-server mariadb-client

MariaDB hat derzeit kein Passwort für den Root-Benutzer festgelegt. Führen Sie den Befehl mysql_secure_installation aus, um ein Passwort zu konfigurieren und die Testdatenbank zu entfernen.

sudo mysql_secure_installation

Ihnen werden folgende Fragen gestellt:

Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

3 Installieren von Nginx

Nginx ist als Paket für Ubuntu 15.10 verfügbar. Möglicherweise ist der Apache-Webserver auf Ihrem Server installiert, was zu einem Konflikt führen kann. Prüfen Sie, ob Apache nicht läuft:

ps aux | grep apache2

Wenn dieser Befehl keine Ergebnisse zurückgibt, fahren Sie mit der Nginx-Installation fort.

Entfernen Sie Apache, falls der obige Befehl einige Apache-Prozesse mit diesen Befehlen anzeigt:

sudo systemctl stop apache2.service
sudo systemctl disable apache2.service
sudo apt-get remove apache2

Jetzt können wir nginx installieren.

sudo apt-get install nginx

Starten Sie danach Nginx:

sudo systemctl start nginx.service
sudo systemctl enable 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:

Warum wird auf dieser Seite "Apache2" anstelle von Nginx angezeigt? Der Text der Seite spiegelt nicht den tatsächlich laufenden Webserver wider, die obige Seite ist nur die Standardseite auf Ubuntu im Dokumentenstamm /var/www/html/, die von Apache und Nginx verwendet wird. Um zu überprüfen, ob Nginx diese Seite tatsächlich bereitstellt, können Sie sich entweder die HTTP-Header in der Firefox-Netzwerkanalysekonsole ansehen:

Oder Sie prüfen die Shell, mit der nginx läuft:

ps aux | grep nginx

Das Ergebnis sollte die nginx-Prozesse wie folgt zeigen:

4 Installation von PHP5

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:

sudo apt-get install php5-fpm

PHP-FPM ist ein Daemon-Prozess (mit dem Init-Skript php5-fpm), der einen FastCGI-Server auf dem Socket /var/run/php5-fpm.sock.

ausführt

5 Konfiguration von Nginx

Die Nginx-Konfiguration befindet sich in der Datei /etc/nginx/nginx.conf, die wir jetzt im Nano-Editor öffnen:

sudo 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 (dies ist optional) das keepalive_timeout auf einen vernünftigen Wert:

[...]
    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:

sudo nano /etc/nginx/sites-available/default
##
# You should look at the following URL's in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# Generally, you will want to move this file somewhere, and start with a clean
# file but keep this around for reference. Or just disable in sites-enabled.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##

# Default server configuration
#
server {
listen 80 default_server;
listen [::]:80 default_server;

# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# 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.php index.html index.htm index.nginx-debian.html;

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


# Virtual Host configuration for example.com
#
# You can move that to a different file under sites-available/ and symlink that
# to sites-enabled/ to enable it.
#
#server {
# listen 80;
# listen [::]:80;
#
# server_name example.com;
#
# root /var/www/example.com;
# index index.html;
#
# location / {
# try_files $uri $uri/ =404;
# }
#}

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 /usr/share/nginx/html; bedeutet, dass der Dokumentenstamm das Verzeichnis /usr/share/nginx/html ist.

Der wichtige Teil für PHP ist die Zeile location ~ \.php$ {}. Kommentieren Sie es aus, um es zu aktivieren. Bitte beachten Sie, dass es wichtig ist, die Zeile "include snippets/fastcgi-php.conf;" zu aktivieren. innerhalb der PHP-Location-Stanza, um Zero-Day-Exploits zu verhindern (siehe http://wiki.nginx.org/Pitfalls#Passing_Uncontrollered_Requests_to_PHP und http://forum.nginx.org/read.php?2,88845,page=3).

Speichern Sie nun die Datei und laden Sie nginx neu:

sudo service nginx reload

Als nächstes öffnen Sie /etc/php5/fpm/php.ini...

sudo 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:

sudo service php5-fpm reload

Erstellen Sie nun im Document Root /var/www/html die folgende PHP-Datei:

sudo 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 MySQL-Unterstützung in PHP5 haben.

6 MariaDB-/MySQL-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 PHP5-Module zu installieren, die Sie möglicherweise für Ihre Anwendungen benötigen. Sie können wie folgt nach verfügbaren PHP5-Modulen suchen:

apt-cache search php5

Wählen Sie die benötigten aus und installieren Sie sie wie folgt:

sudo apt-get install php5-mysqlnd php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-sqlite php5-tidy php5-xmlrpc php5-xsl

APCu ist ein kostenloser PHP-Opcode-Cacher zum Caching und Optimieren von PHP-Zwischencode. Es ähnelt anderen PHP-Opcode-Cachern wie eAccelerator und Xcache. Es wird dringend empfohlen, eines davon zu installieren, um Ihre PHP-Seite zu beschleunigen.

APC kann wie folgt installiert werden:

sudo apt-get install php5-apcu

Laden Sie nun PHP-FPM neu:

sudo service php5-fpm reload

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:

7 PHP-FPM dazu bringen, eine TCP-Verbindung zu verwenden

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...

sudo 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:

sudo php5-fpm reload

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:

sudo 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;
}
[...]

Zum Schluss nginx neu laden:

sudo service nginx reload

8 Image-Download der virtuellen Maschine für dieses Tutorial

Dieses Tutorial ist als gebrauchsfertiges Image der virtuellen Maschine im ovf/ova-Format verfügbar, das mit VMWare und Virtualbox kompatibel ist. Das Image der virtuellen Maschine verwendet die folgenden Anmeldedaten:

SSH-/Shell-Anmeldung

Benutzername:administrator
Passwort:howtoforge

Dieser Benutzer hat sudo-Rechte.

MariaDB-Anmeldung

Benutzername:root
Passwort:howtoforge

Die IP der VM ist 192.168.1.100, sie kann in der Datei /etc/network/interfaces geändert werden. Bitte ändern Sie alle oben genannten Passwörter, um die virtuelle Maschine zu sichern.

  • nginx:http://nginx.net/
  • nginx-Wiki:http://wiki.codemongers.com/Main
  • PHP:http://www.php.net/
  • PHP-FPM:http://php-fpm.org/
  • MySQL:http://www.mysql.com/
  • Ubuntu:http://www.ubuntu.com/


Ubuntu
  1. Nginx unter Ubuntu 14.04 und 16.04 installieren

  2. Installieren von Nginx mit PHP5 (und PHP-FPM) und MySQL-Unterstützung (LEMP) unter Ubuntu 14.04 LTS

  3. Ubuntu 14.10 LAMP-Server-Tutorial mit Apache 2, PHP 5 und MySQL (MariaDB)

  4. Ubuntu 15.04 LAMP-Server-Tutorial mit Apache 2, PHP 5 und MariaDB (anstelle von MySQL)

  5. Installation und Einrichtung von Php und Nginx unter Ubuntu 20.04

Installation von Lighttpd mit PHP (PHP-FPM-Modus) und MySQL oder MariaDB auf Ubuntu 15.10

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

Nginx 1.7.9 + PHP5-FPM + MySQL (LEMP) auf Ubuntu 14.10

So installieren Sie Linux, Nginx, MySQL, PHP (LEMP Stack) in Ubuntu 18.04

Installieren Sie Nginx, MySQL, PHP (LEMP Stack) auf Ubuntu 20.04 LTS

So installieren Sie Nginx, MySQL und PHP (LEMP) auf einem Ubuntu 15.04-Server