Website-Suche

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


Gentoo ist aufgrund seiner Build-from-Source-Ausrichtung eine der schnellsten Linux-Distributionen und stellt über sein Softwareverwaltungsprogramm – Portage – bestimmte Tools bereit, die zum Aufbau einer vollständigen Webentwicklerplattform erforderlich sind agiert und arbeitet sehr schnell und verfügt zudem über einen hohen Grad an Individualisierung.

Dieses Thema führt Sie Schritt für Schritt durch den Installationsprozess zum Aufbau einer vollständigen Webumgebungsplattform mit LEMP (Linux Nginx, MySQL/MariaDB, PHP-FPM/PhpMyadmin) und mit der Hilfe auf USE-Flags, die von Portage Package Management bereitgestellt werden und eine Reihe von Paketfunktionen beim Kompilierungsprozess bieten – Module oder Einstellungen, die für eine Webplattform erforderlich sind – werden die Serverkonfigurationen stark optimieren.

Anforderungen

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

Schritt 1: Installieren Sie den Nginx-Webserver

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

sudo su -
emerge --sync
emerge --update --deep --with-bdeps=y @world

2. Fahren Sie nach Abschluss des Aktualisierungsvorgangs mit der Nginx-Installation fort, indem Sie die bevorzugten Einstellungen und Module auswählen, indem Sie Nginx USE-Flags in die Portage-Datei make.conf übertragen . Listen Sie zunächst die Nginx-Standardinstallationsmodule 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

Anschließend installieren Sie Nginx mit dem folgenden Befehl.

emerge --ask nginx

Wenn Sie neben den Standardmodulen zusätzliche Module (WebDAV, fancyindex, GeoIP usw.) benötigen, mit denen Nginx kompiliert, hängen Sie sie alle in einer einzigen Zeile an die Portage-Datei make.conf mit NGINX_MODULES_HTTP< an-Direktive und kompilieren Sie dann Nginx mit neuen Modulen neu.

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

3. Nachdem Portage Nginx erstellt hat, starten Sie den http-Daemon und überprüfen Sie ihn, indem Sie Ihren Browser auf http://localhost umleiten.

Schritt 2: PHP installieren

4. Um die dynamische Webprogrammiersprache PHP mit dem Nginx-Server zu verwenden, installieren Sie PHP-FastCGI Process Manager (FPM), indem Sie fpm< anhängen und andere wichtige PHP-Erweiterungen auf Portage USE-Flags und stellen Sie sicher, dass Sie die Apache-Erweiterung entfernen.

emerge -pv php

equery uses php

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. Vor dem Start von PHP-FPM müssen einige Änderungen an der Dienstkonfigurationsdatei vorgenommen werden. Öffnen Sie die Konfigurationsdatei php-fpm und nehmen Sie die folgenden Änderungen vor.

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

Suchen Sie die folgenden Anweisungen und kommentieren Sie sie aus, damit sie so 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 ist, 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 Nginx-Standardvorlagenkonfigurationsdatei stellt lediglich einen einfachen HTTP-Socket nur für localhost bereit. Um dieses Verhalten zu ändern und virtuelle Hosts zu aktivieren, öffnen Sie die Datei nginx.conf im Pfad /etc/nginx/ und nehmen Sie die folgenden Konfigurationen vor.

nano /etc/nginx/nginx.conf

Suchen Sie den ersten Server-Block, der „localhost“ entspricht und die IP-Adresse 127.0.0.1 abhört, und lassen Sie alle seine Anweisungen wie im folgenden Screenshot aussehen.

Schließen Sie die Datei noch nicht, gehen Sie ganz nach unten und fügen Sie vor der letzten schließenden geschweiften Klammer die folgende Anweisung hinzu: “ } „.

Include /etc/nginx/sites-enabled/*.conf;

8. Erstellen Sie als Nächstes sites-enabled und sites-available (für ungenutzte virtuelle Hosts) Nginx-Verzeichnisse und Konfigurationsdateien für localhost auf HTTP- und HTTPS-Protokollen .

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
                        }
                }

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;
                                }
                }

9. Jetzt ist es an der Zeit, zwei Skripte auf einem ausführbaren Systempfad (` PATH-Shell-Variable) zu erstellen, die als Befehle zum Aktivieren oder Deaktivieren von Nginx Virtual Hosts dienen.

Erstellen Sie das erste Bash-Skript mit dem Namen n2ensite, das die Konfigurationsdateien für virtuelle Hosts aktiviert, indem es einen symbolischen Link zwischen angegebenen Hosts von sites-available zu 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

10. Erstellen Sie dann das zweite Skript namens n2dissite, das die angegebenen aktiven virtuellen Hosts aus dem sites-enabled Nginx-Pfad mit dem folgenden Inhalt löscht.

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

11. Nachdem Sie die Bearbeitung der Bash-Skripte abgeschlossen haben, fügen Sie Ausführungsberechtigungen hinzu und aktivieren Sie die virtuellen Hosts von localhost – verwenden Sie den Namen der Virtual Host-Konfigurationsdatei ohne die Erweiterung .conf und starten Sie dann die Nginx- und PHP-FPM-Dienste neu Änderungen anzuwenden.

chmod +x /usr/local/bin/n2dissite
chmod +x /usr/local/bin/n2ensite
n2ensite localhost
n2ensite localhost-ssl
service nginx restart
service php-fpm restart

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

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

Mit den Konfigurationsdateien der virtuellen Hosts von localhost als Vorlagen und den Nginx n2enmod und n2dismod können Sie jetzt ganz einfach so viele Websites hinzufügen, wie Sie möchten. Stellen Sie jedoch sicher, dass Sie über gültige DNS-Zeiger für ein Internet verfügen -facing Webserver oder verwenden Sie Einträge lokal in der System-Hosts-Datei.

Schritt 4: Installieren Sie MySQL/MariaDB + PhpMyAdmin

Um die MySQL-Datenbank und die PhpMyAdmin-Webschnittstelle für MySQL zu installieren, verwenden Sie das gleiche Verfahren wie unter LAMP auf Gentoo installieren beschrieben.

13. Wenn Sie im Gegenzug MariaDB, einen Ersatz für MySQL, verwenden möchten, verwenden Sie die folgenden Befehle, um USE-Flags abzurufen und zu installieren.

emerge -pv mariadb
emerge --ask mariadb

Falls Sie einen Paketkonflikt mit MySQL erhalten, fügen Sie die folgenden Zeilen zu 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. Nachdem die MySQL-Datenbank installiert ist, starten Sie den Dienst und sichern Sie ihn mit mysql_secure_installation (Root-Passwort ändern, Root-Anmeldung außerhalb von localhost deaktivieren, anonyme Benutzer/Testdatenbank entfernen).

service mysql start
mysql_secure_installation

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

mysql -u root -p

MariaDB > show databases;
MariaDB > exit;

16. Wenn Sie mit der MySQL-Befehlszeile nicht so gut umgehen können. Installieren Sie das PhpMyAdmin-Web-Frontend, 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

17. Nachdem die Installation von PhpMyAdmin abgeschlossen ist, erstellen Sie eine Konfigurationsdatei basierend auf der Beispielkonfigurationsdatei, ändern Sie die Passphrase blowfish_secret durch eine zufällige Zeichenfolge und erstellen Sie dann einen symbolischen Link von /usr /share/webapps/phpmyadmin/phpmyadmin_version_number/htdocs/ zum Stammpfad des Virtual Hosts-Dokuments, ü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

ln -s /usr/share/webapps/phpmyadmin/4.2.2/htdocs/  /var/www/localhost/htdocs/phpmyadmin

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

19. Der letzte Schritt besteht darin, Dienste systemweit zu aktivieren, damit sie nach dem Neustart automatisch gestartet werden.

rc-update add nginx default
rc-update add php-fpm default
rc-update add mysql default

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