NGINX mit PHP7-FPM unter CentOS 7 (LEMP)

LEMP Stack (NGINX mit MariaDB und PHP7)

LEMP

Heute beschäftigen wir uns mal nicht mit Debian, sondern mit CentOS 7. Genauer gesagt der Installation von NGINX mit MariaDB und PHP7-FPM, kurz einem LEMP Stack.

Wir Logen uns auf dem CentoOS System ein und bringen es erst mal auf den neusten Stand und werden auch gleich das System vorbereiten.

yum update
yum upgrade
yum install epel-release

Da PHP7 standardmässig nicht in den CentOS Repos vorhanden ist, müssen wir noch zusätzliche Quellen einbinden.

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm

yum install yum-utils
yum-config-manager --enable remi-php71

Installieren wir im weiteren Schritt nun die erforderlichen Pakete wie NGINX, PHP7 und MariaDB

yum install nginx mariadb mariadb-server php php-devel php-fpm php-gd php-mbstring php-pdo php-pecl-swoole php-pgsql php-mcrypt php-mysql

Jetzt sorgen wir dafür das NGINX und MariaDB auch automatisch gestartet werden wenn es mal zu einem Serverneustart kommt.

systemctl start mariadb.service
systemctl enable mariadb.service

systemctl enable nginx.service
systemctl start nginx.service

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

Wenn wir jetzt die Domain oder IP aufrufen die zum Server gehört, sollten wir bereits die NGINX Default Seite zu Gesicht bekommen.

nginx-default

Wenn dies der Fall ist, widmen wir uns der MaraDB konfiguration.
Wir haben es bereits installiert und müssen nur noch das Root Passwort setzen. Dafür geben wir folgenden Befehl auf der Console ein.

Die weiteren Eingaben die benötigt werden sind selbsterklären

mysql_secure_installation

Zum Schluss legen wir uns eine NGINX conf Datei an in der wir auch angeben wie NGINX mit PHP-FPM umgehen soll. Wir legen im Ordner /etc/nginx/conf.d eine Datei namens domain.conf an wobei domain durch eure Domain ersetzt werden kann.
Diese füllen wir mit folgendem Inhalt

server {
    listen 80;
    server_name domain.de;

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

    location ~ .php$ {
                try_files $uri =404;
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }

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

Beim Punkt server_name tragen wir unsere Domain ein. Der Block location (root) gibt an wo sich das www Verzeichnis der Domain befindet, in diesem Fall wäre das /usr/share/nginx/html. Wichtig ist für uns der Block location ~ .php$. Dieser gibt an wie mit PHP Files umgegangen werden soll.

Nachdem wir das erledigt haben, laden wir NGINX und PHP neu

systemctl start nginx.service
systemctl restart php-fpm.service

Um zu prüfen ob auch alles funktioniert, erstellen wir im Ordner /usr/share/nginx/html eine Datei namens info.php mit folgendem Inhalt

<?php

phpinfo();

?>

und rufen diese im Browser auf. Ihr solltet folgende Ausgabe erhalten

PHP-FPM

Unter Umständen kann es sein das eure Firewall auf dem Server keine http(s) Anfragen durch lässt. Dafür müssen wir auf der Console folgende Zeilen eingeben. Damit geben wir das http(s) Protokoll frei.

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

Das war es auch schon mit unserem LEMP Server. Wenn ihr wollt das eurer LEMP Server auch SSL unterstützt, dem kann ich folgendes Tutorial empfehlen https://www.fragz.de/zertifikate-von-lets-encrypt-fuer-nginx-einrichten

One Reply to “NGINX mit PHP7-FPM unter CentOS 7 (LEMP)”

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.