Déploiement d'une application Swift sur VPS : guide avancé

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Déploiement d'une application Swift sur VPS : guide étape par étape pour avancés

\n

Vous 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\n

1. Préparation du serveur et compilation de Swift pour Linux

\n

La 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\n

1.1 Installation de Swift sur Ubuntu

\n

Connectez-vous au serveur via SSH et installez les dépendances nécessaires :

\n
sudo 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\n

1.2 Clonage et compilation du projet

\n

Clonez le dépôt et compilez la version release de l'application :

\n
git clone https://github.com/your-username/your-swift-app.git\ncd your-swift-app\nswift build --configuration release
\n

Après une compilation réussie, le binaire se trouvera dans .build/release/YourApp. Vérifiez son lancement manuellement :

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

2. Configuration de l'environnement de production : Nginx et Supervisor

\n

Lancer une application Swift directement sur le port 80 est une mauvaise pratique. Utilisez la combinaison Nginx (reverse proxy) + Supervisor (gestionnaire de processus).

\n\n

2.1 Configuration de Nginx

\n

Installez Nginx et créez une configuration pour proxyfier les requêtes vers votre application Swift :

\n
sudo apt install nginx\nsudo nano /etc/nginx/sites-available/yourapp
\n

Contenu du fichier :

\n
server {\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}
\n

Activez la configuration et vérifiez :

\n
sudo ln -s /etc/nginx/sites-available/yourapp /etc/nginx/sites-enabled/\nsudo nginx -t\nsudo systemctl restart nginx
\n\n

2.2 Configuration de Supervisor pour le redémarrage automatique

\n

Supervisor surveillera le processus et le redémarrera en cas de panne. Installez et créez la configuration :

\n
sudo apt install supervisor\nsudo nano /etc/supervisor/conf.d/yourapp.conf
\n

Contenu 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                

Blogs

Book Recommendations