Déploiement d'une application Swift sur VPS : guide étape par étape
Le développement d'applications serveur en Swift avec le framework Vapor gagne en popularité. Cependant, après avoir écrit le code, la question se pose : comment déployer une application Swift sur un serveur distant ? Dans cet article, nous allons détailler le processus complet de déploiement d'une application Swift sur un VPS (Ubuntu 22.04) — de l'installation des composants nécessaires à la configuration du reverse proxy et au lancement en mode production.
1. Préparation du serveur et installation de Swift
Premièrement, connectez-vous au VPS via SSH et mettez à jour la base de paquets :
sudo apt update && sudo apt upgrade -ySwift nécessite des dépendances pour la compilation. Installez-les :
sudo apt install clang libicu-dev libcurl4-openssl-dev libssl-dev python3 pkg-config -yEnsuite, téléchargez et installez Swift pour Ubuntu. Au moment de la rédaction de cet article, la version 5.9 est la plus récente. Téléchargez l'archive :
wget https://download.swift.org/swift-5.9-release/ubuntu2204/swift-5.9-RELEASE/swift-5.9-RELEASE-ubuntu22.04.tar.gzDécompressez et déplacez dans /usr/share :
tar xzf swift-5.9-RELEASE-ubuntu22.04.tar.gzsudo mv swift-5.9-RELEASE-ubuntu22.04 /usr/share/swiftAjoutez Swift au PATH. Ouvrez ~/.bashrc :
nano ~/.bashrcAjoutez la ligne à la fin du fichier :
export PATH="/usr/share/swift/usr/bin:$PATH"Appliquez les modifications :
source ~/.bashrcVérifiez l'installation :
swift --versionLa version Swift 5.9 doit s'afficher.
2. Compilation de l'application Swift (Vapor) sur le serveur
Clonez le dépôt de l'application ou copiez les fichiers via SCP. Pour l'exemple, créons un projet Vapor de test :
mkdir ~/myapp && cd ~/myappswift package init --type executableAjoutez Vapor dans Package.swift (exemple de serveur minimal) :
// swift-tools-version:5.9import PackageDescription
let package = Package( name: "myapp", platforms: [.macOS(.v13)], dependencies: [ .package(url: "https://github.com/vapor/vapor.git", from: "4.89.0") ], targets: [ .executableTarget(name: "myapp", dependencies: [ .product(name: "Vapor", package: "vapor") ]) ])Créez le fichier Sources/myapp/main.swift :
import Vapor
let app = try Application(.detect())app.get { req in return "Hello, Swift on VPS!"}try app.run()Compilez le projet en mode release :
swift build -c releaseAprès la compilation, le binaire se trouvera dans .build/release/myapp. Copiez-le dans un emplacement pratique :
cp .build/release/myapp /usr/local/bin/myapp3. Configuration de Nginx comme reverse proxy
L'application Swift écoutera sur le port 8080, et Nginx redirigera le trafic depuis le port 80 (ou 443 pour HTTPS). Installez Nginx :
sudo apt install nginx -yCréez un fichier de configuration pour notre application :
sudo nano /etc/nginx/sites-available/myappContenu du fichier :
server { listen 80; server_name your-domain.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; }}Activez la configuration et redémarrez Nginx :
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl restart nginxN'oubliez pas de configurer un enregistrement DNS A pour votre domaine pointant vers l'adresse IP du VPS.