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

Installieren von Nginx mit PHP5- und MySQL-Unterstützung auf Ubuntu 8.10

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 8.10-Server mit PHP5-Unterstützung (über FastCGI) und MySQL-Unterstützung installieren können.

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.

2 Installation von MySQL 5.0

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 8.10 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 Willkommensseite von nginx sehen:

Um nginx beim Booten starten zu lassen, führen Sie

aus
update-rc.d nginx defaults

4 Installation von PHP5

Wir können PHP5 über FastCGI in Nginx zum Laufen bringen. Glücklicherweise stellt Ubuntu ein FastCGI-fähiges PHP5-Paket bereit, das wir wie folgt installieren (zusammen mit einigen PHP5-Modulen wie php5-mysql, die Sie benötigen, wenn Sie MySQL aus Ihren PHP-Skripten verwenden möchten):

apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Öffnen Sie dann /etc/php5/cgi/php.ini und fügen Sie die Zeile cgi.fix_pathinfo =1 ganz am Ende der Datei hinzu:

vi /etc/php5/cgi/php.ini
[...]
cgi.fix_pathinfo = 1

Es gibt kein eigenständiges FastCGI-Daemon-Paket für Ubuntu, daher verwenden wir das spawn-fcgi-Programm von lighttpd. Wir installieren lighttpd wie folgt:

apt-get install lighttpd

Sie sehen eine Fehlermeldung, die besagt, dass lighttpd nicht gestartet werden konnte, da Port 80 bereits verwendet wird. So soll es sein, denn nginx lauscht bereits auf Port 80. Run

update-rc.d -f lighttpd remove

damit lighttpd beim Booten nicht startet.

Wir haben lighttpd installiert, weil wir nur ein Programm benötigen, das im Paket enthalten ist, /usr/bin/spawn-fcgi, mit dem wir FastCGI-Prozesse starten können. Schau mal auf

spawn-fcgi --help

um mehr darüber zu erfahren.

Um einen PHP FastCGI-Daemon zu starten, der auf Port 9000 auf localhost lauscht und als Benutzer und Gruppe www-data läuft, führen wir den folgenden Befehl aus:

/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid

Natürlich möchten Sie diesen Befehl nicht jedes Mal manuell eingeben, wenn Sie das System booten. Damit das System den Befehl automatisch beim Booten ausführt, öffnen Sie /etc/rc.local...

vi /etc/rc.local

... und fügen Sie am Ende der Datei (vor der Exit-Zeile) den Befehl hinzu:

[...]
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
[...]

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.codemongers.com/NginxFullExample und hier:http://wiki.codemongers.com/NginxFullExample2)

Erhöhen Sie zunächst (optional) die Anzahl der Worker-Prozesse und setzen Sie keepalive_timeout auf einen vernünftigen Wert:

[...]
worker_processes  5;
[...]
    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;
        server_name  _;

        access_log  /var/log/nginx/localhost.access.log;

        location / {
                root   /var/www/nginx-default;
                index  index.php index.html index.htm;
        }

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

        location /images {
                root   /usr/share;
                autoindex on;
        }

        #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   /var/www/nginx-default;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
                #proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www/nginx-default$fastcgi_script_name;
                include        fastcgi_params;
        }

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

In der Position / Teil habe ich index.php zur Indexzeile hinzugefügt. root /var/www/nginx-default; bedeutet, dass der Dokumentenstamm das Verzeichnis /var/www/nginx-default.

ist

Der wichtige Teil für PHP ist die Zeile location ~ \.php$ {}. Kommentieren Sie es aus, um es zu aktivieren. Bitte stellen Sie sicher, dass Sie die Zeile fastcgi_param in fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name ändern; (ersetzen Sie /var/www/nginx-default durch den Dokumentenstamm Ihres vhosts), da der PHP-Interpreter sonst das PHP-Skript, das Sie in Ihrem Browser aufrufen, nicht findet.

Stellen Sie sicher, dass zwischen include und fastcgi_params einige Leerzeichen stehen; - in der Standarddatei wird dies als ein Wort geschrieben, was ein Fehler ist.

Speichern Sie nun die Datei und starten Sie nginx neu:

/etc/init.d/nginx restart

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

vi /var/www/nginx-default/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 FastCGI, wie in der Server-API-Zeile gezeigt. Wenn Sie weiter nach unten scrollen, sehen Sie alle Module, die bereits in PHP5 aktiviert sind, einschließlich des MySQL-Moduls:

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

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. Installieren von Apache2 mit PHP5- und MySQL-Unterstützung auf OpenSUSE 13.1 (LAMP)

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

Installieren von Apache2 mit PHP5- und MySQL-Unterstützung auf CentOS 6.2 (LAMP)

Installieren von Apache2 mit PHP5- und MySQL-Unterstützung auf CentOS 6.3 (LAMP)

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

Installieren von Apache2 mit PHP5- und MySQL-Unterstützung auf CentOS 6.4 (LAMP)

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

Installieren von Apache2 mit PHP5- und MySQL-Unterstützung auf Fedora 20 (LAMP)