So installieren Sie den Linux-, Nginx-, MySQL-, PHP- (LEMP-) Stack unter CentOS 7

Einführung

Ein LEMP-Software-Stack ist eine Gruppe von Open Source-Software, die normalerweise zusammen installiert wird, damit ein Server dynamische Websites und Webanwendungen hosten kann. Dieser Begriff ist eigentlich ein Akronym, das dasLinux-Betriebssystem mit demENginx-Webserver (der die Apache-Komponente eines LAMP-Stacks ersetzt) ​​darstellt. Die Site-Daten werden in einerMySQL-Datenbank (unter Verwendung von MariaDB) gespeichert, und dynamischer Inhalt wird vonPHP verarbeitet.

In diesem Handbuch wird ein LEMP-Stack auf einem CentOS 7 VPS installiert. CentOS wird unsere erste Anforderung erfüllen: ein Linux-Betriebssystem.

[.note] #Note: Der LEMP-Stack kann automatisch auf Ihrem Droplet installiert werden, indem beim Startenthis script zu den Benutzerdaten hinzugefügt werden. Schauen Sie sichthis tutorial an, um mehr über Droplet-Benutzerdaten zu erfahren.
#

Voraussetzungen

Bevor Sie mit diesem Handbuch beginnen, sollten Sie auf Ihrem Server ein separates Benutzerkonto einrichten, das kein Root-Konto ist. Sie können dies lernen, indem Sie die Schritte 1 bis 4 ininitial server setup for CentOS 7ausführen.

Note about SELinux: Wenn Probleme auftreten, bei denen Nginx nicht ausgeführt wird, stellen Sie sicher, dass der SELinux-Kontext Ihrer Nginx-Konfigurationsdateien korrekt ist, oder ändern Sie den SELinux-Modus inpermissive oderdisabled.

[[Schritt eins - Installieren von Nginx]] == Schritt Eins - Installieren Sie Nginx

Um Webseiten für die Besucher unserer Website anzuzeigen, setzen wir Nginx ein, einen modernen, effizienten Webserver.

Um das CentOS 7 EPEL-Repository hinzuzufügen, öffnen Sie das Terminal und verwenden Sie den folgenden Befehl:

sudo yum install epel-release

Da wir den Befehlsudo verwenden, werden diese Operationen mit Root-Rechten ausgeführt. Sie werden aufgefordert, das Kennwort Ihres regulären Benutzers einzugeben, um zu überprüfen, ob Sie zum Ausführen von Befehlen mit Root-Berechtigungen berechtigt sind.

Nachdem das Nginx-Repository auf Ihrem Server installiert ist, installieren Sie Nginx mit dem folgenden Befehlyum:

sudo yum install nginx

Anschließend wird Ihr Webserver installiert.

Sobald es installiert ist, können Sie Nginx auf Ihrem VPS starten:

sudo systemctl start nginx

Sie können sofort eine Stichprobe durchführen, um zu überprüfen, ob alles wie geplant verlaufen ist, indem Sie die öffentliche IP-Adresse Ihres Servers in Ihrem Webbrowser aufrufen (im Hinweis unter der nächsten Überschrift erfahren Sie, wie Ihre öffentliche IP-Adresse lautet, wenn Sie nicht über diese Informationen verfügen bereits):

Open in a web browser:http://server_domain_name_or_IP/

Sie sehen die standardmäßige CentOS 7 Nginx-Webseite, die zu Informations- und Testzwecken zur Verfügung steht. Es sollte ungefähr so ​​aussehen:

CentOS 7 Nginx Default

Wenn Sie diese Seite sehen, ist Ihr Webserver jetzt korrekt installiert.

Bevor Sie fortfahren, müssen Sie Nginx für den Start beim Booten aktivieren. Verwenden Sie dazu den folgenden Befehl:

sudo systemctl enable nginx

So finden Sie die öffentliche IP-Adresse Ihres Servers

Wenn Sie die öffentliche IP-Adresse Ihres Servers nicht kennen, gibt es verschiedene Möglichkeiten, diese zu ermitteln. In der Regel ist dies die Adresse, die Sie für die Verbindung zu Ihrem Server über SSH verwenden.

Über die Befehlszeile finden Sie einige Möglichkeiten. Zunächst können Sie die Tools voniproute2verwenden, um Ihre Adresse zu erhalten, indem Sie Folgendes eingeben:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Dies gibt Ihnen ein oder zwei Zeilen zurück. Beide Adressen sind korrekt, aber Ihr Computer kann möglicherweise nur eine davon verwenden. Probieren Sie also jede einzelne aus.

Eine alternative Methode besteht darin, eine externe Partei zu verwenden, um Ihnen mitzuteilen, wieit Ihren Server sieht. Sie können dies tun, indem Sie einen bestimmten Server nach Ihrer IP-Adresse fragen:

curl http://icanhazip.com

Unabhängig von der Methode, mit der Sie Ihre IP-Adresse abrufen, können Sie diese in die Adressleiste Ihres Webbrowsers eingeben, um zu Ihrem Server zu gelangen.

[[Schritt zwei - Installation von mysql-mariadb]] == Schritt zwei - Installation von MySQL (MariaDB)

Nachdem wir unseren Webserver eingerichtet haben, ist es an der Zeit, MariaDB, einen MySQL-Ersatz, zu installieren. MariaDB ist ein von der Community entwickelter Zweig des relationalen Datenbankverwaltungssystems MySQL. Grundsätzlich wird damit der Zugriff auf Datenbanken organisiert und bereitgestellt, in denen auf unserer Website Informationen gespeichert werden können.

Auch hier können wiryum verwenden, um unsere Software zu erwerben und zu installieren. Dieses Mal werden wir auch einige andere "Hilfspakete" installieren, die uns dabei unterstützen, dass unsere Komponenten miteinander kommunizieren:

sudo yum install mariadb-server mariadb

Nach Abschluss der Installation müssen wir MariaDB mit dem folgenden Befehl starten:

sudo systemctl start mariadb

Nachdem unsere MySQL-Datenbank ausgeführt wird, möchten wir ein einfaches Sicherheitsskript ausführen, das einige gefährliche Standardeinstellungen entfernt und den Zugriff auf unser Datenbanksystem ein wenig sperrt. Starten Sie das interaktive Skript, indem Sie Folgendes ausführen:

sudo mysql_secure_installation

In der Eingabeaufforderung werden Sie nach Ihrem aktuellen Root-Passwort gefragt. Da Sie gerade MySQL installiert haben, werden Sie höchstwahrscheinlich keine haben. Lassen Sie das Feld leer, indem Sie die Eingabetaste drücken. Anschließend werden Sie gefragt, ob Sie ein Root-Passwort festlegen möchten. Geben SieY ein und befolgen Sie die Anweisungen:

mysql_secure_installation prompts:Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

New password: password
Re-enter new password: password
Password updated successfully!
Reloading privilege tables..
 ... Success!

Bei den restlichen Fragen drücken Sie einfach bei jeder Eingabeaufforderung die EINGABETASTE, um die Standardwerte zu akzeptieren. Dadurch werden einige Beispielbenutzer und -datenbanken entfernt, Remotestammanmeldungen deaktiviert und diese neuen Regeln geladen, sodass MySQL die von uns vorgenommenen Änderungen sofort berücksichtigt.

Das letzte, was Sie tun möchten, ist MariaDB zu aktivieren, um beim Booten zu starten. Verwenden Sie dazu den folgenden Befehl:

sudo systemctl enable mariadb

Jetzt ist Ihr Datenbanksystem eingerichtet und wir können weitermachen.

[[Schritt drei - Installieren von PHP]] == Schritt Drei - Installieren Sie PHP

PHP ist die Komponente unseres Setups, die Code verarbeitet, um dynamischen Inhalt anzuzeigen. Es kann Skripte ausführen, eine Verbindung zu unseren MySQL-Datenbanken herstellen, um Informationen abzurufen, und den verarbeiteten Inhalt an unseren Webserver übergeben, um ihn anzuzeigen.

Wir können dasyum-System erneut nutzen, um unsere Komponenten zu installieren. Wir werden auch die Pakete php-mysql und php-fpm einbinden:

sudo yum install php php-mysql php-fpm

Konfigurieren Sie den PHP-Prozessor

Wir haben jetzt unsere PHP-Komponenten installiert, müssen aber eine kleine Konfigurationsänderung vornehmen, um unser Setup sicherer zu machen.

Öffnen Sie die Hauptkonfigurationsdatei von php-fpm mit root-Rechten:

sudo vi /etc/php.ini

Was wir in dieser Datei suchen, ist der Parameter, der cgi.fix_pathinfo setzt. Dies wird mit einem Semikolon (;) auskommentiert und standardmäßig auf „1“ gesetzt.

Dies ist eine extrem unsichere Einstellung, da PHP versucht, die nächstgelegene Datei auszuführen, die es finden kann, wenn eine PHP-Datei nicht genau übereinstimmt. Auf diese Weise können Benutzer PHP-Anforderungen so erstellen, dass sie Skripts ausführen können, die sie nicht ausführen dürfen.

Wir werden diese beiden Bedingungen ändern, indem wir die Zeile auskommentieren und wie folgt auf "0" setzen:

/etc/php.ini excerpt

cgi.fix_pathinfo=0

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Öffnen Sie als Nächstes die Konfigurationsdateiwww.conf von php-fpm:

sudo vi /etc/php-fpm.d/www.conf

Suchen Sie die Zeile, die den Parameterlistenangibt, und ändern Sie sie so, dass sie wie folgt aussieht:

/etc/php-php.d/www.conf — 1 of 3

listen = /var/run/php-fpm/php-fpm.sock

Suchen Sie als Nächstes die Zeilen, in denenlisten.owner undlisten.group festgelegt sind, und kommentieren Sie sie aus. Sie sollten so aussehen:

/etc/php-php.d/www.conf — 2 of 3

listen.owner = nobody
listen.group = nobody

Suchen Sie zum Schluss die Zeilen, in denenuser undgroup festgelegt sind, und ändern Sie ihre Werte von "Apache" in "Nginx":

/etc/php-php.d/www.conf — 3 of 3

user = nginx
group = nginx

Dann speichern und beenden.

Jetzt müssen wir nur noch unseren PHP-Prozessor starten, indem wir Folgendes eingeben:

sudo systemctl start php-fpm

Dadurch wird die von uns vorgenommene Änderung umgesetzt.

Als nächstes aktivieren Sie php-fpm, um beim Booten zu starten:

sudo systemctl enable php-fpm

[[Schritt 4 - Konfigurieren von Nginx zum Verarbeiten von PHP-Seiten]] == Schritt 4 - Konfigurieren von Nginx zum Verarbeiten von PHP-Seiten

Jetzt haben wir alle erforderlichen Komponenten installiert. Die einzige Konfigurationsänderung, die wir noch vornehmen müssen, besteht darin, Nginx anzuweisen, unseren PHP-Prozessor für dynamische Inhalte zu verwenden.

Dies geschieht auf Serverblockebene (Serverblöcke ähneln den virtuellen Hosts von Apache). Öffnen Sie die Standardkonfigurationsdatei für den Nginx-Serverblock, indem Sie Folgendes eingeben:

sudo vi /etc/nginx/conf.d/default.conf

Derzeit sieht der Nginx-Standardserverblock mit den entfernten Kommentaren folgendermaßen aus:

/etc/nginx/conf.d/default.conf — original

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

Wir müssen einige Änderungen an dieser Datei für unsere Site vornehmen.

  • Zuerst müssen wir eine index.php-Option als ersten Wert unserer index-Direktive hinzufügen, damit PHP-Indexdateien geliefert werden können, wenn ein Verzeichnis angefordert wird

  • Wir müssen auch die Anweisung server_name so ändern, dass sie auf den Domainnamen oder die öffentliche IP-Adresse unseres Servers verweist

  • Die eigentliche Konfigurationsdatei enthält einige auskommentierte Zeilen, die Fehlerbehandlungsroutinen definieren. Wir werden diejenigen auskommentieren, die diese Funktionalität enthalten

  • Für die eigentliche PHP-Verarbeitung müssen wir einen Teil eines anderen Abschnitts auskommentieren. Wir müssen auch eine try_files-Direktive hinzufügen, um sicherzustellen, dass Nginx keine schlechten Anfragen an unseren PHP-Prozessor weiterleitet

Die Änderungen, die Sie vornehmen müssen, sind im folgenden Text rot dargestellt. Wenn Sie möchten, können Sie einfach alles kopieren und einfügen und dann den Wert vonserver_name durch den entsprechenden Domänennamen oder die entsprechende IP-Adresse ersetzen:

/etc/nginx/conf.d/default.conf — updated

server {
    listen       80;
    server_name  server_domain_name_or_IP;

    # note that these lines are originally from the "location /" block
    root   /usr/share/nginx/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Wenn Sie die obigen Änderungen vorgenommen haben, können Sie die Datei speichern und schließen.

Starten Sie Nginx neu, um die erforderlichen Änderungen vorzunehmen:

sudo systemctl restart nginx

[[Schritt 5 - Test-PHP-Verarbeitung auf Ihrem Webserver]] == Schritt 5 - Testen Sie die PHP-Verarbeitung auf Ihrem Webserver

Um zu testen, ob unser System richtig für PHP konfiguriert ist, können wir ein sehr einfaches PHP-Skript erstellen.

Wir werden dieses Skriptinfo.php nennen. Damit Apache die Datei finden und korrekt bereitstellen kann, muss sie in einem bestimmten Verzeichnis gespeichert werden, das als "Web-Root" bezeichnet wird.

In CentOS 7 befindet sich dieses Verzeichnis bei/usr/share/nginx/html/. Wir können die Datei an diesem Ort erstellen, indem wir Folgendes eingeben:

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

Dies öffnet eine leere Datei. Wir möchten den folgenden Text, bei dem es sich um gültigen PHP-Code handelt, in die Datei einfügen:

Testen Sie PHP Script

Wenn Sie fertig sind, speichern und schließen Sie die Datei.

Jetzt können wir testen, ob unser Webserver die von einem PHP-Skript erzeugten Inhalte korrekt anzeigen kann. Um dies auszuprobieren, müssen wir nur diese Seite in Ihrem Webbrowser besuchen. Sie benötigen die öffentliche IP-Adresse Ihres Servers erneut.

Die Adresse, die Sie besuchen möchten, lautet:

Open in a web browser:http://your_server_IP_address/info.php

Die Seite, zu der Sie kommen, sollte ungefähr so ​​aussehen:

CentOS 7 default PHP info

Auf dieser Seite finden Sie im Wesentlichen Informationen zu Ihrem Server aus Sicht von PHP. Dies ist nützlich für das Debuggen und um sicherzustellen, dass Ihre Einstellungen korrekt angewendet werden.

Wenn dies erfolgreich war, funktioniert Ihr PHP wie erwartet.

Sie möchten diese Datei wahrscheinlich nach diesem Test entfernen, da sie möglicherweise nicht autorisierten Benutzern Informationen über Ihren Server liefert. Dazu können Sie Folgendes eingeben:

sudo rm /usr/share/nginx/html/info.php

Sie können diese Seite jederzeit neu erstellen, wenn Sie später erneut auf die Informationen zugreifen müssen.

Fazit

Nachdem Sie einen LEMP-Stack installiert haben, haben Sie viele Möglichkeiten, was Sie als Nächstes tun möchten. Grundsätzlich haben Sie eine Plattform installiert, mit der Sie die meisten Arten von Websites und Websoftware auf Ihrem Server installieren können.