Bereitstellung einer Swift-App auf einem VPS: Fortgeschrittenes Handbuch

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 einem VPS: Schritt-für-Schritt-Anleitung für Fortgeschrittene

Sie haben eine großartige Serveranwendung mit Swift und dem Vapor-Framework erstellt. Jetzt muss sie in der Produktion laufen. Die Bereitstellung einer Swift-App auf einem VPS erfordert ein Verständnis der Besonderheiten von Swift unter Linux, die Einrichtung der Serverumgebung und die Verwendung der richtigen Werkzeuge, um Stabilität und Leistung zu gewährleisten. In diesem fortgeschrittenen Handbuch behandeln wir den gesamten Zyklus: von der Kompilierung unter Linux bis zur Einrichtung von CI/CD, der Arbeit mit Docker und Supervisor.



1. Servervorbereitung und Kompilierung von Swift für Linux

Das erste, was Sie verstehen müssen: Swift unter macOS und Linux sind unterschiedliche Ökosysteme. Für die Bereitstellung auf einem VPS (Ubuntu 22.04 LTS) ist entweder Cross-Kompilierung oder ein Build direkt auf dem Server erforderlich. Es wird empfohlen, auf dem Server zu bauen, um Probleme mit Bibliotheken zu vermeiden.



1.1 Installation von Swift auf Ubuntu

Verbinden Sie sich per SSH mit dem Server und installieren Sie die erforderlichen Abhängigkeiten:

sudo apt updatesudo apt install -y curl git clang libicu-dev libcurl4-openssl-dev libssl-dev \    libsqlite3-dev libxml2-dev pkg-config uuid-dev

# Laden Sie die neueste Version des Swift Toolchains herunterwget https://download.swift.org/swift-5.9.2-release/ubuntu2204/swift-5.9.2-RELEASE/swift-5.9.2-RELEASE-ubuntu22.04.tar.gztar -xzf swift-5.9.2-RELEASE-ubuntu22.04.tar.gzsudo mv swift-5.9.2-RELEASE-ubuntu22.04 /usr/share/swift

# Fügen Sie es zum PATH hinzuecho 'export PATH=/usr/share/swift/usr/bin:$PATH' >> ~/.bashrcsource ~/.bashrcswift --version


1.2 Klonen und Bauen des Projekts

Klonen Sie das Repository und bauen Sie die Release-Version der Anwendung:

git clone https://github.com/your-username/your-swift-app.gitcd your-swift-appswift build --configuration release

Nach erfolgreichem Build befindet sich die Binärdatei in .build/release/YourApp. Testen Sie den Start manuell:

./.build/release/YourApp serve --hostname 0.0.0.0 --port 8080


2. Einrichtung der Produktionsumgebung: Nginx und Supervisor

Es ist eine schlechte Praxis, die Swift-Anwendung direkt auf Port 80 zu starten. Verwenden Sie die Kombination aus Nginx (Reverse Proxy) und Supervisor (Prozessmanager).



2.1 Nginx-Konfiguration

Installieren Sie Nginx und erstellen Sie eine Konfiguration, um Anfragen an Ihre Swift-Anwendung weiterzuleiten:

sudo apt install nginxsudo nano /etc/nginx/sites-available/yourapp

Inhalt der Datei:

server {    listen 80;    server_name yourdomain.com www.yourdomain.com;

location / { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }

# Einstellung für große Dateien (falls erforderlich) client_max_body_size 50m;}

Aktivieren Sie die Konfiguration und überprüfen Sie sie:

sudo ln -s /etc/nginx/sites-available/yourapp /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl restart nginx


2.2 Einrichtung von Supervisor für automatischen Neustart

Supervisor überwacht den Prozess und startet ihn bei einem Absturz neu. Installieren Sie ihn und erstellen Sie die Konfiguration:

sudo apt install supervisorsudo nano /etc/supervisor/conf.d/yourapp.conf

Inhalt der Konfiguration:

[program:yourapp]command=/home/ubuntu/your-swift-app/.build/release/YourApp serve --hostname 0.0.0.0 --port 8080directory=/home/ubuntu/your-swift-appuser=ubuntuautostart=trueautorestart=truestartretries=3stderr_logfile=/var/log/yourapp.err.logstdout_logfile=/var/log/yourapp.out.logenvironment=ENVIRONMENT="producti                

Blogs

Buchempfehlungen