WSL einrichten kannst.
Bevor du neue Pakete installierst, solltest du die Paketdatenbank deines Systems aktualisieren. Öffne dazu das Terminal und führe folgenden Befehl aus:
sudo apt update
Für jeden, der keine Lust hat, den ganzen Beitrag zu lesen, hier eine kurze Zusammenfassung, wie du den LAMP-Stack auf Ubuntu bzw. WSL einrichten kannst:
sudo apt install apache2 # Apache installieren
sudo ufw allow 'Apache Full' # Firewall konfigurieren
sudo apt install mysql-server # MySQL installieren
sudo mysql_secure_installation # MySQL Sicherheitsskript ausführen
# Es werden ein paar Fragen gestellt, die du beantworten musst.
# Ich empfehle alle mit Y (= Yes) zu beantworten. Lediglich bei der Frage nach dem VALIDATE PASSWORD PLUGIN kannst du mit N (= No) antworten, das erleichtert die einrichtung.
sudo apt install software-properties-common # Software-Properties-Common installieren
sudo add-apt-repository ppa:ondrej/php # PHP-Repository hinzufügen
sudo apt update # Paketdatenbank aktualisieren
sudo apt install php8.2 php8.2-fpm libapache2-mod-php8.2 -y # PHP installieren
sudo apt install unzip php8.2-common php8.2-mysql php8.2-xml php8.2-curl php8.2-gd php8.2-imagick php8.2-cli php8.2-dev php8.2-imap php8.2-mbstring php8.2-opcache php8.2-soap php8.2-zip -y # PHP-Erweiterungen installieren
sudo a2dismod php8.2 # PHP-Modul deaktivieren
sudo a2dismod mpm_prefork # mpm_prefork deaktivieren
sudo a2enmod mpm_event # mpm_event aktivieren
sudo a2enconf php8.2-fpm # PHP-FPM aktivieren
sudo a2enmod proxy # Proxy aktivieren
sudo a2enmod proxy_fcgi # Proxy_FCGI aktivieren
sudo a2enmod ssl # SSL aktivieren
sudo a2enmod http2 # HTTP2 aktivieren
sudo a2enmod headers # Headers aktivieren
sudo apt install phpmyadmin # phpMyAdmin installieren
sudo systemctl restart apache2 # Apache neustarten
Möchtest du genauer wissen, was du wie installierst, dann lies weiter oder navigiere direkt zu dem Thema, das dich interessiert.
Apache2 ist ein weit verbreiteter Open-Source-Webserver, der es ermöglicht, Websites im Internet zu hosten und zu verwalten. Mit einer Vielzahl an verfügbaren Modulen und Tools kann es für eine breite Palette von Webanwendungen und Diensten konfiguriert werden.
Du benötigst Apache, um PHP-Scripte serverseitig auszuführen und dynamische Webinhalte zu generieren, die dann an die Browser der Benutzer gesendet werden können.
Öffne das Terminal und führe folgenden Befehl aus, um Apache zu installieren:
sudo apt install apache2
Ich empfehle dir zwingend die Firewall mit ufw
(https://wiki.ubuntuusers.de/ufw/) zu konfigurieren, um deinen Server vor unerwünschten Zugriffen zu schützen.
Um den Zugriff auf den Apache-Server über die Firewall zu erlauben, führe folgenden Befehl aus:
sudo ufw allow 'Apache Full'
Das öffnet Port 80 (für Verbindungen ohne SSL) und Port 443 (für Verbindungen mit SSL). Mit dem Befehl sudo ufw status
kannst du dir die aktuelle Firewall-Konfiguration anzeigen lassen.
Für die Konfiguration von Apache musst du auf verschiedene Dateien und Verzeichnisse zugreifen. Hier ist eine Übersicht über die meist genutzten Dateien und Verzeichnisse:
/etc/apache2/apache2.conf
- Die Hauptkonfigurationsdatei von Apache2/var/www/html/
- Das Verzeichnis, in dem die Dateien der einzelnen Websites gespeichert werden/etc/apache2/sites-enabled/
- Das Verzeichnis, in dem die Konfigurationsdateien für die einzelnen Websites gespeichert werden, die aktiviert sind/etc/apache2/mods-enabled/
- Das Verzeichnis, in dem die Konfigurationsdateien für die einzelnen Module gespeichert werden, die aktiviert sind/etc/apache2/sites-available/
- Das Verzeichnis, in dem die Konfigurationsdateien für die einzelnen Websites gespeichert werden/etc/apache2/mods-available/
- Das Verzeichnis, in dem die Konfigurationsdateien für die einzelnen Module gespeichert werdenDu kannst Apache über das Terminal starten, stoppen und neustarten oder auch die Konfigurationsdatei testen. Führe dazu folgende Befehle aus:
sudo systemctl start apache2
# oder
sudo service apache2 start
sudo systemctl stop apache2
# oder
sudo service apache2 stop
sudo systemctl restart apache2
# oder
sudo service apache2 restart
sudo apache2ctl configtest
Um eine Seite zu konfigurieren, musst du eine Konfigurationsdatei im Verzeichnis /etc/apache2/sites-available/
erstellen.
Erstelle dazu eine neue Datei mit .conf als Dateiendung. Ich empfehle dir den Namen der Domain als Dateinamen zu verwenden. In meinem Fall wäre das jb-dev.io.conf
.
<VirtualHost *:80>
Protocols h2 http/1.1
ServerName www.jb-dev.io
ServerAlias jb-dev.io
DocumentRoot /var/www/html/jb-dev-io
ErrorLog ${APACHE_LOG_DIR}/jb-dev-io.error.log
CustomLog ${APACHE_LOG_DIR}/jb-dev-io.log combined
</VirtualHost>
Starte den Apache-Service neu, damit die Änderungen übernommen werden (s. oben). Damit deine Seite aber auch über die URL erreichbar ist, musst du noch in den DNS-Einstellungen deines Hosters die A und AAAA Records auf die IP-Adresse deines Servers zeigen lassen. Änderungen können bis zu 24h dauern. Danach ist deine Seite über die URL erreichbar.
Für die lokale Entwicklung auf einem Windowsrechner (s. WSL2 auf Windows einrichten) könnte deine Konfigurationsdatei so aussehen:
<VirtualHost *:80>
Protocols h2 http/1.1
ServerName projekt1.localhost
DocumentRoot /var/www/html/projekt1
ErrorLog ${APACHE_LOG_DIR}/localhost.error.log
CustomLog ${APACHE_LOG_DIR}/localhost.log combined
</VirtualHost>
In dem Falle kannst du die Seite über die URL http://projekt1.localhost
aufrufen.
Apache2 und Nginx sind beide leistungsfähige Webserver, wobei Apache2 durch seine modulare Struktur und .htaccess-Unterstützung eine höhere Flexibilität bei der Konfiguration bietet, während Nginx für seine geringere Ressourcenbelastung und höhere Geschwindigkeit bei der Auslieferung statischer Inhalte bekannt ist.
Damit deine Seite aber auch über HTTPS erreichbar ist, benötigst du ein SSL-Zertifikat. Das ist mittlerweile Standard und solltest du unbedingt machen. Das kannst du dir bei Let’s Encrypt kostenlos erstellen lassen. Dazu musst du das Paket certbot
installieren. Führe dazu folgenden Befehl aus:
sudo apt install certbot python3-certbot-apache
Anschließend kannst du dir mit folgendem Befehl ein Zertifikat erstellen lassen:
sudo certbot --apache
Du wirst hier ein paar Sachen gefragt, die du ausfüllen solltest. Falls deine Seite sowohl mit www. als auch ohne erreichbar sein soll, empfehle ich beim erstenne des Zertifikats beide Domains auszuwählen (z.B.: 1,2
eingeben). Es wird auch automatisch eine Weiterleitung auf die HTTPS-Version eingerichtet.
MySQL ist eine relationale Datenbank. Sie wird häufig in Verbindung mit PHP und Apache verwendet, um dynamische Webseiten zu erstellen.
Öffne das Terminal und führe folgenden Befehl aus, um MySQL zu installieren:
sudo apt install mysql-server
Da in der Datenbank sehr sensible Daten gespeichert werden, empfiehlt es sich das Sicherheitsskript auszuführen.
Führe folgenden Befehl aus, um das MySQL Sicherheitsskript auszuführen:
sudo mysql_secure_installation
Im Verlauf der Installation werden dir ein paar Fragen gestellt. Beantworte alle Fragen mit Y, also Ja. Lediglich bei der Frage nach dem VALIDATE PASSWORD PLUGIN kannst du mit N, also Nein, antworten. Das erleichtert die Einrichtung. Achte daher darauf, dass du immer nur sehr sichere Passwörter verwendest.
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:
Ich lagere gerne die Datenbank auf einem anderen Server aus, um eine höhere Performance und Sicherheit zu gewährleisten. Dazu musst du den Zugriff von fremden Servern erlauben. Öffne dazu die Konfigurationsdatei von MySQL:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Suche nach der Zeile bind-address
und kommentiere sie aus, indem du ein #
voranstellst, füge darunter eine neue Zeile mit dem Inhalt bind-adress 0.0.0.0
ein. Speichere die Datei und starte MySQL neu:
#bind-address = 127.0.0.1
bind-address = 0.0.0.0