Bereitstellung einer Swift-App auf VPS: Schritt für Schritt von A bis Z

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Bereitstellung einer Swift-App auf VPS: Schritt für Schritt von A bis Z

\n\n

Swift ist längst nicht mehr nur eine Sprache für die iOS-Entwicklung. Dank des Frameworks Vapor und der offiziellen Linux-Unterstützung können Sie leistungsstarke Serveranwendungen in Swift erstellen und auf einem VPS bereitstellen. In dieser Anleitung gehen wir den gesamten Weg von der Serverkonfiguration bis zum Start der Produktionsversion Ihrer Swift-App.

\n\n

1. Vorbereitung des VPS und Installation von Swift

\n\n

Zunächst benötigen Sie einen VPS mit Ubuntu 22.04 LTS (oder 20.04). Verbinden Sie sich per SSH und führen Sie ein System-Update durch:

\n\n
ssh root@ihr-server-ip\napt update && apt upgrade -y
\n\n

Installieren Sie die erforderlichen Abhängigkeiten für Swift:

\n\n
apt install -y curl git build-essential libssl-dev libcurl4-openssl-dev\napt install -y libxml2-dev libicu-dev libsqlite3-dev libz-dev
\n\n

Laden Sie nun Swift für Ubuntu herunter und installieren Sie es. Überprüfen Sie die aktuelle Version auf swift.org. Zum Zeitpunkt der Erstellung dieses Artikels ist es Swift 5.9:

\n\n
cd /opt\nwget https://download.swift.org/swift-5.9-release/ubuntu2204/swift-5.9-RELEASE/swift-5.9-RELEASE-ubuntu22.04.tar.gz\ntar xzf swift-5.9-RELEASE-ubuntu22.04.tar.gz\necho 'export PATH=/opt/swift-5.9-RELEASE-ubuntu22.04/usr/bin:$PATH' >> ~/.bashrc\nsource ~/.bashrc
\n\n

Überprüfen Sie die Installation:

\n\n
swift --version
\n\n

Sie sollten die Version Swift 5.9 sehen.

\n\n

2. Erstellung und Erstellung der Swift/Vapor-App

\n\n

Installieren Sie Vapor Toolbox (optional, aber praktisch):

\n\n
git clone https://github.com/vapor/toolbox.git\ncd toolbox\nswift build -c release\ncp .build/release/vapor /usr/local/bin/
\n\n

Erstellen wir eine Test-Vapor-App. Wenn Sie bereits ein Projekt haben, kopieren Sie es einfach per SCP oder Git auf den Server.

\n\n
cd ~\nvapor new HelloServer\ncd HelloServer
\n\n

Bearbeiten wir Sources/App/routes.swift, um einen einfachen Endpunkt hinzuzufügen:

\n\n
import Vapor\n\nfunc routes(_ app: Application) throws {\n    app.get { req async in\n        "Hello from Swift on VPS!"\n    }\n    \n    app.get("status") { req async -> HTTPStatus in\n        return .ok\n    }\n}
\n\n

Erstellen Sie das Projekt im Produktionsmodus:

\n\n
swift build -c release
\n\n

Die Binärdatei befindet sich in .build/release/HelloServer.

\n\n

3. Konfiguration des Starts und des systemd-Dienstes

\n\n

Damit die App nach einem Serverneustart automatisch startet, erstellen wir einen systemd-Dienst. Erstellen Sie zunächst einen Benutzer für die App (Sicherheit):

\n\n
useradd -m -s /bin/bash swiftuser\nchown -R swiftuser:swiftuser /root/HelloServer
\n\n

Erstellen Sie die Dienstdatei:

\n\n
nano /etc/systemd/system/helloserver.service
\n\n

Fügen Sie den folgenden Inhalt ein:

\n\n
[Unit]\nDescription=HelloServer Swift App\nAfter=network.target\n\n[Service]\nType=simple\nUser=swiftuser\nWorkingDirectory=/root/HelloServer\nExecStart=/root/HelloServer/.build/release/HelloServer --host 127.0.0.1 --port 8080\nRestart=on-failure\nRestartSec=5\n\n[Install]\nWantedBy=multi-user.target
\n\n

Starten Sie den Dienst:

\n\n
systemctl daemon-reload\nsystemctl enable helloserver\nsystemctl start helloserver\nsystemctl status helloserver
\n\n

Überprüfen Sie, ob die App lokal antwortet:

\n\n
curl http://127.0.0.1:8080
\n\n

4. Konfiguration von Nginx als Reverse Proxy

\n\n

Für eine Produktionsumgebung wird empfohlen, Port 8080 nicht direkt zu öffnen. Installieren wir Nginx und konfigurieren das Proxying mit SSL (Let's Encrypt).

\n\n
apt install -y nginx certbot python3-certbot-nginx
\n\n

Erstellen Sie die Nginx-Konfiguration:

\n\n
nano /etc/nginx/sites-available/helloserver
\n\n

Fügen Sie ein:

\n\n
server {\n    listen 80;\                

Blogs

Buchempfehlungen