LEMP (Linux, Nginx, MySQL/MariaDB, PHP/PHP-FPM und PhpMyAdmin) in Gentoo Linux installieren

Gentoo ist aufgrund seiner Ausrichtung auf das Erstellen von Quellen eine der schnellsten Linux-Distributionen und bietet über sein Software-Verwaltungsprogramm – Portage – bestimmte Tools, die benötigt werden, um eine komplette Plattform für Webentwickler zu erstellen, die sehr schnell funktioniert und eine hohe Anpassbarkeit bietet.

Install Nginx in Gentoo Linux

In diesem Thema wird Schritt für Schritt der Installationsprozess zur Erstellung einer kompletten Webumgebung mit LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin) erläutert und mit Hilfe von USE-Flags erklärt, die von der Portage-Paketverwaltung bereitgestellt werden. Diese bieten eine Reihe von Paketfunktionalitäten im Kompilierungsprozess – Module oder Einstellungen, die für eine Webplattform benötigt werden, und die die Serverkonfigurationen stark anpassen.

Anforderungen

  1. Gentoo-Installation mit einem gehärteten Profil für einen Server im Internet – Gentoo-Installationsanleitung.
  2. Netzwerk konfiguriert mit einer statischen IP-Adresse.

Schritt 1: Nginx-Webserver installieren

1. Bevor Sie mit der Nginx-Installation fortfahren, stellen Sie sicher, dass Ihre Netzwerkkarte mit einer statischen IP-Adresse konfiguriert ist und dass die Portage-Quellen und Ihr System auf dem neuesten Stand sind.

$ sudo su -
# emerge --sync
# emerge --update --deep --with-bdeps=y @world
Update Gentoo Linux

2. Nach Abschluss des Update-Vorgangs fahren Sie mit der Nginx-Installation fort, indem Sie die bevorzugten Einstellungen und Module auswählen, indem Sie die Nginx-USE-Flags in die make.conf-Datei von Portage eintragen. Listen Sie zuerst die Standardinstallationsmodule von Nginx auf, indem Sie den folgenden Befehl ausführen.

# emerge -pv nginx

Für detaillierte Modulinformationen (USE-Flags für Pakete) verwenden Sie den Befehl equery.

# equery uses nginx
List All Flag Modules

Installieren Sie dann Nginx mit dem folgenden Befehl.

# emerge --ask nginx
Install Nginx Web Server

Wenn Sie zusätzliche Module (WebDAV, fancyindex, GeoIP, etc.) neben den Standardmodulen benötigen, die Nginx kompilieren soll, fügen Sie sie alle in einer Zeile in der Datei Portage make.conf mit der Direktive NGINX_MODULES_HTTP hinzu und kompilieren Sie Nginx dann mit den neuen Modulen erneut.

# echo 'NGINX_MODULES_HTTP="dav auth_pam fancyindex geoip fastcgi uwsgi gzip rewrite"' >> /etc/portage/make.conf
# emerge --ask nginx
Compile Nginx for New Modules

3. Nachdem Portage fertig ist, Nginx zu installieren, starten Sie den HTTP-Daemon und überprüfen Sie ihn, indem Sie Ihren Browser auf http://localhost lenken.

Verify Nginx Web Server

Schritt 2: Installieren Sie PHP

4. Um die PHP-Skriptsprache mit dem Nginx-Server zu verwenden, installieren Sie den PHP-FastCGI-Prozess-Manager (FPM), indem Sie fpm und andere wichtige PHP-Erweiterungen zu den Portage-USE-Flags hinzufügen und stellen Sie sicher, dass Sie die Apache-Erweiterung entfernen.

# emerge -pv php
Install PHP in Gentoo
# equery uses php
PHP Extension Selection
# echo " dev-lang/php fpm cgi curl gd imap mysql mysqli pdo zip json xcache apc zlib zip truetype -apache2 " >> /etc/portage/package.use
# emerge --ask php

5. Bevor PHP-FPM gestartet wird, müssen einige Änderungen an der Dienstkonfigurationsdatei vorgenommen werden. Öffnen Sie die php-fpm-Konfigurationsdatei und nehmen Sie die folgenden Änderungen vor.

# nano /etc/php/fpm-php5.5/php-fpm.conf

Suchen Sie und kommentieren Sie die folgenden Direktiven aus, damit sie wie folgt aussehen.

error_log = /var/log/php-fpm.log
listen = 127.0.0.1:9000    ## Here you can use any HTTP socket (IP-PORT combination ) you want  ##
pm.start_servers = 20

6. Nachdem die PHP-FPM-Konfigurationsdatei bearbeitet wurde, ändern Sie die Berechtigungen der PHP-FPM-Protokolldatei und starten Sie den Dienst.

# chmod 755 /var/log/php-fpm.log
# /etc/init.d/php-fpm start

Auch wenn der PHP-FPM-Dienst gestartet wurde, kann Nginx nicht mit dem PHP-Gateway kommunizieren. Daher müssen einige Änderungen an den Nginx-Konfigurationsdateien vorgenommen werden.

Schritt 3: Nginx-Konfigurationen bearbeiten

7. Die Standardvorlagenkonfigurationsdatei von Nginx bietet lediglich einen grundlegenden HTTP-Socket nur für localhost. Um dieses Verhalten zu ändern und Virtual Hosts zu aktivieren, öffnen Sie die Datei nginx.conf im Verzeichnis /etc/nginx/ und nehmen Sie die folgenden Konfigurationen vor.

# nano /etc/nginx/nginx.conf

Suchen Sie den ersten server-Block, der localhost entspricht und auf die IP-Adresse 127.0.0.1 hört, und kommentieren Sie alle seine Anweisungen aus, damit sie wie im Screenshot unten aussehen.

Disable Basic HTTP Configuration

Schließen Sie die Datei noch nicht und fügen Sie ganz unten vor der letzten schließenden geschweiften Klammer “ } “ den folgenden Befehl hinzu.

Include /etc/nginx/sites-enabled/*.conf;
Enable Nginx Virtual Host

8. Erstellen Sie als Nächstes die Nginx-Verzeichnisse sites-enabled und sites-available (für nicht verwendete Virtual Hosts) und Konfigurationsdateien für localhost für die Protokolle HTTP und HTTPS.

# mkdir /etc/nginx/sites-available
# mkdir /etc/nginx/sites-enabled

Erstellen Sie die folgende Dateikonfiguration für localhost.

# nano /etc/nginx/sites-available/localhost.conf

Fügen Sie den folgenden Dateiinhalt hinzu.

server {
               listen 80;
               server_name localhost;

               access_log /var/log/nginx/localhost_access_log main;
               error_log /var/log/nginx/localhost_error_log info;

               root /var/www/localhost/htdocs;

                location / {
                index index.html index.htm index.php;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;

                                }

                         location ~ \.php$ {
                       # Test for non-existent scripts or throw a 404 error
                       # Without this line, nginx will blindly send any request ending in .php to php-fpm
                       try_files $uri =404;
                        include /etc/nginx/fastcgi.conf;
                       fastcgi_pass 127.0.0.1:9000;  ## Make sure the socket corresponds with PHP-FPM conf file
                        }
                }
Create Nginx Virtual Host Configuration

Erstellen Sie für localhost mit SSL die folgende Konfigurationsdatei.

# nano /etc/nginx/sites-available/localhost-ssl.conf

Fügen Sie den folgenden Dateiinhalt hinzu.

server {
               listen 443 ssl;
               server_name localhost;

            ssl on;
               ssl_certificate /etc/ssl/nginx/nginx.pem;
               ssl_certificate_key /etc/ssl/nginx/nginx.key;

               access_log /var/log/nginx/localhost.ssl_access_log main;
               error_log /var/log/nginx/localhost.ssl_error_log info;

               root /var/www/localhost/htdocs;

                                location / {
                index index.html index.htm index.php;
                autoindex on;
                autoindex_exact_size off;
                autoindex_localtime on;
                                 }                                                

                      location ~ \.php$ {
                       # Test for non-existent scripts or throw a 404 error
                       # Without this line, nginx will blindly send any request ending in .php to php-fpm
                       try_files $uri =404;
                       include /etc/nginx/fastcgi.conf;
                       fastcgi_pass 127.0.0.1:9000;
                                }
                }
Create SSL Nginx Virtual Host

9. Jetzt ist es an der Zeit, zwei Skripte auf einem ausführbaren Systempfad ($PATH-Shell-Variable) zu erstellen, die als Befehle fungieren, um Nginx Virtual Hosts zu aktivieren oder zu deaktivieren.

Erstellen Sie das erste Bash-Skript mit dem Namen n2ensite, das die Konfigurationsdateien für Virtual Hosts aktiviert, indem es eine symbolische Verknüpfung zwischen den angegebenen Hosts von sites-available und sites-enabled erstellt.

# nano /usr/local/bin/n2eniste

Fügen Sie den folgenden Dateiinhalt hinzu.

#!/bin/bash
if test -d /etc/nginx/sites-available && test -d /etc/nginx/sites-enabled  ; then
echo "-----------------------------------------------"
else
mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled
fi

avail=/etc/nginx/sites-available/$1.conf
enabled=/etc/nginx/sites-enabled/
site=`ls /etc/nginx/sites-available/`

if [ "$#" != "1" ]; then
                echo "Use script: n2ensite virtual_site"
                echo -e "\nAvailable virtual hosts:\n$site"
                exit 0
else

if test -e $avail; then
sudo ln -s $avail $enabled
else
echo -e "$avail virtual host does not exist! Please create one!\n$site"
exit 0
fi

if test -e $enabled/$1.conf; then
echo "Success!! Now restart nginx server: sudo /etc/init.d/ nginx restart"
else
echo  -e "Virtual host $avail does not exist!\nPlease see available virtual hosts:\n$site"
exit 0
fi
fi
Create Virtual Host Enable Script

10. Erstellen Sie dann das zweite Skript namens n2dissite, das angegebene aktive virtuelle Hosts aus dem Nginx-Pfad sites-enabled löscht, mit folgendem Inhalt.

# nano /usr/local/bin/n2dissite

Fügen Sie den folgenden Inhalt hinzu.

#!/bin/bash
avail=/etc/nginx/sites-enabled/$1.conf
enabled=/etc/nginx/sites-enabled
site=`ls /etc/nginx/sites-available/`

if [ "$#" != "1" ]; then
                echo "Use script: n2dissite virtual_site"
                echo -e "\nAvailable virtual hosts: \n$site"
                exit 0
else

if test -e $avail; then
sudo rm  $avail
else
echo -e "$avail virtual host does not exist! Exiting!"
exit 0
fi

if test -e $enabled/$1.conf; then
echo "Error!! Could not remove $avail virtual host!"
else
echo  -e "Success! $avail has been removed!\nPlease restart Nginx: sudo /etc/init.d/nginx restart"
exit 0
fi
fi
Create Virtual Host Disable Script

11. Nachdem Sie die Bash-Skripte bearbeitet haben, fügen Sie Ausführungsberechtigungen hinzu und aktivieren Sie lokale virtuelle Hosts – verwenden Sie den Dateinamen der Virtual Host-Konfigurationsdatei ohne die Erweiterung .conf, starten Sie dann Nginx und PHP-FPM-Dienste neu, um die Änderungen zu übernehmen.

# chmod +x /usr/local/bin/n2dissite
# chmod +x /usr/local/bin/n2ensite
# n2ensite localhost
# n2ensite localhost-ssl
# service nginx restart
# service php-fpm restart
Restart Nginx and PHP-FPM

12. Um die Konfigurationen zu testen, erstellen Sie eine PHP-Info-Datei im Standard-Root-Pfad für Webdateien auf localhost (/var/www/localhost/htdocs) und leiten Sie Ihren Browser auf https://localhost/info.php oder http://localhost/info.php um.

echo "<?php phpinfo(); ?>" /var/www/localhost/htdocs/info.php
Verify PHP Configuration

Verwenden Sie die Konfigurationsdateien für localhost Virtual Hosts als Vorlagen und mit n2enmod und n2dismod von Nginx können Sie jetzt ganz einfach so viele Websites hinzufügen, wie Sie möchten, stellen Sie jedoch sicher, dass Sie gültige DNS-Verweise für einen webfähigen Server im Internet haben oder verwenden Sie Einträge lokal in der Hosts-Datei des Systems.

Schritt 4: Installieren von MySQL/MariaDB + PhpMyAdmin

Um die MySQL-Datenbank und die Web-Oberfläche PhpMyAdmin für MySQL zu installieren, verwenden Sie das gleiche Verfahren wie auf Installing LAMP on Gentoo vorgestellt.

13. Wenn Sie stattdessen MariaDB, den Ersatz für MySQL, verwenden möchten, verwenden Sie die folgenden Befehle, um USE-Flags zu erhalten und es zu installieren.

# emerge -pv mariadb
# emerge --ask mariadb
Install MariaDB Database

Falls es zu einem Paketkonflikt mit MySQL kommt, fügen Sie die folgenden Zeilen zur Portage-package.accept.keywords hinzu.

# echo “=dev-db/mariadb-5.5.37-r1 ~amd64” >> /etc/portage/package.accept.keywords
# echo “=virtual/mysql-5.5 ~amd64” >> /etc/portage/package.accept.keywords
# emerge --ask mariadb

14. Nach der Installation der MySQL-Datenbank starten Sie den Dienst und sichern Sie ihn mit dem Befehl mysql_secure_installation ab (Root-Passwort ändern, Root-Login außerhalb des localhost deaktivieren, anonymen Benutzer/Testdatenbank entfernen).

# service mysql start
# mysql_secure_installation

15. Betreten Sie die MySQL-Datenbank mit dem Befehl mysql -u root -p, um die Funktionalität zu testen, und verlassen Sie sie mit dem Befehl exit.

# mysql -u root -p

MariaDB > show databases;
MariaDB > exit;
Verify MySQL Connectivity

16. Wenn Sie nicht so gut mit der MySQL-Befehlszeile umgehen können, installieren Sie das Web-Frontend PhpMyAdmin, indem Sie die folgenden Befehle ausführen.

# emerge -pv dev-db/phpmyadmin
# echo “dev-db/phpmyadmin setup vhosts” >> /etc/portage/package.use
# emerge  --ask dev-db/phpmyadmin
Install PhpMyAdmin

17. Nachdem PhpMyAdmin die Installation abgeschlossen hat, erstellen Sie eine Konfigurationsdatei basierend auf der Beispieldatei, ändern Sie das blowfish_secret-Passwort mit einem zufälligen String und erstellen Sie dann einen symbolischen Link von /usr/share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ zum Dokumentenstammweg des virtuellen Hosts, über den Sie auf die PhpMyAdmin-Weboberfläche zugreifen möchten.

# cd /usr/share/webapps/phpmyadmin/4.2.2/htdocs/
# cp config.sample.inc.php  config.inc.php
# nano config.inc.php
Configure PHPMyAdmin
# ln -s /usr/share/webapps/phpmyadmin/4.2.2/htdocs/  /var/www/localhost/htdocs/phpmyadmin
Create a PhpMyAdmin Symbolic Link

18. Um auf die MySQL-Datenbank über die PhpMyAdmin-Weboberfläche zuzugreifen, öffnen Sie einen Browser und verwenden Sie die folgende URL-Adresse https://localhost/phpmyadmin.

Verify PhpMyAdmin Login

19. Der letzte Schritt besteht darin, die Dienste systemweit zu aktivieren, sodass sie nach einem Neustart automatisch starten.

# rc-update add nginx default
# rc-update add php-fpm default
# rc-update add mysql default
Enable Services System Wide

Jetzt haben wir eine minimale Umgebung für das Webhosting eingerichtet, und wenn Sie nur HTML, JavaScript und PHP zur Erstellung dynamisch generierter Seiten verwenden und keine SSL-Websites benötigen, sollte die obige Konfiguration für Sie zufriedenstellend sein.

Source:
https://www.tecmint.com/install-lemp-in-gentoo-linux/