Einleitung: Warum Swift auf einem VPS bereitstellen?
Swift ist nicht nur eine Sprache für iOS- und macOS-Apps. Dank des Frameworks Vapor und der nativen Linux-Unterstützung können Sie leistungsstarke Serverlösungen mit Swift erstellen. Die Bereitstellung einer solchen App auf einem VPS (Virtual Private Server) eröffnet Möglichkeiten zur Erstellung eigener APIs, Websites und Microservices.
In diesem Artikel behandeln wir den gesamten Bereitstellungszyklus einer Swift-App auf einem Remote-Server mit Ubuntu 22.04. Sie erfahren, wie Sie die Umgebung vorbereiten, das Projekt kompilieren, den automatischen Start und den Proxy-Server einrichten. Die Anleitung eignet sich sowohl für Anfänger als auch für erfahrene Entwickler, die ihr Wissen systematisieren möchten.
1. Servervorbereitung und Installation von Swift
Der erste Schritt ist die Anmietung eines VPS (wir empfehlen 2 Kerne, 2 GB RAM). Nach der Verbindung per SSH führen Sie ein Systemupdate und die Installation der Abhängigkeiten durch.
1.1. Grundeinstellungen
ssh root@ihre-server-ipapt update && apt upgrade -yapt install curl git build-essential pkg-config libssl-dev zlib1g-dev -y1.2. Installation des Swift Toolchains
Für Ubuntu 22.04 verwenden Sie die offizielle Swift-Distribution. Überprüfen Sie die aktuelle Version auf swift.org.
# Swift 5.9 herunterladen (Beispiel)wget https://download.swift.org/swift-5.9-release/ubuntu2204/swift-5.9-RELEASE/swift-5.9-RELEASE-ubuntu22.04.tar.gz
# Entpackentar -xzf swift-5.9-RELEASE-ubuntu22.04.tar.gzmv swift-5.9-RELEASE-ubuntu22.04 /usr/share/swift
# Zu PATH hinzufügenecho 'export PATH=/usr/share/swift/usr/bin:$PATH' >> ~/.bashrcsource ~/.bashrc
# Überprüfungswift --version2. Kompilierung und Konfiguration der App
Betrachten wir die Bereitstellung einer typischen Vapor-App. Angenommen, Ihr Projekt befindet sich bereits in einem Git-Repository.
2.1. Klonen und Bauen
cd /var/www/git clone https://github.com/ihr-benutzername/ihr-repository.git myappcd myapp
# Bauen im Release-Modusswift build -c releaseNach erfolgreicher Kompilierung befindet sich die ausführbare Datei in .build/release/Run. Für Vapor wird standardmäßig Port 8080 verwendet.
2.2. Start und Test
# Temporärer Start (Strg+C zum Stoppen).build/release/Run serve --hostname 0.0.0.0 --port 8080Überprüfen Sie die Funktion: Öffnen Sie im Browser http://ihre-server-ip:8080. Wenn Sie eine Antwort sehen, funktioniert alles.
3. Einrichtung von systemd für den automatischen Start
Damit die App nach einem Serverneustart automatisch startet, erstellen wir einen systemd-Dienst.
3.1. Dienst erstellen
nano /etc/systemd/system/myapp.serviceFügen Sie den folgenden Code ein (ersetzen Sie die Pfade durch Ihre eigenen):
[Unit]Description=Swift Vapor ApplicationAfter=network.target
[Service]Type=simpleUser=www-dataGroup=www-dataWorkingDirectory=/var/www/myappExecStart=/var/www/myapp/.build/release/Run serve --hostname 127.0.0.1 --port 8080Restart=on-failureRestartSec=5
[Install]WantedBy=multi-user.target3.2. Aktivierung und Start
systemctl daemon-reloadsystemctl enable myappsystemctl start myappsystemctl status myappWenn der Status active (running) ist, läuft der Dienst. Die App wird nun automatisch starten.
4. Einrichtung von Nginx und SSL (HTTPS)
Der Proxy-Server Nginx wird für die Verarbeitung statischer Dateien, Lastverteilung und das Hinzufügen eines SSL-Zertifikats benötigt.
4.1. Installation von Nginx
apt install nginx -y4.2. Proxy-Konfiguration
Erstellen Sie eine Konfigurationsdatei für Ihre Domain oder IP:
nano /etc/nginx/sites-available/myappserver { listen 80; server_name ihre-domain.de;
location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $ho