Zum Inhalt

29. Jan. 2025 · Server & Hosting · 4 Min. Lesezeit

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:

bash
rsync -avz --rsh='ssh' wordpress debian@194.182.188.236:/home/debian/fachsymposium

5. Datenbank und Webserver installieren

MariaDB installieren

bash
sudo apt install mariadb-server

nginx installieren

bash
sudo apt install nginx

nginx aktivieren und starten

bash
sudo systemctl enable nginx
bash
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

bash
sudo mysql_secure_installation

MariaDB öffnen

bash
sudo mysql -u root -p

Datenbank erstellen

sql
CREATE DATABASE meinedb;

Benutzer erstellen

sql
CREATE USER 'meinuser'@'localhost' IDENTIFIED BY 'meinpasswort';

Berechtigungen vergeben

sql
GRANT ALL PRIVILEGES ON meinedb.* TO 'meinuser'@'localhost';

Änderungen übernehmen

sql
FLUSH PRIVILEGES;

MariaDB verlassen

sql
EXIT;

Die Datenbanknamen und Zugangsdaten sind Platzhalter aus meiner ursprünglichen Notiz.

7. PHP-FPM installieren

bash
sudo apt install php-fpm

In meinem Projekt habe ich PHP 8.2 verwendet und den Dienst so aktiviert und gestartet:

bash
sudo systemctl enable php8.2-fpm.service
bash
sudo systemctl start php8.2-fpm.service

8. nginx für PHP-FPM konfigurieren

Die nginx-Konfiguration habe ich mit folgendem Befehl geöffnet:

bash
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_name eintragen.
  • /var/www/html als Webroot verwenden.
  • index.php, index.html und index.htm als Indexdateien festlegen.
  • PHP-Anfragen über PHP-FPM verarbeiten.
  • Für PHP 8.2 den Socket /run/php/php8.2-fpm.sock verwenden.
  • 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.