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

Installieren von Nginx mit PHP5 (und PHP-FPM) und MySQL-Unterstützung (LEMP) unter Ubuntu 13.04

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 13.04-Server mit PHP5-Unterstützung (über PHP-FPM) und MySQL-Unterstützung (LEMP =L inux + nginx (ausgesprochen "e Motor x") + M ySQL + P PS) .

Ich gebe keine Garantie dafür, dass dies bei Ihnen funktioniert!

1 Vorbemerkung

In diesem Tutorial verwende ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.0.100. Diese Einstellungen können für Sie abweichen, daher müssen Sie sie gegebenenfalls ersetzen.

Ich führe alle Schritte in diesem Tutorial mit Root-Rechten aus, stellen Sie also sicher, dass Sie als Root angemeldet sind:

sudo su

2 Installation von MySQL 5

Um MySQL zu installieren, führen wir

aus
apt-get install mysql-server mysql-client

Sie werden aufgefordert, ein Passwort für den MySQL-Root-Benutzer anzugeben – dieses Passwort gilt sowohl für den Benutzer [email protected] als auch für [email protected], sodass wir später kein MySQL-Root-Passwort manuell angeben müssen:

Neues Passwort für den MySQL-"root"-Benutzer:<-- yourrootsqlpassword
Wiederholen Sie das Passwort für den MySQL-"root"-Benutzer:<-- yourrootsqlpassword

3 Installieren von Nginx

Nginx ist als Paket für Ubuntu 13.04 verfügbar, das wir wie folgt installieren können:

apt-get install nginx

Danach nginx starten:

/etc/init.d/nginx start

Geben Sie die IP-Adresse oder den Hostnamen Ihres Webservers in einen Browser ein (z. B. http://192.168.0.100), und Sie sollten die folgende Seite sehen:

Das standardmäßige nginx-Dokumentenstammverzeichnis unter Ubuntu 13.04 ist /usr/share/nginx/html.

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:

apt-get install php5-fpm

PHP-FPM ist ein Daemon-Prozess (mit dem Init-Skript /etc/init.d/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 /etc/nginx/nginx.conf, die wir jetzt öffnen:

vi /etc/nginx/nginx.conf

Die Konfiguration ist leicht verständlich (mehr darüber erfahren Sie hier:http://wiki.nginx.org/NginxFullExample und hier:http://wiki.nginx.org/NginxFullExample2)

Passen Sie zuerst (dies ist optional) die Anzahl der Worker-Prozesse an und setzen Sie keepalive_timeout auf einen vernünftigen Wert:

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

vi /etc/nginx/sites-available/default
[...]server { listen 80; hören [::]:80 default_server ipv6only=on; root /usr/share/nginx/html; index index.php index.html index.htm; # Website von http://localhost/ server_name zugänglich machen _; location / { # Zuerst versuchen, Anfrage als Datei zu liefern, # dann als Verzeichnis, dann auf die Anzeige von 404 zurückfallen. try_files $uri $uri/ /index.html; # Entfernen Sie das Kommentarzeichen, um naxsi an diesem Ort zu aktivieren # include /etc/nginx/naxsi.rules } location /doc/ { alias /usr/share/doc/; Autoindex an; 127.0.0.1 zulassen; ::1 zulassen; leugne alles; } # Nur für nginx-naxsi verwendet mit nginx-naxsi-ui :verweigerte Anfragen verarbeiten #location /RequestDenied { # proxy_pass http://127.0.0.1:8080; #} #error_page 404 /404.html; # Serverfehlerseiten auf die statische Seite /50x.html umleiten # error_page 500 502 503 504 /50x.html; location =/50x.html { root /usr/share/nginx/html; } # Übergeben Sie die PHP-Skripte an den FastCGI-Server, der 127.0.0.1:9000 überwacht # location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # HINWEIS:Sie sollten "cgi.fix_pathinfo =0;" haben in php.ini # Nur mit php5-cgi:#fastcgi_pass 127.0.0.1:9000; # Mit php5-fpm:fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; schließen Sie fastcgi_params ein; } # Zugriff auf .htaccess-Dateien verweigern, wenn Apaches Dokumentenstamm # mit nginxs einem # Standort übereinstimmt ~ /\.ht { deny all; }}[...]

Entkommentieren Sie beide Listenzeilen, damit nginx auf Port 80 IPv4 und lauscht IPv6.

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 ich die Zeile try_files $uri =404; um Zero-Day-Exploits zu verhindern (siehe http://wiki.nginx.org/Pitfalls#Passing_Unkontrollierte_Requests_to_PHP und http://forum.nginx.org/read.php?2,88845,page=3).

Speichern Sie nun die Datei und laden Sie nginx neu:

/etc/init.d/nginx neu laden

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

vi /etc/php5/fpm/php.ini

... und setze cgi.fix_pathinfo=0:

[...]; cgi.fix_pathinfo bietet *echte* PATH_INFO/PATH_TRANSLATED-Unterstützung für CGI. PHPs; Das frühere Verhalten bestand darin, PATH_TRANSLATED auf SCRIPT_FILENAME und nicht auf grok zu setzen. was PATH_INFO ist. Weitere Informationen zu PATH_INFO finden Sie in den CGI-Spezifikationen. Einstellung; Dies auf 1 wird PHP CGI veranlassen, seine Pfade so zu korrigieren, dass sie der Spezifikation entsprechen. Eine Einstellung; von Null bewirkt, dass sich PHP wie zuvor verhält. Standard ist 1. Sie sollten Ihre Skripte reparieren; um SCRIPT_FILENAME statt PATH_TRANSLATED zu verwenden.; http://php.net/cgi.fix-pathinfocgi.fix_pathinfo=0[...]

PHP-FPM neu laden:

/etc/init.d/php5-fpm neu laden

Erstellen Sie nun im Document Root /usr/share/nginx/html die folgende PHP-Datei:

vi /usr/share/nginx/html/info.php

Nun nennen wir diese Datei in einem Browser (z. B. http://192.168.0.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 MySQL-Unterstützung in PHP5 erhalten

Um MySQL-Unterstützung in PHP zu erhalten, können wir das Paket php5-mysql 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-Suche php5

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

apt-get install php5-mysql 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-snmp php5 -sqlite php5-tidy php5-xmlrpc php5-xsl

APC ist ein kostenloser und offener 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:

apt-get install php-apc

Laden Sie nun PHP-FPM neu:

/etc/init.d/php5-fpm neu laden

Laden Sie nun http://192.168.0.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 eine TCP-Verbindung 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...

vi /etc/php5/fpm/pool.d/www.conf

... und lass die Listen-Zeile wie folgt aussehen:

[...];listen =/var/run/php5-fpm.socklisten =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:

/etc/init.d/php5-fpm neu laden

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:

vi /etc/nginx/sites-available/default
[...] location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # HINWEIS:Sie sollten "cgi.fix_pathinfo =0;" haben in php.ini # Nur mit php5-cgi:fastcgi_pass 127.0.0.1:9000; # Mit php5-fpm:#fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; schließen Sie fastcgi_params ein; }[...]

Zum Schluss nginx neu laden:

/etc/init.d/nginx neu laden

8 CGI/Perl-Skripte

Wenn Sie CGI/Perl-Skripte mit nginx bereitstellen möchten, lesen Sie bitte dieses Tutorial:Serving CGI Scripts With Nginx On Debian Squeeze/Ubuntu 11.04

Der empfohlene Weg ist die Verwendung von fcgiwrap (Kapitel 4).

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

Über den Autor

Falko Timme ist Der Besitzer von Timme Hosting (ultraschnelles Nginx-Webhosting). Er ist der Hauptbetreuer von HowtoForge (seit 2005) und einer der Kernentwickler von ISPConfig (seit 2000). Er hat auch zum O'Reilly-Buch "Linux System Administration" beigetragen.


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

  2. Installieren von Apache2 mit PHP5- und MySQL-Unterstützung auf Ubuntu 14.04LTS (LAMP)

  3. Installation von Lighttpd mit PHP5 (PHP-FPM) und MySQL-Unterstützung auf Ubuntu 14.04LTS

  4. So installieren Sie Nginx mit PHP5 und MySQL unter Ubuntu 11.10

  5. Installieren Sie Prosper202 mit Nginx, MySQL und PHP-FPM auf Ubuntu

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

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

Installieren von Nginx mit PHP5 (und PHP-FPM) und MySQL-Unterstützung (LEMP) auf Debian Wheezy

Installation von Lighttpd mit PHP5 (PHP-FPM) und MySQL-Unterstützung auf Debian Wheezy

Installieren von Nginx mit PHP5 (und PHP-FPM) und MySQL-Unterstützung unter CentOS 6.4

Installieren von Nginx mit PHP5 (und PHP-FPM) und MySQL-Unterstützung auf Fedora 19