LEMP-Server
Ein Lemp-Server führt Nginx aus Webserver zusammen mit Php und Mysql oder MariaDB auf einem Linux System. Nginx wird aufgrund seiner leichten Struktur und seiner Fähigkeit, große Verkehrsmengen optimal zu bewältigen, immer beliebter. Mariadb ist der Ersatz für mysql, weil mysql nicht mehr sehr frei ist. In diesem Tutorial richten wir Nginx mit Php FPM auf CentOS ein. Die Anweisungen zur Installation von MariaDB werden in einem anderen Beitrag behandelt.
CentOS ist ein sehr beliebtes Betriebssystem für Linux-basierte Webserver. CentOS (Community Enterprise Operating System) basiert auf RHEL (RedHat Enterprice Linux) und ist damit 100% binärkompatibel. Für uns bedeutet es einfach, dass es in seiner Funktionsweise und Umgebung ähnlich zu rhel ist und dass wir den praktischen Befehl yum zur Verfügung haben, um Software einfach aus den Repositories zu installieren. In diesem Beispiel arbeiten wir an CentOS 6.4, das zum Zeitpunkt dieses Beitrags eine neuere Version ist.
Installieren Sie Nginx
Der erste Schritt besteht darin, den Nginx-Webserver zu installieren. Nginx ist in den standardmäßigen CentOS-Repositories nicht verfügbar, aber nginx bietet Centos-spezifische Repositories zur einfachen Verwendung.
Fügen Sie das nginx-Repository hinzu
Wir erstellen eine Repository-Datei im Verzeichnis /etc/yum.repos.d
$ nano /etc/yum.repos.d/nginx.repo
Öffnen Sie nun die Datei und fügen Sie die folgenden Zeilen hinzu. Diese Anweisungen werden direkt von Nginx bereitgestellt.
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
Speichern und schließen. Jetzt kann nginx installiert werden.
$ yum install nginx
Das Obige lädt den nginx-Webserver herunter, installiert ihn und macht ihn einsatzbereit.
Nach Abschluss der Installation ist es an der Zeit, eine Überprüfung vorzunehmen. Verwenden Sie zuerst den Dienstbefehl, um den Status von nginx zu überprüfen.
[[email protected] ~]# service nginx status nginx is stopped
Das Obige zeigt, dass der Nginx-Dienst vorhanden ist, aber gestoppt wird. Überprüfen Sie als Nächstes die Konfiguration mit der Option t mit dem Befehl nginx.
[[email protected] ~]# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Der obige Befehl zeigt an, dass die Konfiguration in Ordnung ist und alles zur Ausführung bereit ist. Und am wichtigsten ist, dass es auch den Speicherort der nginx-Konfigurationsdatei angibt. Zum Erstellen virtueller Hosts/mehrerer Domänen ist es wichtig, separate Konfigurationsdateien für jeden Host zu erstellen. Die Konfigurationen der virtuellen Hosts befinden sich unter /etc/nginx/conf.d/
OK, jetzt können wir den Nginx-Server starten.
[[email protected] conf.d]# service nginx start Starting nginx: [ OK ]
Jetzt ist nginx einsatzbereit. Finden Sie die IP-Adresse des Nginx-Servers mit ifconfig heraus und stellen Sie von einem Browser aus eine Verbindung zu dieser IP her, um es zu testen.
http://192.168.1.4/
Möglicherweise müssen Sie Port 80 auf dem Centos-Server öffnen, falls er noch nicht geöffnet ist. In diesem Tutorial erfahren Sie, wie Sie den HTTP-Port auf Centos öffnen. Sobald es geöffnet ist, sollte die IP-Adresse des Nginx-Servers die Seite mit Inhalten wie diesem laden
Welcome to nginx! If you see this page, the nginx web server is successfully installed and working. Further configuration is required. For online documentation and support please refer to nginx.org. Commercial support is available at nginx.com. Thank you for using nginx.
Erstellen eines virtuellen Hosts
Virtuelle Hosts oder "Serverblöcke", wie Nginx sie nennt, ermöglichen es Nginx, mehrere Hosts basierend auf einem Namen zu bedienen. Beispielsweise kann es abc.com und cde.com gemeinsam hosten. Alles, was es braucht, ist eine Konfigurationsdatei für jeden Host, die die hostspezifischen Einstellungen wie Root-Verzeichnis usw. enthält.
Das Verzeichnis /etc/nginx/conf.d/ enthält eine default.conf-Konfigurationsdatei, die die Einstellungen für einen virtuellen Host enthält, der über http://localhost/
funktioniertÜberprüfen Sie die Datei und es wird der Speicherort der Webdateien angezeigt, der als Root bezeichnet wird.
location / { root /usr/share/nginx/html; index index.html index.htm; }
Unsere Webdatei (.html, .php und alles) sollte also in /usr/share/nginx/html abgelegt werden Verzeichnis.
Um weitere virtuelle Hosts zu erstellen, kopieren Sie einfach die Datei default.conf und bearbeiten Sie die Einstellungen für den Stammpfad und den Servernamen so, dass sie mit denen Ihrer Domäne/Ihres Hosts übereinstimmen.
$ cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/mysite.conf
Bearbeiten Sie nun mysite.conf und konfigurieren Sie Einstellungen wie Stammverzeichnis und Servername.
Testen Sie dann Ihre nginx-Konfiguration und starten Sie den Server neu. Das sollte den neuen virtuellen Host erstellen.
Dateiberechtigungen
Beim Einrichten des Root-Verzeichnisses für die Webdateien muss darauf geachtet werden, dass die Dateien und alle übergeordneten Verzeichnisse von „group“ und „others“ auf dem System lesbar sind. Zum Beispiel eine Berechtigung von 0755. Nginx könnte die Dateien nicht lesen, wenn die übergeordneten Verzeichnisse nicht lesbar sind.
Zum Beispiel, wenn Sie Ihre Webdateien im folgenden Verzeichnis ablegen
/home/joe/public_html
Stellen Sie dann sicher, dass sowohl das Home- als auch das Joe-Verzeichnis von der Gruppe und anderen gelesen werden können. Andernfalls, selbst wenn die Webdateien für andere lesbar sind, aber nicht das übergeordnete Verzeichnis joe, wäre nginx nicht in der Lage, die Dateien zu lesen, und das Fehlerprotokoll würde Meldungen wie diese enthalten
open() "/home/joe/public_html/index.html" failed (13: Permission denied)
Installieren Sie PHP und FPM
Nachdem der nginx-Server nun eingerichtet ist und läuft, besteht die nächste Aufgabe darin, den PHP-Interpreter zu installieren, damit .php-Dateien von nginx verarbeitet werden können.
Da php-fpm bereits Teil des CentOS-Repositorys ist, müssen wir keinen weiteren Repo-Eintrag wie den für das nginx-Paket erstellen. Um also php-fpm zu installieren, können wir einfach den Befehl yum verwenden.
$ yum install php-fpm
Möglicherweise möchten Sie die Option "-C" verwenden, wenn Sie nicht möchten, dass yum die Repository-Daten aktualisiert, bevor die Pakete installiert werden.
Überprüfen Sie nun den Status des php-fpm-Dienstes
# service php-fpm status php-fpm is stopped
Dann starte es
# service php-fpm start Starting php-fpm: [ OK ] [[email protected] ~]#
Jetzt ist es an der Zeit, ein PHP-Skript zu erstellen und es zu testen. Das Verzeichnis der Webdateien ist /usr/share/nginx/html
Erstellen Sie also eine Datei in diesem Verzeichnis.
# nano /usr/share/nginx/html/phpinfo.php
Danach fügen wir diesen Inhalt hinzu.
<?php phpinfo();
Jetzt ist es an der Zeit, die Datei über unseren Browser zu öffnen.
http://192.168.1.4/phpinfo.php
NEIN, es wird noch nicht funktionieren, da wir nginx nicht für die Ausführung von PHP-Skripten konfiguriert haben.
Konfiguriere Nginx für die Ausführung von PHP
Nginx wird bereits mit einer Standardkonfiguration zur Verwendung von php fpm geliefert. Öffnen Sie die Datei /etc/nginx/conf.d/default.conf und kommentieren Sie die folgenden Zeilen aus.
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
Der SCRIPT_FILENAME ist sehr wichtig und muss auf den richtigen Ort verweisen, sonst würden Sie immer wieder "Datei nicht gefunden" erhalten. Fehler.
Speichern Sie die Datei und schließen Sie sie. Testen Sie jetzt Ihre neue nginx-Konfiguration.
# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful [[email protected] ~]#
Konfiguration ist in Ordnung. Starten Sie jetzt nginx neu, damit die neue Konfiguration wirksam wird.
# service nginx restart Stopping nginx: [ OK ] Starting nginx: [ OK ] [[email protected] ~]#
Fertig. Öffnen Sie nun das PHP-Skript in Ihrem Browser und es sollte sofort funktionieren.
http://192.168.1.4/phpinfo.php
APC installieren
APC ist der alternative PHP-Cache, der es PHP ermöglicht, sowohl Benutzerdaten als auch Opcode zwischenzuspeichern. Dadurch wird die PHP-Ausführung schneller als gewöhnlich. Das Paket für APC ist im Basis-Repository selbst verfügbar, sodass wir keine zusätzlichen Repositories konfigurieren müssen.
Installieren Sie es sofort mit yum.
# yum install php-pecl-apc
Starten Sie nun php-fpm neu, damit apc aktiviert wird
# service php-fpm restart Stopping php-fpm: [ OK ] Starting php-fpm: [ OK ] [[email protected] php.d]#
Die Konfigurationsdatei für apc befindet sich unter folgendem Pfad.
/etc/php.d/apc.ini
Derselbe Pfad wird auch in der Ausgabe der phpinfo()-Funktion erwähnt, wenn Sie dies überprüfen möchten.
Der Konfigurationsabschnitt der phpinfo.php-Seite sollte einen Abschnitt für apc haben, der die Werte verschiedener apc-Anweisungen zeigt. All diese Direktiven können in der apc.ini-Datei konfiguriert werden.
Notizen
1. Beim Konfigurieren virtueller Hosts schlägt der nginx-Konfigurationstest möglicherweise mit einem Fehler wie diesem fehl
# nginx -t nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32 nginx: configuration file /etc/nginx/nginx.conf test failed
Um diesen Fehler zu beheben, öffnen Sie die Hauptkonfigurationsdatei von nginx unter /etc/nginx/nginx.conf und fügen Sie die folgende Zeile in den http-Block ein.
server_names_hash_bucket_size 64;
Dadurch wird die Hash-Bucket-Größe erhöht und der Fehler behoben.