Website-Suche

Installation von LAMP (Linux, Apache, MySQL/MariaDB und PHP/PhpMyAdmin) in Arch Linux


Arch Linux bietet eine flexible, zeitgemäße Systemumgebung und ist eine leistungsstarke, am besten geeignete Lösung für die Entwicklung von Webanwendungen auf kleinen, nicht kritischen Systemen, da es sich um eine vollständige Open Source handelt und die aktuellsten Versionen von Kerneln und Websoftware bereitstellt Server und Datenbanken.

Der Hauptinhalt dieses Tutorials besteht darin, Sie durch eine vollständige Schritt-für-Schritt-Anleitung zu führen, die letztendlich zur Installation einer der am häufigsten verwendeten Softwarekombinationen in der Webentwicklung führt: LAMP (Linux, Apache, MySQL/MariaDB usw.). PHP/PhpMyAdmin) und es werden Ihnen einige nette Funktionen (schnelle und schmutzige Bash-Skripte) präsentiert, die in einem Arch Linux-System nicht vorhanden sind, aber die Arbeit beim Erstellen mehrerer virtueller Hosts erleichtern können , generieren Sie SSL-Zertifikate und Schlüssel, die für sichere HTTS-Transaktionen erforderlich sind.

Anforderungen

  1. Vorheriger Arch Linux-Installationsprozess – überspringen Sie den letzten Teil mit DHCP.
  2. Vorherige LEMP-Installation unter Arch Linux – nur der Teil mit der Konfiguration der statischen IP-Adresse und des Remote-SSH-Zugriffs.

Schritt 1: Installieren Sie die Basissoftware LAMP

1. Nach einer minimalen Systeminstallation mit statischer IP-Adresse und Remote-Systemzugriff über SSH aktualisieren Sie Ihre Arch Linux-Box mit dem Dienstprogramm pacman.

sudo pacman -Syu

2. Wenn der Upgrade-Prozess abgeschlossen ist, installieren Sie LAMP in Teilen, installieren Sie zuerst Apache Web Server und starten/überprüfen Sie jeden Serverprozess-Daemon.

sudo pacman -S apache 
sudo systemctl start httpd 
sudo systemctl status httpd

3. Installieren Sie die dynamische serverseitige Skriptsprache PHP und ihr Apache-Modul.

sudo pacman -S php php-apache

4. Im letzten Schritt installieren Sie die MySQL-Datenbank, wählen Sie 1 (MariaDB) Community-Datenbankzweig aus, starten Sie den Daemon und überprüfen Sie ihn.

sudo pacman -S mysql 
sudo systemctl start mysqld 
sudo systemctl status mysqld

Jetzt haben Sie die grundlegende LAMP-Software installiert und mit den bisherigen Standardkonfigurationen begonnen.

Schritt 2: Sichern Sie die MySQL-Datenbank

5. Der nächste Schritt besteht darin, die MySQL-Datenbank zu sichern, indem Sie ein Passwort für das Root-Konto festlegen, anonyme Benutzerkonten entfernen, die Testdatenbank entfernen und die Remote-Anmeldung für den Benutzer Root verbieten (drücken Sie [ Geben Sie den Schlüssel für das aktuelle Passwort des Root-Kontos ein und beantworten Sie alle Sicherheitsfragen mit Ja).

sudo mysql_secure_installation

6. Überprüfen Sie die Konnektivität der MySQL-Datenbank, indem Sie den folgenden Befehl ausführen und dann die Datenbank-Shell mit der Anweisung quit oder exit verlassen.

mysql -u root -p

Schritt 3: Ändern Sie die Apache-Hauptkonfigurationsdatei

7. Die folgenden Konfigurationen beziehen sich größtenteils auf Apache Web Server, um eine dynamische Schnittstelle für Virtual Hosting mit PHP-Skriptsprache, SSL oder bereitzustellen Virtuelle Nicht-SSL-Hosts können durch Ändern der httpd-Dienstdateikonfigurationen erfolgen.

Öffnen Sie zunächst die Hauptkonfiguration der Apache-Datei mit Ihrem bevorzugten Texteditor.

sudo nano /etc/httpd/conf/httpd.conf

Fügen Sie ganz unten in der Datei die folgenden zwei Zeilen hinzu.

IncludeOptional conf/sites-enabled/*.conf
IncludeOptional conf/mods-enabled/*.conf

Die Rolle von Include-Anweisungen besteht hier darin, Apache mitzuteilen, dass es von nun an weitere Konfigurationen aus allen Dateien lesen soll, die sich in /etc/httpd/conf/sites-enabled/ (für Virtual Hosting) und /etc/httpd/conf/mods-enabled/ (für enabled server-Module) Systempfade, die mit enden eine .conf-Erweiterung.

8. Nachdem Apache mit diesen beiden Anweisungen angewiesen wurde, erstellen Sie die erforderlichen Systemverzeichnisse, indem Sie die folgenden Befehle ausführen.

sudo mkdir /etc/httpd/conf/sites-available
sudo mkdir /etc/httpd/conf/sites-enabled
sudo mkdir /etc/httpd/conf/mods-enabled

Der Pfad sites-available enthält alle Virtual Hosts-Konfigurationsdateien, die nicht auf Apache aktiviert sind, aber das nächste Bash-Skript verwendet dieses Verzeichnis, um dort befindliche Websites zu verknüpfen und zu aktivieren.

Schritt 4: Erstellen Sie die Apache-Befehle a2eniste und a2diste

9. Jetzt ist es an der Zeit, a2ensite- und a2dissite-Apache-Skripte zu erstellen, die als Befehle zum Aktivieren oder Deaktivieren der Konfigurationsdatei des virtuellen Hosts dienen. Geben Sie den Befehl cd ein, um zu Ihrem $HOME-Benutzerpfad zurückzukehren und Ihre Bash-Skripte a2eniste und a2dissite mit Ihrem zu erstellen Lieblingsredakteur.

sudo nano a2ensite

Fügen Sie dieser Datei den folgenden Inhalt hinzu.

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

avail=/etc/httpd/conf/sites-available/$1.conf
enabled=/etc/httpd/conf/sites-enabled
site=`ls /etc/httpd/conf/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 Apache server: sudo systemctl restart httpd"
else
echo  -e "Virtual host $avail does not exist!\nPlease see avail virtual hosts:\n$site"
exit 0
fi
fi

Erstellen Sie nun eine a2dissite-Bash-Skriptdatei.

sudo nano a2dissite

Hängen Sie den folgenden Inhalt an.

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

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!\nsudo systemctl restart httpd"
exit 0
fi
fi

10. Nachdem die Dateien erstellt wurden, weisen Sie ihnen Ausführungsberechtigungen zu und kopieren Sie sie in ein ausführbares ` PATH-Verzeichnis, um sie systemweit verfügbar zu machen.

sudo chmod +x a2ensite a2dissite
sudo cp a2ensite a2dissite /usr/local/bin/

Schritt 5: Erstellen Sie virtuelle Hosts in Apache

11. Die Standardkonfigurationsdatei für den virtuellen Host für den Apache-Webserver unter Arch Linux wird von der Datei httpd-vhosts.conf bereitgestellt, die sich in /etc/httpd/conf/extra befindet / Pfad, aber wenn Sie ein System haben, das viele virtuelle Hosts verwendet, kann es sehr schwierig sein, den Überblick darüber zu behalten, welche Website aktiviert ist und welche nicht. Wenn Sie eine Website deaktivieren möchten, müssen Sie alle ihre Anweisungen kommentieren oder löschen. Dies kann eine schwierige Aufgabe sein, wenn Ihr System viele Websites bereitstellt und Ihre Website über mehr Konfigurationsanweisungen verfügt.

Durch die Verwendung der Pfade Sites verfügbar und Sites aktiviert wird die Aufgabe des Aktivierens oder Deaktivierens von Websites erheblich vereinfacht und gleichzeitig beibehalten Alle Konfigurationsdateien Ihrer Websites, unabhängig davon, ob sie aktiviert sind oder nicht.

Im nächsten Schritt erstellen wir den ersten virtuellen Host, der auf den Standard-Localhost mit dem Standardpfad DocumentRoot für die Bereitstellung von Website-Dateien (/srv/http) verweist.

sudo nano /etc/httpd/conf/sites-available/localhost.conf

Fügen Sie hier die folgenden Apache-Anweisungen hinzu.

<VirtualHost *:80>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        ErrorLog "/var/log/httpd/localhost-error_log"
        TransferLog "/var/log/httpd/localhost-access_log"

<Directory />
    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

Die wichtigsten Anweisungen hier sind die Direktiven Port und ServerName, die Apache anweisen, eine Netzwerkverbindung auf Port 80 zu öffnen und alle Abfragen mit dem lokalen Hostnamen dorthin umzuleiten Serve-Dateien im Pfad /srv/http/.

12. Nachdem die Localhost-Datei erstellt wurde, aktivieren Sie sie und starten Sie dann den httpd-Daemon neu, um die Änderungen anzuzeigen.

sudo a2ensite localhost
sudo systemctl restart httpd

13. Dann richten Sie Ihren Browser auf http://localhost, wenn Sie es vom Arch-System aus ausführen, oder auf http://Arch_IP, wenn Sie es verwenden ein Remote-System.

Schritt 6: Aktivieren Sie SSL mit Virtual Hosting auf LAMP

SSL (Secure Sockets Layer) ist ein Protokoll zur Verschlüsselung von HTTP-Verbindungen über Netzwerke oder das Internet, wodurch der Datenfluss mithilfe symmetrischer/asymmetrischer Kryptografieschlüssel über einen sicheren Kanal übertragen wird und wird in Arch Linux durch das OpenSSL-Paket bereitgestellt.

14. Standardmäßig ist das SSL-Modul auf Apache in Arch Linux nicht aktiviert und kann durch Entfernen des Kommentars zum Modul mod_ssl.so aus der Hauptdatei httpd.conf aktiviert werden Konfigurationsdatei und die Datei Include httpd-ssl.conf, die sich im zusätzlichen httpd-Pfad befindet.

Zur Vereinfachung erstellen wir jedoch eine neue Moduldatei für SSL im Pfad mods-enabled und lassen die Hauptkonfigurationsdatei von Apache unberührt. Erstellen Sie die folgende Datei für das SSL-Modul und fügen Sie den folgenden Inhalt hinzu.

sudo nano /etc/httpd/conf/mods-enabled/ssl.conf

Hängen Sie den folgenden Inhalt an.

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Listen 443

SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCache        "shmcb:/run/httpd/ssl_scache(512000)"
SSLSessionCacheTimeout  300

15. Erstellen Sie nun eine virtuelle Hostdatei, die auf denselben Localhost-Namen verweist, dieses Mal jedoch SSL-Serverkonfigurationen verwendet, und ändern Sie den Namen leicht, um Sie daran zu erinnern, dass er für Localhost mit SSL steht.

sudo nano /etc/httpd/conf/sites-available/localhost-ssl.conf

Fügen Sie dieser Datei den folgenden Inhalt hinzu.

<VirtualHost *:443>
        DocumentRoot "/srv/http"
        ServerName localhost
        ServerAdmin [email 
        ErrorLog "/var/log/httpd/localhost-ssl-error_log"
        TransferLog "/var/log/httpd/localhost-ssl-access_log"

SSLEngine on

SSLCertificateFile "/etc/httpd/conf/ssl/localhost.crt"
SSLCertificateKeyFile "/etc/httpd/conf/ssl/localhost.key"

<FilesMatch "\.(cgi|shtml|phtml|php)$">
    SSLOptions +StdEnvVars
</FilesMatch>

<Directory "/srv/http/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>

BrowserMatch "MSIE [2-5]" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0

CustomLog "/var/log/httpd/ssl_request_log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

<Directory />

    Options +Indexes +FollowSymLinks +ExecCGI
    AllowOverride All
    Order deny,allow
    Allow from all
Require all granted
</Directory>

</VirtualHost>

Neben den Anweisungen Port und ServerName sind hier weitere wichtige Anweisungen diejenigen, die auf die Datei SSL-Zertifikat und die Datei SSL-Schlüssel verweisen sind noch nicht erstellt, also starten Sie Apache Web Server nicht neu, da sonst Fehlermeldungen auftreten.

16. Um die erforderliche SSL-Zertifikatdatei und Schlüssel zu erstellen, installieren Sie das OpenSSL-Paket, indem Sie den folgenden Befehl ausführen.

sudo pacman -S openssl

17. Erstellen Sie dann das folgende Bash-Skript, das automatisch alle Ihre Apache-Zertifikate und Schlüssel in erstellt und speichert >/etc/httpd/conf/ssl/ Systempfad.

sudo nano apache_gen_ssl

Fügen Sie den folgenden Dateiinhalt hinzu, speichern Sie ihn und machen Sie ihn ausführbar.

#!/bin/bash
mkdir /etc/httpd/conf/ssl
cd /etc/httpd/conf/ssl

echo -e "Enter your virtual host FQDN: \nThis will generate the default name for Nginx  SSL certificate!"
read cert

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out $cert.key
chmod 600 $cert.key
openssl req -new -key $cert.key -out $cert.csr
openssl x509 -req -days 365 -in $cert.csr -signkey $cert.key -out $cert.crt

echo -e " The certificate "$cert" has been generated!\nPlease link it to Apache SSL available website!"

ls -all /etc/httpd/conf/ssl
exit 0

sudo chmod +x apache_gen_ssl

Wenn Sie möchten, dass das Skript systemweit verfügbar ist, kopieren Sie es in einen ausführbaren ` PATH.

sudo cp /apache_gen_ssl  /usr/local/bin/

18. Generieren Sie nun Ihr Zertifikat und Ihre Schlüssel, indem Sie das Skript ausführen. Geben Sie Ihre SSL-Optionen an und vergessen Sie nicht, dass der Zertifikatsname und der Common Name mit Ihrer offiziellen Domäne (FQDN) übereinstimmen.

sudo ./apache_gen_ssl

Nachdem das Zertifikat und die Schlüssel erstellt wurden, vergessen Sie nicht, die Konfiguration Ihres SSL Virtual Host-Zertifikats und der Schlüssel so zu ändern, dass sie mit dem Namen dieses Zertifikats übereinstimmen.

19. Der letzte Schritt besteht darin, den SSL Virtual Host neu zu aktivieren und Ihren Server neu zu starten, um die Konfigurationen anzuwenden.

sudo a2ensite localhost-ssl
sudo systemctl restart httpd

Das ist es! Um dies zu überprüfen, öffnen Sie den Browser und fügen Sie die Arch-IP zur URL mithilfe des HTTPS-Protokolls hinzu: https://localhost oder https://system_IP.

Schritt 7: Aktivieren Sie PHP auf Apache

20. Standardmäßig stellt Apache in Arch Linux nur den Inhalt statischer HTML-Dateien bereit, ohne Unterstützung für dynamische Skriptsprachen. Um PHP zu aktivieren, öffnen Sie zunächst die Apache-Hauptkonfigurationsdatei, suchen Sie dann die folgende LoadModule-Anweisung und kommentieren Sie sie aus (php-apache funktioniert nicht mit mod_mpm_event in Arch Linux). ).

sudo nano /etc/httpd/conf/httpd.conf

Suchen und kommentieren Sie mit [Strg]+[w] die folgende Zeile, damit sie so aussieht.

#LoadModule mpm_event_module modules/mod_mpm_event.so

21. Erstellen Sie dann eine neue Datei für das PHP-Modul im Pfad mods-enabled mit dem folgenden Inhalt.

sudo nano /etc/httpd/conf/mods-enabled/php.conf

Fügen Sie genau den folgenden Inhalt hinzu (Sie müssen mod_mpm_prefork verwenden).

LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule php5_module modules/libphp5.so

Include conf/extra/php5_module.conf

22. Um die Einstellung zu überprüfen, erstellen Sie in PHP eine Datei mit dem Namen info.php in Ihrem DocumnetRoot (/srv/http/), starten Sie dann Apache neu und zeigen Sie Ihren Browser in die Datei info.php: https://localhost/info.php.

<?php

phpinfo();

?>
sudo systemctl restart httpd

Das ist es! Wenn alles wie im Bild oben aussieht, haben Sie jetzt die dynamische serverseitige Skriptsprache PHP auf Apache aktiviert und können jetzt Websites mit Open-Source-CMS wie beispielsweise WordPress entwickeln.

Wenn Sie die Apache-Syntaxkonfigurationen überprüfen und eine Liste der geladenen Module anzeigen möchten, ohne den httpd-Daemon neu zu starten, führen Sie die folgenden Befehle aus.

sudo apachectl configtest
sudo apachectl -M

Schritt 8: PHPMyAdmin installieren und konfigurieren

23. Wenn Sie die MySQL-Befehlszeile nicht beherrschen und einen einfachen Fernzugriff auf die MySQL-Datenbank über die Webschnittstelle wünschen, müssen Sie das PhpMyAdmin-Paket auf Ihrem Arch-Rechner installieren.

sudo pacman -S phpmyadmin php-mcrypt

24. Nachdem die Pakete installiert wurden, müssen Sie einige PHP-Erweiterungen aktivieren (mysqli.so, mcrypt.so – für interne Authentifizierung) und Sie können auch andere Module aktivieren, die für zukünftige CMS-Plattformen benötigt werden, wie openssl.so, imap.so oder iconv.so usw.

sudo nano /etc/php/php.ini

Suchen Sie die oben genannten Erweiterungen und kommentieren Sie sie aus.

extension=mcrypt.so
extension=mssql.so
extension=mysqli.so
extension=openssl.so
extension=iconv.so
extension=imap.so
extension=zip.so
extension=bz2.so

Suchen und finden Sie außerdem in derselben Datei die Anweisung open_basedir und fügen Sie den PhpMyAdmin-Systempfad hinzu (/etc/webapps/ und /usr/share/webapps/), um sicherzustellen, dass PHP auf Dateien in diesen Verzeichnissen zugreifen und diese lesen kann (Wenn Sie auch den DocumentRoot-Pfad von Virtual Hosts von /srv/http/ in einen anderen Speicherort ändern, müssen Sie den neuen Pfad auch hier anhängen ).

25. Das Letzte, was Sie tun müssen, um auf die PhpMyAdmin-Weboberfläche zuzugreifen, ist das Hinzufügen von PhpMyAdmin-Apache-Anweisungen zu virtuellen Hosts. Als Sicherheitsmaßnahme wird sichergestellt, dass auf die PhpMyAdmin-Webschnittstelle nur von localhost (oder der System-IP-Adresse) über das HTTPS-Protokoll und nicht von anderen virtuellen Hosts aus zugegriffen werden kann. Öffnen Sie also Ihre Apache-Datei localhost-ssl.conf und fügen Sie unten vor der letzten -Anweisung den folgenden Inhalt hinzu.

sudo nano /etc/httpd/conf/sites-enabled/localhost-ssl.conf
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"

<Directory "/usr/share/webapps/phpMyAdmin">
    DirectoryIndex index.html index.php
    AllowOverride All
    Options FollowSymlinks
    Require all granted
</Directory>

26. Starten Sie anschließend den Apache-Daemon neu und verweisen Sie Ihren Browser auf die folgende Adresse. Sie sollten dann auf Ihr PHPMyAdmin-Webinterface zugreifen können: https://localhost/phpmyadmin oder https://system_IP/phpmyadmin.

27. Wenn Sie nach der Anmeldung bei PhpMyAdmin einen unteren Fehler bezüglich eines blowfish_secret sehen, öffnen und bearbeiten Sie /etc/webapps/phpmyadmin/config.inc. php-Datei und fügen Sie eine zufällige Zeichenfolge wie die in der folgenden Anweisung ein und aktualisieren Sie dann die Seite.

$cfg['blowfish_secret'] = ‘{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V’ ;

Schritt 9: Aktivieren Sie LAMP systemweit

28. Wenn Sie möchten, dass der LAMP-Stack nach dem Systemneustart automatisch gestartet wird, führen Sie die folgenden Befehle aus.

sudo systemctl enable httpd mysqld

Dies sind einige der wichtigsten Konfigurationseinstellungen für LAMP, die erforderlich sind, um ein Arch Linux-System in eine einfache, aber leistungsstarke, schnelle und robuste Webplattform mit moderner Serversoftware für kleine Nicht-Benutzer umzuwandeln -kritische Umgebungen, aber wenn Sie hartnäckig werden und es dennoch in einer großen Produktionsumgebung verwenden möchten, sollten Sie sich mit viel Geduld ausrüsten und besonders auf Paketaktualisierungen achten und regelmäßig Systemsicherungsbilder für eine schnelle Systemwiederherstellung erstellen Systemausfälle.