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

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

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 12.04 LTS-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 unterschiedlich sein, 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 12.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 12.04 ist /usr/share/nginx/www.

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 Port 9000 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; ## listen for ipv4; this line is default and implied
        listen   [::]:80 default ipv6only=on; ## listen for ipv6

        root /usr/share/nginx/www;
        index index.php index.html index.htm;

        # Make site accessible from http://localhost/
        server_name _;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to index.html
                try_files $uri $uri/ /index.html;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }

        location /doc/ {
                alias /usr/share/doc/;
                autoindex on;
                allow 127.0.0.1;
                deny all;
        }

        # Only for nginx-naxsi : process denied requests
        #location /RequestDenied {
                # For example, return an error code
                #return 418;
        #}

        #error_page 404 /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /usr/share/nginx/www;
        }

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                include fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.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/www; bedeutet, dass das Dokumentenstammverzeichnis das Verzeichnis /usr/share/nginx/www 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). Alternativ, wenn Sie die try_files $uri =404; Zeile können Sie cgi.fix_pathinfo =0 setzen; in /etc/php5/fpm/php.ini (vergessen Sie nicht, PHP-FPM danach neu zu laden).

Speichern Sie nun die Datei und laden Sie nginx neu:

/etc/init.d/nginx reload

Erstellen Sie nun die folgende PHP-Datei im Dokumentenstammverzeichnis /usr/share/nginx/www:

vi /usr/share/nginx/www/info.php
<?php
phpinfo();
?>

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

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

Xcache kann wie folgt installiert werden:

apt-get install php5-xcache

Laden Sie nun PHP-FPM neu:

/etc/init.d/php5-fpm reload

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 dazu bringen, einen Unix-Socket zu verwenden

Standardmäßig lauscht PHP-FPM auf Port 9000 auf 127.0.0.1. Es ist auch möglich, PHP-FPM dazu zu bringen, einen Unix-Socket zu verwenden, wodurch der TCP-Overhead vermieden wird. Ö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 = 127.0.0.1:9000
listen = /tmp/php5-fpm.sock
[...]

Laden Sie dann PHP-FPM neu:

/etc/init.d/php5-fpm reload

Gehen Sie als Nächstes Ihre Nginx-Konfiguration und alle Ihre vhosts durch und ändern Sie die Zeile fastcgi_pass 127.0.0.1:9000; zu fastcgi_pass unix:/tmp/php5-fpm.sock;, z.B. so:

 vi /etc/nginx/sites-available/default
[...]
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/tmp/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }
[...]

Zum Schluss nginx neu laden:

/etc/init.d/nginx reload

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

Installieren von Apache2 mit PHP5- und MySQL-Unterstützung auf Ubuntu 13.04 (LAMP)

Installieren von Nginx mit PHP5- und MySQL-Unterstützung auf Ubuntu 8.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