Wie man Nginx mit PHP und MariaDB (LEMP-Stack) auf Fedora 31 installiert

Der LEMP-Software-Stapel ist eine Gruppe von Open-Source-Software, die zusammen installiert wird, um einen Server zum Hosten von Websites und Anwendungen zu ermöglichen. Es ist ein Akronym für Linux, ENginx-Server, MySQL (hier mit MariaDB) und PHP.

In diesem Handbuch installieren Sie einen LEMP-Stack auf einem Fedora 31-basierten Server. Wir werden auch PHPMyAdmin, Redis und Opcache installieren.

Voraussetzungen

  • Ein Server, auf dem Fedora 31 läuft.
  • Ein Nicht-Wurzel-Sudo-Benutzer.
  • Stellen Sie sicher, dass alles aktualisiert wird.
    $ sudo dnf upgrade
    
  • Wenige Pakete, die Ihr System benötigt.
    $ sudo dnf install wget curl nano -y
    

    Einige dieser Pakete sind möglicherweise bereits auf Ihrem System installiert.

  • Deaktivieren Sie SELinux.
    $ sudo setenforce 0
    

Konfigurieren Sie die Firewall

Der erste Schritt ist die Konfiguration der Firewall. Auf dem Fedora-Server ist die Firewall Firewalld vorinstalliert.

Prüfen Sie, ob die Firewall läuft.

$ sudo firewall-cmd --state

Sie sollten die folgende Ausgabe erhalten.

running

Stellen Sie die Standardzone der Firewall auf öffentlich ein.

$ sudo firewall-cmd --set-default-zone=public

Überprüfen Sie die aktuell erlaubten Dienste/Ports.

$ sudo firewall-cmd --zone=public --permanent --list-services

Es sollte die folgende Ausgabe zeigen.

dhcpv6-client mdns ssh

Erlauben Sie HTTP- und HTTPS-Ports.

$ sudo firewall-cmd --zone=public --permanent --add-service=http
$ sudo firewall-cmd --zone=public --permanent --add-service=https

Überprüfen Sie den Status der Firewall erneut.

$ sudo firewall-cmd --zone=public --permanent --list-services

Sie sollten eine ähnliche Ausgabe sehen.

dhcpv6-client http https mdns ssh

Laden Sie die Firewall neu.

$ sudo systemctl reload firewalld

PHP installieren

Fedora 31 wird standardmäßig mit PHP 7.3 ausgeliefert. Wir wollen aber PHP 7.4 installieren, für das wir das REMI-Repository hinzufügen müssen.

Installieren Sie das REMI-Repository, das das offizielle Fedora-Repository für die Installation von PHP-Paketen ist.

$ sudo dnf -y install https://rpms.remirepo.net/fedora/remi-release-31.rpm

Aktivieren Sie das remiund remi-php74Repositorium und deaktivieren Sie das remi-modularRepositorium. Dadurch wird das für die Installation von PHP 7.4-Paketen erforderliche Repository aktiviert.

$ sudo dnf config-manager --set-enabled remi
$ sudo dnf config-manager --set-enabled remi-php74
$ sudo dnf config-manager --set-disabled remi-modular

Installieren Sie PHP 7.4 zusammen mit einigen zusätzlichen Paketen.

$ sudo dnf install -y php-cli php-fpm php-mysqlnd

Prüfen Sie, ob PHP korrekt funktioniert.

$ php --version

Sie sollten eine ähnliche Ausgabe sehen.

PHP 7.4.3 (cli) (built: Feb 18 2020 11:53:05) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies

MariaDB installieren

MariaDB ist ein Drop-in-Ersatz für MySQL, d.h. die Befehle zum Ausführen und Betreiben von MariaDB sind die gleichen wie die für MySQL.

Fedora 31 wird standardmäßig mit MariaDB 10.3 ausgeliefert, aber wir können auch die neueste Version 10.4 (zum Zeitpunkt der Erstellung dieses Tutorials verfügbar) installieren. Dazu müssen wir das offizielle MariaDB-Repository hinzufügen.

Erstellen MariaDB.repoSie im /etc/yum.repos.d/Verzeichnis.

$ sudo nano /etc/yum.repos.d/MariaDB.repo

Fügen Sie den folgenden Code hinzu.

# MariaDB 10.4 Fedora repository list
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/fedora31-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Um MariaDB zu installieren, geben Sie die folgenden Befehle ein

$ sudo dnf install MariaDB-server -y

Beachten Sie den Befehl. Wenn Sie die Kopie(10.3) im Fedora-Repository installieren wollen, sollten Sie die Version 10.4 verwenden, sudo dnf install mariadb-serveraber für die Version 10.4 verwenden wir sudo dnf install MariaDB-server.

Prüfen Sie, ob MariaDB korrekt installiert ist.

$ mysql --version

Sie sollten die folgende Ausgabe sehen.

mysql  Ver 15.1 Distrib 10.4.12-MariaDB, for Linux (x86_64) using  EditLine wrapper

Aktivieren und starten Sie den MariaDB-Dienst.

$ sudo systemctl enable mariadb
$ sudo systemctl start mariadb

Führen Sie den folgenden Befehl aus, um eine Standardkonfiguration durchzuführen, wie z.B. die Vergabe eines Root-Passwortes, das Entfernen anonymer Benutzer, das Sperren der Root-Anmeldung aus der Ferne und das Löschen von Testtabellen.

$ sudo mysql_secure_installation

Mit MariaDB 10.4 werden Sie nun gefragt, ob Sie das root-Passwort oder das unix_socket-Plugin verwenden möchten. Das unix_socket-Plugin erlaubt es Ihnen, sich mit Ihren Linux-Benutzerdaten bei MariaDB anzumelden. Es gilt als sicherer, obwohl Sie einen traditionellen Benutzernamen/Passwort benötigen, um Anwendungen von Drittanbietern wie PhpMyAdmin zu benutzen. Wir werden für dieses Tutorial bei der Verwendung des unix_socket-Plugins bleiben. Sie können PhpMyAdmin weiterhin über jeden Benutzer verwenden, den Sie für Ihre Datenbanken anlegen.

Durch Drücken der Eingabetaste wählen Sie die Standardoption (diejenige, die großgeschrieben wird, in diesem Fall Y).

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): [PRESS ENTER]
OK, successfully used password, moving on...

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

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] [PRESS ENTER]
Enabled successfully!
Reloading privilege tables..
 ... Success!

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] [ANSWER n]

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] [PRESS ENTER]
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] [PRESS ENTER]
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] [PRESS ENTER]
 \- Dropping test database...
 ... Success!
 \- Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] [PRESS ENTER]
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Das ist alles. Wenn Sie sich das nächste Mal bei MySQL anmelden wollen, benutzen Sie folgenden Befehl

$ sudo mysql

Geben Sie Ihr Root-Passwort ein, wenn Sie dazu aufgefordert werden.

Nginx installieren

Fedora 31 wird standardmäßig mit der stabilen Version von Nginx (1.16.1) ausgeliefert. Wenn Sie die Mainline-Version von Nginx installieren wollen, folgen Sie unserer Anleitung zum Bauen von Nginx aus den Quellen. Stellen Sie sicher, dass Sie die neueste Version von Nginx und die im Tutorial erwähnten Abhängigkeiten mitnehmen. Der Rest der Anleitung bleibt gleich (Ändern Sie die Pfadnamen während des ./configureBefehls entsprechend). Für dieses Tutorial werden wir uns an die stabile Version von Nginx halten.

Installieren Sie den Nginx-Server.

$ sudo dnf install nginx -y

Prüfen Sie, ob es richtig funktioniert.

$ nginx -v

Sie sollten die folgende Ausgabe sehen.

nginx version: nginx/1.16.1

Starten und aktivieren Sie Nginx.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Öffnen Sie die IP-Adresse Ihres Servers in einem Browser, um die folgende Seite anzuzeigen. Das bedeutet, dass Nginx ordnungsgemäß funktioniert.

Fedora Nginx-Testseite

Konfigurieren Sie Nginx

Richten Sie Verzeichnisse ein, in denen die Serverblöcke leben werden.

$ sudo mkdir /etc/nginx/sites-available
$ sudo mkdir /etc/nginx/sites-enabled

Erstellen Sie das Verzeichnis, in dem Ihre Website gespeichert wird.

$ sudo mkdir /var/www/example.com/html -p

Die Verwendung der -p-Direktive erzeugt übergeordnete Verzeichnisse, die vorher nicht existierten.

Führen Sie den folgenden Befehl aus, um eine Konfigurationsdatei für Ihre Site hinzuzufügen.

$ sudo nano /etc/nginx/sites-available/example.com.conf

Fügen Sie den folgenden Code in den Editor ein.

server {
  listen          *:80;
  server_name     example.com;
  root            /var/www/example.com/html;
  index           index.php index.html;

  location / {
    try_files   $uri $uri/ =404;
  }
    
  access_log /var/log/nginx/example.com.access.log;
  error_log /var/log/nginx/example.com.error.log;

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

Diese Datei geht davon aus, dass wir example.comim Verzeichnis /var/www/html. Wenn Sie keine Domäne verwenden und Ihren Server so konfigurieren, dass er nur über die IP-Adresse/Localhost erreichbar ist, müssen Sie die entsprechenden Server-Block-Einstellungen aus der nginx.confDatei entfernen, da sonst der von Ihnen erstellte Server-Block durcheinander gebracht wird.

Aktivieren Sie diese Konfigurationsdatei, indem Sie sie mit dem sites-enabledVerzeichnis verknüpfen.

$ sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/

Öffnen Sie die /etc/nginx/nginx.confDatei zur Bearbeitung.

$ sudo nano /etc/nginx/nginx.conf	

Fügen Sie die folgenden Zeilen nach der Zeile include /etc/nginx/conf.d/*.conf

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

Ändern Sie den Wert types_hash_max_sizevon 2048 auf 4096.

types_hash_max_size 4096;

Drücken Sie Strg + X, um den Editor zu schließen, und drücken Sie Y, wenn Sie zum Speichern der Datei aufgefordert werden. Testen Sie die Nginx-Konfiguration.

$ sudo nginx -t

Sie sollten die folgende Ausgabe sehen, die anzeigt, dass Ihre Konfiguration korrekt ist.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Laden Sie den Nginx-Dienst neu.

$ sudo systemctl reload nginx

Konfigurieren Sie PHP-FPM

Öffnen Sie die Datei /etc/php-fpm.d/www.conf.

$ sudo nano /etc/php-fpm.d/www.conf

Wir müssen den Unix-Benutzer/die Gruppe von PHP-Prozessen auf nginx setzen. Suchen Sie die user=apacheund group=apacheZeilen in der Datei und ändern Sie sie auf nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx
...

Setzen Sie außerdem die Eigentumsrechte für den Unix-Socket auf nginx und entfernen Sie die ;davor liegenden.

listen.owner = nginx
listen.group = nginx

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Starten Sie den PHP-fpm-Prozess neu.

$ sudo systemctl restart php-fpm

Um Ihr PHP-Setup zu testen, erstellen Sie eine Datei test.phpim htmlOrdner.

$ sudo nano /var/www/example.com/html/test.php

Fügen Sie den folgenden Inhalt hinzu und speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

<?php phpinfo();

Starten http://<yourserverip>/test.phpSie in Ihrem Webbrowser und Sie sollten folgendes sehen.

PHP-Info-Seite

Schlussfolgerung

Das ist alles für dieses Tutorial. Ihr LEMP-Setup ist abgeschlossen, und Sie können mit der Erstellung und dem Hosting Ihrer Websites und Anwendungen beginnen.

Das könnte dich auch interessieren …