Eine Website auf Exoscale hochfahren
Meine Projektnotizen zur vorübergehenden Bereitstellung einer WordPress-Webseite mit Datenbank auf einer Debian-Instanz bei Exoscale.
Ausgangslage
Manchmal muss ich eine Webseite oder App vorübergehend im Internet bereitstellen, damit Personen ohne lokalen Zugang darauf zugreifen können.
In meinem Projekt musste ich eine WordPress-Webseite mit einer SQL-Datenbank kurzfristig hochfahren. Dafür habe ich Exoscale verwendet.
In meiner ursprünglichen Notiz habe ich auch Vercel als mögliche Alternative für andere Webprojekte festgehalten.
Warum ich Exoscale gewählt habe
Für mein damaliges Projekt waren die Kosten bei wenig Traffic und die Möglichkeit, den Server bei Bedarf auszuschalten, ausschlaggebend.
1. Konto und Instanz einrichten
Nach dem Erstellen des Kontos habe ich folgende Schritte durchgeführt:
- Öffentlichen SSH-Schlüssel unter „COMPUTE → SSH KEYS“ hinzufügen.
- Zwei-Faktor-Authentifizierung unter „Account Details → Password and Security“ aktivieren.
- Eine Compute-Instanz unter „COMPUTE → INSTANCES → ADD“ erstellen.
- Für unser Projekt Debian 12 verwenden.
- Security Groups und Regeln unter „COMPUTE → SECURITY GROUPS“ erstellen.
2. Netzwerkregeln festhalten
In meiner damaligen Konfiguration habe ich folgende eingehenden Regeln verwendet:
SSH
- Type: INGRESS
- Protocol: TCP
- Source:
0.0.0.0/0 - Start Port: 22
- End Port: 22
HTTP
- Security Group: frontend
- Type: INGRESS
- Protocol: TCP
- Source:
0.0.0.0/0 - Start Port: 80
- End Port: 80
HTTPS
- Type: INGRESS
- Protocol: TCP
- Source:
0.0.0.0/0 - Start Port: 443
- End Port: 443
Diese Angaben dokumentieren das damalige Projektsetup.
3. WordPress-Backup entpacken
Als Nächstes habe ich das WordPress-Backup in WSL entpackt.
4. Dateien auf den Server kopieren
Die Dateien habe ich mit rsync übertragen:
rsync -avz --rsh='ssh' wordpress debian@194.182.188.236:/home/debian/fachsymposium
5. Datenbank und Webserver installieren
MariaDB installieren
sudo apt install mariadb-server
nginx installieren
sudo apt install nginx
nginx aktivieren und starten
sudo systemctl enable nginx
sudo systemctl start nginx
In meiner ursprünglichen Notiz ist vorgesehen, die benötigten Datenbankdienste ebenfalls zu aktivieren und zu starten.
6. MariaDB einrichten
Sicherheitskonfiguration ausführen
sudo mysql_secure_installation
MariaDB öffnen
sudo mysql -u root -p
Datenbank erstellen
CREATE DATABASE meinedb;
Benutzer erstellen
CREATE USER 'meinuser'@'localhost' IDENTIFIED BY 'meinpasswort';
Berechtigungen vergeben
GRANT ALL PRIVILEGES ON meinedb.* TO 'meinuser'@'localhost';
Änderungen übernehmen
FLUSH PRIVILEGES;
MariaDB verlassen
EXIT;
Die Datenbanknamen und Zugangsdaten sind Platzhalter aus meiner ursprünglichen Notiz.
7. PHP-FPM installieren
sudo apt install php-fpm
In meinem Projekt habe ich PHP 8.2 verwendet und den Dienst so aktiviert und gestartet:
sudo systemctl enable php8.2-fpm.service
sudo systemctl start php8.2-fpm.service
8. nginx für PHP-FPM konfigurieren
Die nginx-Konfiguration habe ich mit folgendem Befehl geöffnet:
sudo vi /etc/nginx/sites-available/default
In meiner ursprünglichen Notiz waren folgende Einstellungen vorgesehen:
- Port 80 verwenden.
- Domain oder IP-Adresse als
server_nameeintragen. /var/www/htmlals Webroot verwenden.index.php,index.htmlundindex.htmals Indexdateien festlegen.- PHP-Anfragen über PHP-FPM verarbeiten.
- Für PHP 8.2 den Socket
/run/php/php8.2-fpm.sockverwenden. - Den Zugriff auf
.ht-Dateien sperren.
Der ursprüngliche nginx-Konfigurationsblock ist unvollständig. Deshalb ist hier keine direkt verwendbare Konfiguration enthalten.
Wichtiger Hinweis
Bei einer bestehenden Serverkonfiguration nur den relevanten Abschnitt anpassen und nicht unüberlegt die gesamte Datei überschreiben.