Introduction : Pourquoi déployer Swift sur un VPS ?
Swift n'est pas seulement un langage pour les applications iOS et macOS. Grâce au framework Vapor et au support natif de Linux, vous pouvez créer des solutions serveur hautes performances en Swift. Déployer une telle application sur un VPS (Virtual Private Server) ouvre des possibilités pour créer vos propres API, sites web et microservices.
Dans cet article, nous allons parcourir le cycle complet de déploiement d'une application Swift sur un serveur distant avec Ubuntu 22.04. Vous apprendrez à préparer l'environnement, compiler le projet, configurer le démarrage automatique et le serveur proxy. Ce guide convient aussi bien aux débutants qu'aux développeurs expérimentés souhaitant systématiser leurs connaissances.
1. Préparation du serveur et installation de Swift
La première étape est la location d'un VPS (nous recommandons 2 cœurs, 2 Go de RAM). Après la connexion en SSH, effectuez la mise à jour du système et l'installation des dépendances.
1.1. Configuration de base
ssh root@votre-ip-serveurapt update && apt upgrade -yapt install curl git build-essential pkg-config libssl-dev zlib1g-dev -y1.2. Installation de Swift Toolchain
Pour Ubuntu 22.04, utilisez la distribution officielle de Swift. Vérifiez la version actuelle sur swift.org.
# Télécharger Swift 5.9 (exemple)wget https://download.swift.org/swift-5.9-release/ubuntu2204/swift-5.9-RELEASE/swift-5.9-RELEASE-ubuntu22.04.tar.gz
# Décompressertar -xzf swift-5.9-RELEASE-ubuntu22.04.tar.gzmv swift-5.9-RELEASE-ubuntu22.04 /usr/share/swift
# Ajouter au PATHecho 'export PATH=/usr/share/swift/usr/bin:$PATH' >> ~/.bashrcsource ~/.bashrc
# Vérificationswift --version2. Compilation et configuration de l'application
Considérons le déploiement d'une application Vapor typique. Supposons que votre projet se trouve déjà dans un dépôt Git.
2.1. Clonage et construction
cd /var/www/git clone https://github.com/votre-username/votre-repository.git myappcd myapp
# Construction en mode Releaseswift build -c releaseAprès une compilation réussie, le fichier exécutable se trouvera dans .build/release/Run. Pour Vapor, le port par défaut est 8080.
2.2. Lancement et test
# Lancement temporaire (Ctrl+C pour arrêter).build/release/Run serve --hostname 0.0.0.0 --port 8080Vérifiez le fonctionnement : ouvrez dans votre navigateur http://votre-ip-serveur:8080. Si vous voyez une réponse, tout fonctionne.
3. Configuration de systemd pour le démarrage automatique
Pour que l'application démarre automatiquement après un redémarrage du serveur, créons un service systemd.
3.1. Création du service
nano /etc/systemd/system/myapp.serviceInsérez le code suivant (remplacez les chemins par les vôtres) :
[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. Activation et lancement
systemctl daemon-reloadsystemctl enable myappsystemctl start myappsystemctl status myappSi le statut est active (running), le service fonctionne. Désormais, l'application démarrera automatiquement.
4. Configuration de Nginx et SSL (HTTPS)
Le serveur proxy Nginx est nécessaire pour gérer les fichiers statiques, l'équilibrage de charge et l'ajout d'un certificat SSL.
4.1. Installation de Nginx
apt install nginx -y4.2. Configuration du proxy
Créez un fichier de configuration pour votre domaine ou votre IP :
nano /etc/nginx/sites-available/myappserver { listen 80; server_name votre-domaine.ru;
location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $ho