Arch Linux bietet eine flexible, fortschrittliche Systemumgebung und ist eine leistungsfähige Lösung, die sich besonders gut für die Entwicklung von Webanwendungen auf kleinen, nicht kritischen Systemen eignet, da es ein vollständiges Open Source ist und die letzten aktuellen Releases von Kerneln und Websoftware für Server und Datenbanken bietet.

Der Hauptzweck dieses Tutorials besteht darin, Ihnen durch eine detaillierte Schritt-für-Schritt-Anleitung zu helfen, die am Ende zu einer der am häufigsten verwendeten Softwarekombinationen in der Webentwicklung führen wird: LAMP (Linux, Apache, MySQL/MariaDB und PHP/PhpMyAdmin) und es wird Ihnen einige nützliche Funktionen (schnelle und einfache Bash-Skripte) vorstellen, die in einem Arch Linux-System nicht vorhanden sind, aber die Arbeit erleichtern können, wenn es darum geht, mehrere Virtuelle Hosts zu erstellen, SSL-Zertifikate und Schlüssel für sichere HTTS-Transaktionen zu generieren.
Anforderungen
- Vorheriger Arch Linux-Installationsprozess – überspringen Sie den letzten Teil mit DHCP.
- Vorherige LEMP-Installation unter Arch Linux – nur der Teil zur Konfiguration eines statischen IP-Adresses und für die Fernzugriff SSH-Zugriff.
Schritt 1: Installieren Sie die grundlegende LAMP-Software
1. Nach der minimalen Systeminstallation mit statischer IP-Adresse und Fernzugriff auf das System mithilfe von SSH aktualisieren Sie Ihren Arch Linux-Rechner mit dem pacman-Utility.
$ sudo pacman -Syu
2. Wenn der Upgrade-Vorgang abgeschlossen ist, installieren Sie LAMP einzeln. Installieren Sie zunächst Apache Web Server und starten/überprüfen Sie jeden Serverprozess-Dämon.
$ sudo pacman -S apache $ sudo systemctl start httpd $ sudo systemctl status httpd

3. Installieren Sie die PHP dynamische serverseitige Skriptsprache und ihr Apache-Modul.
$ sudo pacman -S php php-apache
4. Installieren Sie zum Schluss die MySQL Datenbank, wählen Sie 1 (MariaDB) Community-Datenbank-Fork aus und starten und überprüfen Sie den Dämonenstatus.
$ sudo pacman -S mysql $ sudo systemctl start mysqld $ sudo systemctl status mysqld


Jetzt haben Sie die grundlegende LAMP-Software installiert und mit den Standardkonfigurationen gestartet.
Schritt 2: MySQL-Datenbank sichern
5. Der nächste Schritt besteht darin, die MySQL-Datenbank abzusichern, indem ein Passwort für das Root-Konto festgelegt wird, anonyme Benutzerkonten entfernt, die Testdatenbank entfernt und die Remote-Anmeldung für das Benutzer root deaktiviert wird ( drücken Sie die [Eingabetaste] für das aktuelle Passwort des root-Kontos und antworten Sie auf 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 verlassen Sie das Datenbanksystem mit der Anweisung quit oder exit.
$ mysql -u root -p

Schritt 3: Hauptkonfigurationsdatei von Apache ändern
7. Die folgenden Konfigurationen beziehen sich größtenteils auf den Apache Web Server, um eine dynamische Oberfläche für das Virtuelle Hosting mit der PHP-Skriptsprache, SSL- oder nicht-SSL-Virtual-Hosts bereitzustellen und können durch die Modifizierung der Konfigurationsdatei des Httpd-Dienstes durchgeführt werden.
Öffnen Sie zuerst die Haupt-Apache-Konfigurationsdatei mit Ihrem bevorzugten Texteditor.
$ sudo nano /etc/httpd/conf/httpd.conf
Fügen Sie am Ende der Datei die folgenden zwei Zeilen hinzu.
IncludeOptional conf/sites-enabled/*.conf IncludeOptional conf/mods-enabled/*.conf

Die Rolle der Include-Anweisungen hier besteht darin, Apache mitzuteilen, dass es ab sofort weitere Konfigurationen aus allen Dateien lesen soll, die sich in den Systempfaden /etc/httpd/conf/sites-enabled/ (für das Virtuelles Hosting) und /etc/httpd/conf/mods-enabled/ (für aktivierte Server-Module) befinden und die mit der Erweiterung .conf enden.
8. Nachdem Apache mit diesen beiden Direktiven angewiesen wurde, erstellen Sie die erforderlichen Systemverzeichnisse mit den folgenden Befehlen.
$ 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 Konfigurationsdateien für Virtual Hosts, die nicht auf Apache aktiviert sind, aber das nächste Bash-Skript wird dieses Verzeichnis verwenden, um Websites zu verlinken und zu aktivieren, die dort liegen.
Schritt 4: Erstellen von a2ensite und a2dissite Apache-Befehlen
9. Jetzt ist es an der Zeit, die Apache-Skripte a2ensite und a2dissite zu erstellen, die als Befehle dienen, um die Konfigurationsdatei des Virtual Hosts zu aktivieren oder zu deaktivieren. Geben Sie den Befehl cd ein, um zu Ihrem Benutzerpfad $HOME zurückzukehren und erstellen Sie Ihre Bash-Skripte a2eniste und a2dissite mit Ihrem bevorzugten Editor.
$ sudo nano a2ensite
Fügen Sie den folgenden Inhalt in diese Datei ein.
#!/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 die Bash-Datei a2dissite.
$ sudo nano a2dissite
Fügen 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, erteilen Sie Ausführungsberechtigungen und kopieren Sie sie in ein ausführbares Verzeichnis des $PATH, um sie systemweit verfügbar zu machen.
$ sudo chmod +x a2ensite a2dissite $ sudo cp a2ensite a2dissite /usr/local/bin/

Schritt 5: Erstellen von Virtual Hosts in Apache
11. Die Standardkonfigurationsdatei für den virtuellen Host des Apache-Webservers auf Arch Linux wird durch die Datei httpd-vhosts.conf bereitgestellt, die sich im Pfad /etc/httpd/conf/extra/ befindet. Wenn Sie ein System mit vielen virtuellen Hosts haben, kann es sehr schwierig sein, den Überblick darüber zu behalten, welche Website aktiviert ist oder nicht. Wenn Sie eine Website deaktivieren möchten, müssen Sie alle ihre Direktiven auskommentieren oder löschen, was eine schwierige Aufgabe sein kann, wenn Ihr System viele Websites bereitstellt und Ihre Website mehr Konfigurationsdirektiven hat.
Die Verwendung der Pfade sites-available und sites-enabled vereinfacht die Aufgabe, Websites zu aktivieren oder deaktivieren erheblich und bewahrt auch alle Konfigurationsdateien Ihrer Websites, unabhängig davon, ob sie aktiviert sind oder nicht.
Im nächsten Schritt werden wir den ersten virtuellen Host erstellen, der auf den Standard-localhost mit dem Standardpfad für das Bereitstellen von Website-Dateien (DocumentRoot) zeigt (/srv/http.
$ sudo nano /etc/httpd/conf/sites-available/localhost.conf
Fügen Sie hier die folgenden Apache-Direktiven hinzu.
<VirtualHost *:80> DocumentRoot "/srv/http" ServerName localhost ServerAdmin [email protected] 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 Port– und ServerName-Direktiven, die Apache anweisen, eine Netzwerkverbindung am Port 80 zu öffnen und alle Anfragen mit dem Localhost-Namen umzuleiten, um Dateien im Pfad /srv/http/ bereitzustellen.
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. Rufen Sie dann mit Ihrem Browser http://localhost auf, wenn Sie es auf einem Arch-System ausführen, oder http://Arch_IP, wenn Sie ein entferntes System verwenden.

Schritt 6: SSL mit virtuellem Hosting auf LAMP aktivieren
SSL (Secure Sockets Layer) ist ein Protokoll, das entwickelt wurde, um HTTP-Verbindungen über Netzwerke oder das Internet zu verschlüsseln, wodurch Daten über einen sicheren Kanal mithilfe symmetrischer/asymmetrischer kryptografischer Schlüssel übertragen werden. Dies wird in Arch Linux durch das Paket OpenSSL bereitgestellt.
14. Standardmäßig ist das SSL-Modul in Apache in Arch Linux nicht aktiviert und kann durch Entkommentieren des mod_ssl.so-Moduls aus der Hauptkonfigurationsdatei httpd.conf und der Datei httpd-ssl.conf im zusätzlichen httpd-Pfad aktiviert werden.
Um die Dinge zu vereinfachen, werden wir eine neue Moduldatei für SSL im Pfad mods-enabled erstellen und die Haupt-Apache-Konfigurationsdatei unverändert lassen. Erstellen Sie die folgende Datei für das SSL-Modul und fügen Sie den untenstehenden Inhalt hinzu.
$ sudo nano /etc/httpd/conf/mods-enabled/ssl.conf
Fügen Sie den folgenden Inhalt hinzu.
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 Virtual-Host-Datei, die auf denselben localhost-Namen verweist, aber dieses Mal SSL-Serverkonfigurationen verwendet, und ändern Sie leicht den Namen, um Sie daran zu erinnern, dass es sich um localhost mit SSL handelt.
$ sudo nano /etc/httpd/conf/sites-available/localhost-ssl.conf
Fügen Sie den folgenden Inhalt in diese Datei ein.
<VirtualHost *:443> DocumentRoot "/srv/http" ServerName localhost ServerAdmin [email protected] 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 Port– und ServerName-Direktiven sind andere wichtige Direktiven hier diejenigen, die auf die SSL-Zertifikats-Datei und die SSL-Schlüssel-Datei verweisen, die noch nicht erstellt wurden. Starten Sie den Apache Webserver nicht neu, da sonst Fehler auftreten.
16. Um die erforderliche SSL-Zertifikatsdatei und Schlüssel zu erstellen, installieren Sie das Paket OpenSSL, 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 im Systempfad /etc/httpd/conf/ssl/ erstellt und speichert.
$ sudo nano apache_gen_ssl
Fügen Sie anschließend 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 jetzt 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 Common Name mit Ihrem offiziellen Domainnamen (FQDN) übereinstimmen müssen.
$ sudo ./apache_gen_ssl


Nachdem das Zertifikat und die Schlüssel erstellt wurden, vergessen Sie nicht, die Konfigurationen Ihres SSL-Virtual-Host-Zertifikats und der Schlüssel zu ändern, um den Namen dieses Zertifikats anzupassen.
19. Der letzte Schritt besteht darin, den neu erstellten SSL-Virtual-Host zu aktivieren und Ihren Server neu zu starten, um die Konfigurationen anzuwenden.
$ sudo a2ensite localhost-ssl $ sudo systemctl restart httpd

Das war’s! Zur Überprüfung öffnen Sie den Browser und fügen die Arch-IP in die URL mit dem HTTPS-Protokoll hinzu: https://localhost oder https://system_IP.

Schritt 7: PHP in Apache aktivieren
20. Standardmäßig stellt Apache nur HTML-Static-Dateiinhalt in Arch Linux ohne Unterstützung für dynamische Skripting-Sprachen bereit. Um PHP zu aktivieren, öffnen Sie zuerst die Hauptkonfigurationsdatei von Apache und suchen Sie die folgende LoadModule-Anweisung (in Arch Linux funktioniert php-apache nicht mit mod_mpm_event).
$ sudo nano /etc/httpd/conf/httpd.conf
Verwenden Sie [Strg]+[W], um die folgende Zeile zu suchen und kommentieren Sie sie aus, 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 mods-enabled-Pfad mit folgendem Inhalt.
$ sudo nano /etc/httpd/conf/mods-enabled/php.conf
Fügen Sie den genau 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 eine PHP-Datei mit dem Namen info.php in Ihrem DocumnetRoot (/srv/http/), dann starten Sie Apache neu und rufen Sie die Datei info.php in Ihrem Browser auf: https://localhost/info.php.
<?php phpinfo(); ?>
$ sudo systemctl restart httpd

Das ist alles! Wenn alles wie im obigen Bild aussieht, haben Sie nun die PHP-Dynamik serverseitige Skriptsprache auf Apache aktiviert und können jetzt Websites unter Verwendung von Open-Source-CMS wie WordPress erstellen.
Wenn Sie die Apache-Syntaxkonfiguration überprüfen und eine Liste der geladenen Module ohne Neustarten des httpd-Dämons sehen möchten, führen Sie die folgenden Befehle aus.
$ sudo apachectl configtest $ sudo apachectl -M
Schritt 8: Installation und Konfiguration von PhpMyAdmin
23. Wenn Sie die MySQL-Befehlszeile nicht beherrschen und einen einfachen Remote-Zugriff auf die über eine Webschnittstelle bereitgestellte MySQL-Datenbank wünschen, benötigen Sie das PhpMyAdmin-Paket auf Ihrem Arch-System installiert.
$ 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 die interne Authentifizierung) und Sie können auch andere Module aktivieren, die für zukünftige CMS-Plattformen wie openssl.so, imap.so oder iconv.so benötigt werden.
$ 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

Auch auf derselben Datei suchen und die open_basedir Anweisung finden und den Pfad des PhpMyAdmin-Systems (/etc/webapps/ und /usr/share/webapps/) hinzufügen, um sicherzustellen, dass PHP auf die Dateien unter diesen Verzeichnissen zugreifen und sie lesen kann (Wenn Sie auch den Virtual Hosts DocumentRoot-Pfad von /srv/http/ in einen anderen Pfad ändern, müssen Sie den neuen Pfad auch hier anhängen).

25. Das Letzte, was Sie tun müssen, um auf die PhpMyAdmin-Webbenutzeroberfläche zugreifen zu können, besteht darin, PhpMyAdmin-Apache-Anweisungen auf den Virtual Hosts hinzuzufügen. Als Sicherheitsmaßnahme stellen Sie sicher, dass die PhpMyAdmin-Webbenutzeroberfläche nur vom Localhost (oder der System-IP-Adresse) über das HTTPS-Protokoll und nicht von anderen verschiedenen Virtual Hosts aus zugänglich ist. Öffnen Sie also Ihre localhost-ssl.conf Apache-Datei und fügen Sie am Ende, 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-Dämon neu und rufen Sie über Ihren Browser die folgende Adresse auf, um auf Ihre PhpMyAdmin-Webbenutzeroberfläche zuzugreifen: https://localhost/phpmyadmin oder https://system_IP/phpmyadmin.

27. Wenn Sie nach dem Anmelden in PhpMyAdmin einen Fehler am unteren Rand bezüglich eines blowfish_secret sehen, öffnen und bearbeiten Sie die Datei /etc/webapps/phpmyadmin/config.inc.php und fügen Sie eine zufällige Zeichenfolge wie in der folgenden Anweisung ein, dann aktualisieren Sie die Seite.
$cfg['blowfish_secret'] = ‘{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V’ ;

Schritt 9: Aktivieren des LAMP-Systems systemweit
28. Wenn Sie möchten, dass der LAMP-Stack nach einem Systemneustart automatisch gestartet wird, führen Sie die folgenden Befehle aus.
$ sudo systemctl enable httpd mysqld

Dies sind einige der wichtigsten Konfigurationseinstellungen auf LAMP, die benötigt werden, um ein Arch Linux-System in eine einfache, aber leistungsstarke, schnelle und robuste Webplattform mit modernster Serversoftware für kleine unkritische Umgebungen zu verwandeln. Wenn Sie jedoch hartnäckig sind und es immer noch in einer großen Produktionsumgebung verwenden möchten, sollten Sie sich mit viel Geduld ausstatten, besondere Aufmerksamkeit auf Paketupdates legen und regelmäßige System-Backup-Images erstellen, um im Falle von Systemausfällen eine schnelle Systemwiederherstellung zu gewährleisten.