GNU/Linux >> LINUX-Kenntnisse >  >> Fedora

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

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

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.

2 Installation von MySQL/MariaDB 5

Zuerst installieren wir MySQL 5 wie folgt:

yum install mysql mysql-server

Dann erstellen wir die Systemstart-Links für MySQL (damit MySQL automatisch startet, wenn das System hochfährt) und starten den MySQL-Server:

systemctl enable mysqld.service
systemctl start mysqld.service

Überprüfen Sie nun, ob das Netzwerk aktiviert ist. Ausführen

netstat -tap | grep mysql

Es sollte etwa so aussehen:

[[email protected] ~]# netstat -tap | grep mysql
tcp        0      0 *:mysql                     *:*                         LISTEN      1116/mysqld
[[email protected] ~]#

Wenn dies nicht der Fall ist, bearbeiten Sie /etc/my.cnf und kommentieren Sie die Option skip-networking:

aus
vi /etc/my.cnf
[...]
#skip-networking
[...]

und starten Sie Ihren MySQL-Server neu:

systemctl restart mysqld.service

Ausführen

mysql_secure_installation

um ein Passwort für den Benutzer root festzulegen (ansonsten kann jeder auf Ihre MySQL-Datenbank zugreifen!):

[[email protected] ~]# mysql_secure_installation
/usr/bin/mysql_secure_installation: line 379: find_mysql_client: command not found

HINWEIS:DAS AUSFÜHREN ALLER TEILE DIESES SKRIPTS WIRD FÜR ALLE MariaDB EMPFOHLEN
      SERVER IM PRODUKTIONSEINSATZ! BITTE JEDEN SCHRITT AUFMERKSAM LESEN!

Um sich bei MariaDB anzumelden, um sie zu sichern, benötigen wir das aktuelle
Passwort für den Root-Benutzer. Wenn Sie MariaDB gerade installiert und
das Root-Passwort noch nicht festgelegt haben, ist das Passwort leer,
sollten Sie hier einfach die Eingabetaste drücken.

Enter Aktuelles Passwort für Root (Eingabe für keine): <-- ENTER
OK, erfolgreich verwendetes Passwort, weiter ...

Das Festlegen des Root-Passworts stellt sicher, dass sich niemand bei der MariaDB anmelden kann
Root-Benutzer ohne die entsprechende Berechtigung.

Root-Passwort festlegen? [Y/n] <-- ENTER
Neues Passwort: <-- yourrootsqlpassword
Neues Passwort erneut eingeben: <-- yourrootsqlpassword
Passwort erfolgreich aktualisiert!
Berechtigungstabellen werden neu geladen. .
 ... Erfolg!


Standardmäßig hat eine MariaDB-Installation einen anonymen Benutzer, der erlaubt, dass sich jeder
bei MariaDB anmelden kann, ohne einen Benutzeraccount haben zu müssen für
sie erstellt. Dies ist nur zum Testen sollte und damit die Installation
etwas flüssiger läuft. Sie sollten sie entfernen, bevor Sie in eine
Produktionsumgebung wechseln.

Anonyme Benutzer entfernen? [Y/n] <-- ENTER
 ... Erfolgreich!

Normalerweise sollte root nur erlaubt werden, sich von 'localhost' aus zu verbinden. Dies
stellt sicher, dass niemand das Root-Passwort aus dem Netzwerk erraten kann.

Root-Anmeldung aus der Ferne nicht zulassen? [J/n] <-- EINGABE
 ... Erfolg!

Standardmäßig wird MariaDB mit einer Datenbank namens "test" geliefert, auf die jeder
zugreifen kann. Dies ist ebenfalls nur zum Testen vorgesehen und sollte entfernt werden
bevor in eine Produktionsumgebung umgezogen wird.

Testdatenbank und Zugriff darauf entfernen? [Y/n] <-- ENTER
 - Testdatenbank wird gelöscht...
 ... Erfolg!
 - Berechtigungen für Testdatenbank entfernen...
 ... Erfolg !

Das Neuladen der Berechtigungstabellen stellt sicher, dass alle bisher vorgenommenen Änderungen
sofort wirksam werden.

Berechtigungstabellen jetzt neu laden? [Y/n] <-- EINGABE
 ... Erfolg!

Aufräumen ...

Alle fertig! Wenn Sie alle oben genannten Schritte ausgeführt haben, sollte Ihre MariaDB-Installation
jetzt sicher sein.

Vielen Dank, dass Sie MariaDB verwenden!
[[email protected] ~]#

3 Installieren von Nginx

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

yum install nginx

Dann erstellen wir die Systemstartlinks für nginx und starten es:

systemctl enable nginx.service
systemctl start nginx.service

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:

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). Es gibt ein php-fpm-Paket in den offiziellen Fedora 19-Repositorys, daher können wir php-fpm zusammen mit php-cli und einigen PHP5-Modulen wie php-mysqlnd installieren, die Sie benötigen, wenn Sie MySQL aus Ihren PHP-Skripten verwenden möchten:

yum install php-fpm php-cli php-mysqlnd php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-magickwand php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy

Zend OPcache ist ein kostenloser und offener PHP-Opcode-Cacher zum Zwischenspeichern und Optimieren von PHP-Zwischencode. Es ähnelt anderen PHP-Opcode-Cachern wie APC und Xcache. Es wird dringend empfohlen, eines davon zu installieren, um Ihre PHP-Seite zu beschleunigen. Da Zend OPcache nun offiziell in PHP 5.5 enthalten ist, verwenden wir es anstelle anderer Opcode-Cacher.

Zend OPcache kann wie folgt installiert werden:

yum install php-opcache

Um Fehler wie

[13-Nov-2011 22:13:16] PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead in /usr/share/nginx/html/info.php on line 2

... in /var/log/php-fpm/www-error.log wenn Sie ein PHP-Skript in Ihrem Browser aufrufen, sollten Sie /etc/php.ini öffnen und date.timezone:

setzen
vi /etc/php.ini
[...]
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = "Europe/Berlin"
[...]

Erstellen Sie als Nächstes die Systemstartlinks für php-fpm und starten Sie es:

systemctl enable php-fpm.service
systemctl start php-fpm.service

PHP-FPM ist ein Daemon-Prozess, 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.codemongers.com/NginxFullExample und hier:http://wiki.codemongers.com/NginxFullExample2)

Zuerst (dies ist optional) können Sie die Anzahl der Worker-Prozesse erhöhen und das keepalive_timeout auf einen vernünftigen Wert setzen:

[...]
worker_processes  4;
[...]
    keepalive_timeout  2;
[...]

Die virtuellen Hosts sind in Server-{}-Containern definiert. Der Standard-vhost wird weiter unten in der Datei /etc/nginx/nginx.conf definiert – ändern wir ihn wie folgt:

vi /etc/nginx/nginx.conf
[...]
    server {
        listen       80;
        server_name  _;

        #charset koi8-r;

        #access_log  /var/log/nginx/host.access.log  main;

        location / {
            root   /usr/share/nginx/html;
            index  index.php index.html index.htm;
        }

        # redirect server error pages to the static page /40x.html
        #
        error_page  404              /404.html;
        location = /40x.html {
            root   /usr/share/nginx/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/html;
        }

        # 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$ {
             root           /usr/share/nginx/html;
             try_files $uri =404;
             fastcgi_split_path_info ^(.+\.php)(/.+)$;
             fastcgi_pass   127.0.0.1:9000;
             fastcgi_index  index.php;
             fastcgi_param  SCRIPT_FILENAME  $document_root$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 /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. Ändern Sie die Root-Zeile in das Document Root der Website (z. B. root /usr/share/nginx/html;). Bitte stellen Sie sicher, dass Sie die Zeile fastcgi_param in fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name ändern; denn sonst findet der PHP-Interpreter das PHP-Skript, das Sie in Ihrem Browser aufrufen, nicht.

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:

systemctl reload nginx.service

Erstellen Sie nun die folgende PHP-Datei im Dokumentenstammverzeichnis /usr/share/nginx/html...

vi /usr/share/nginx/html/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, einschließlich des MySQL-Moduls:

  • nginx:http://nginx.org/
  • nginx-Wiki:http://wiki.nginx.org/
  • PHP:http://www.php.net/
  • PHP-FPM:http://php-fpm.org/
  • MySQL:http://www.mysql.com/
  • Fedora:http://fedoraproject.org/

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

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

  3. Installieren von Apache2 mit PHP5- und MySQL-Unterstützung auf OpenSUSE 13.1 (LAMP)

  4. Installieren von Apache 2 mit PHP5- und MySQL-Unterstützung auf Fedora 21 (LAMP)

  5. So installieren Sie Nginx mit PHP-FPM und MySQL auf Fedora 16 „Verne“

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

Lighttpd mit PHP5 (PHP-FPM) und MySQL auf Debian 8 (Jessie) installieren

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 Fedora 20 (LAMP)