Déploiement d'une application Swift sur VPS : guide étape par étape pour avancés
\nVous avez créé une excellente application serveur en Swift avec le framework Vapor. Il est maintenant temps de la mettre en production. Le déploiement d'une application Swift sur VPS nécessite de comprendre les spécificités du fonctionnement de Swift sur Linux, la configuration de l'environnement serveur et l'utilisation des bons outils pour assurer la stabilité et les performances. Dans ce guide avancé, nous aborderons le cycle complet : de la compilation sous Linux à la configuration CI/CD, en passant par l'utilisation de Docker et Supervisor.
\n\n1. Préparation du serveur et compilation de Swift pour Linux
\nLa première chose à comprendre : Swift sur macOS et Linux sont des écosystèmes différents. Pour le déploiement sur VPS (Ubuntu 22.04 LTS), une cross-compilation ou une compilation directement sur le serveur est nécessaire. Il est recommandé de compiler sur le serveur pour éviter les problèmes de bibliothèques.
\n\n1.1 Installation de Swift sur Ubuntu
\nConnectez-vous au serveur via SSH et installez les dépendances nécessaires :
\nsudo apt update\nsudo apt install -y curl git clang libicu-dev libcurl4-openssl-dev libssl-dev \\\n libsqlite3-dev libxml2-dev pkg-config uuid-dev\n\n# Téléchargez la dernière version de Swift Toolchain\nwget https://download.swift.org/swift-5.9.2-release/ubuntu2204/swift-5.9.2-RELEASE/swift-5.9.2-RELEASE-ubuntu22.04.tar.gz\ntar -xzf swift-5.9.2-RELEASE-ubuntu22.04.tar.gz\nsudo mv swift-5.9.2-RELEASE-ubuntu22.04 /usr/share/swift\n\n# Ajoutez au PATH\necho 'export PATH=/usr/share/swift/usr/bin:$PATH' >> ~/.bashrc\nsource ~/.bashrc\nswift --version\n\n1.2 Clonage et compilation du projet
\nClonez le dépôt et compilez la version release de l'application :
\ngit clone https://github.com/your-username/your-swift-app.git\ncd your-swift-app\nswift build --configuration release\nAprès une compilation réussie, le binaire se trouvera dans .build/release/YourApp. Vérifiez son lancement manuellement :
./.build/release/YourApp serve --hostname 0.0.0.0 --port 8080\n\n2. Configuration de l'environnement de production : Nginx et Supervisor
\nLancer une application Swift directement sur le port 80 est une mauvaise pratique. Utilisez la combinaison Nginx (reverse proxy) + Supervisor (gestionnaire de processus).
\n\n2.1 Configuration de Nginx
\nInstallez Nginx et créez une configuration pour proxyfier les requêtes vers votre application Swift :
\nsudo apt install nginx\nsudo nano /etc/nginx/sites-available/yourapp\nContenu du fichier :
\nserver {\n listen 80;\n server_name yourdomain.com www.yourdomain.com;\n\n location / {\n proxy_pass http://127.0.0.1:8080;\n proxy_http_version 1.1;\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection 'upgrade';\n proxy_set_header Host $host;\n proxy_cache_bypass $http_upgrade;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $scheme;\n }\n\n # Configuration pour les gros fichiers (si nécessaire)\n client_max_body_size 50m;\n}\nActivez la configuration et vérifiez :
\nsudo ln -s /etc/nginx/sites-available/yourapp /etc/nginx/sites-enabled/\nsudo nginx -t\nsudo systemctl restart nginx\n\n2.2 Configuration de Supervisor pour le redémarrage automatique
\nSupervisor surveillera le processus et le redémarrera en cas de panne. Installez et créez la configuration :
\nsudo apt install supervisor\nsudo nano /etc/supervisor/conf.d/yourapp.conf\nContenu de la configuration :
\n[program:yourapp]\ncommand=/home/ubuntu/your-swift-app/.build/release/YourApp serve --hostname 0.0.0.0 --port 8080\ndirectory=/home/ubuntu/your-swift-app\nuser=ubuntu\nautostart=true\nautorestart=true\nstartretries=3\nstderr_logfile=/var/log/yourapp.err.log\nstdout_logfile=/var/log/yourapp.out.log\nenvironment=ENVIRONMENT="producti