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

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.

Install LAMP in Arch Linux

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

  1. Vorheriger Arch Linux-Installationsprozess – überspringen Sie den letzten Teil mit DHCP.
  2. 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
Install Apache Web Server

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
Install MySQL Database
Start MySQL Database

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
Secure MySQL Database
Set MySQL root Password

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
Verify MySQL Database Connectivity

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
Include Virtual Host Configuration

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
Create a2eniste Apache Script

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
Create a2dissite Apache Script

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/
Set Execute Permissions

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>
Create Virtual Hosts in Apache

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
Active a2ensite Script

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.

Browse Apache

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
Enable SSL with Virtual Hosting

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>
Create SSL Virtual Host

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
Store Apache Certificates and Keys
$ 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
Create Apache Certificates and Keys
Enter Certificates Details

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
Activate SSL Virtual Host

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.

Browse Apache over SSL

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
Enable PHP Module

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
Enable mod_mpm_prefork Module

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
Verify PHP Information

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
Install and Configuring PhpMyAdmin

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).

Enable open_basedir

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>
Create PhpMyAdmin Virtual Host Configuration

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.

Access PhpMyAdmin Web Interface

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’ ;
Fix blowfish_secret Error

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
Enable LAMP System Wide

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.

Source:
https://www.tecmint.com/install-lamp-in-arch-linux/