Bereitstellung einer Swift-App auf VPS: Schritt für Schritt von A bis Z
\n\nSwift 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\n1. Vorbereitung des VPS und Installation von Swift
\n\nZunä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\nssh root@ihr-server-ip\napt update && apt upgrade -y\n\nInstallieren Sie die erforderlichen Abhängigkeiten für Swift:
\n\napt install -y curl git build-essential libssl-dev libcurl4-openssl-dev\napt install -y libxml2-dev libicu-dev libsqlite3-dev libz-dev\n\nLaden 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\ncd /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\nswift --version\n\nSie sollten die Version Swift 5.9 sehen.
\n\n2. Erstellung und Erstellung der Swift/Vapor-App
\n\nInstallieren Sie Vapor Toolbox (optional, aber praktisch):
\n\ngit clone https://github.com/vapor/toolbox.git\ncd toolbox\nswift build -c release\ncp .build/release/vapor /usr/local/bin/\n\nErstellen wir eine Test-Vapor-App. Wenn Sie bereits ein Projekt haben, kopieren Sie es einfach per SCP oder Git auf den Server.
\n\ncd ~\nvapor new HelloServer\ncd HelloServer\n\nBearbeiten wir Sources/App/routes.swift, um einen einfachen Endpunkt hinzuzufügen:
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\nErstellen Sie das Projekt im Produktionsmodus:
\n\nswift build -c release\n\nDie Binärdatei befindet sich in .build/release/HelloServer.
3. Konfiguration des Starts und des systemd-Dienstes
\n\nDamit die App nach einem Serverneustart automatisch startet, erstellen wir einen systemd-Dienst. Erstellen Sie zunächst einen Benutzer für die App (Sicherheit):
\n\nuseradd -m -s /bin/bash swiftuser\nchown -R swiftuser:swiftuser /root/HelloServer\n\nErstellen Sie die Dienstdatei:
\n\nnano /etc/systemd/system/helloserver.service\n\nFü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\nStarten Sie den Dienst:
\n\nsystemctl daemon-reload\nsystemctl enable helloserver\nsystemctl start helloserver\nsystemctl status helloserver\n\nÜberprüfen Sie, ob die App lokal antwortet:
\n\ncurl http://127.0.0.1:8080\n\n4. Konfiguration von Nginx als Reverse Proxy
\n\nFür eine Produktionsumgebung wird empfohlen, Port 8080 nicht direkt zu öffnen. Installieren wir Nginx und konfigurieren das Proxying mit SSL (Let's Encrypt).
\n\napt install -y nginx certbot python3-certbot-nginx\n\nErstellen Sie die Nginx-Konfiguration:
\n\nnano /etc/nginx/sites-available/helloserver\n\nFügen Sie ein:
\n\nserver {\n listen 80;\