Déploiement d'une application Swift sur VPS : pas à pas de A à Z

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 : pas à pas de A à Z

\n\n

Swift a depuis longtemps cessé d'être un langage réservé au développement iOS. Grâce au framework Vapor et au support officiel de Linux, vous pouvez créer des applications serveur hautes performances en Swift et les déployer sur un VPS. Dans ce guide, nous parcourrons tout le chemin, de la configuration du serveur au lancement de la version de production de votre application Swift.

\n\n

1. Préparation du VPS et installation de Swift

\n\n

Pour commencer, vous aurez besoin d'un VPS avec Ubuntu 22.04 LTS (ou 20.04). Connectez-vous en SSH et effectuez la mise à jour du système :

\n\n
ssh root@votre-ip-serveur\napt update && apt upgrade -y
\n\n

Installez les dépendances nécessaires pour Swift :

\n\n
apt install -y curl git build-essential libssl-dev libcurl4-openssl-dev\napt install -y libxml2-dev libicu-dev libsqlite3-dev libz-dev
\n\n

Téléchargez et installez maintenant Swift pour Ubuntu. Vérifiez la version actuelle sur swift.org. Au moment de la rédaction de cet article, il s'agit de Swift 5.9 :

\n\n
cd /opt\nwget https://download.swift.org/swift-5.9-release/ubuntu2204/swift-5.9-RELEASE/swift-5.9-RELEASE-ubuntu22.04.tar.gz\ntar xzf swift-5.9-RELEASE-ubuntu22.04.tar.gz\necho 'export PATH=/opt/swift-5.9-RELEASE-ubuntu22.04/usr/bin:$PATH' >> ~/.bashrc\nsource ~/.bashrc
\n\n

Vérifiez l'installation :

\n\n
swift --version
\n\n

Vous devriez voir la version Swift 5.9.

\n\n

2. Création et compilation de l'application Swift/Vapor

\n\n

Installez Vapor Toolbox (optionnel mais pratique) :

\n\n
git clone https://github.com/vapor/toolbox.git\ncd toolbox\nswift build -c release\ncp .build/release/vapor /usr/local/bin/
\n\n

Créons une application Vapor de test. Si vous avez déjà un projet, copiez-le simplement sur le serveur via SCP ou Git.

\n\n
cd ~\nvapor new HelloServer\ncd HelloServer
\n\n

Modifions Sources/App/routes.swift pour ajouter un endpoint simple :

\n\n
import Vapor\n\nfunc routes(_ app: Application) throws {\n    app.get { req async in\n        "Hello from Swift on VPS!"\n    }\n    \n    app.get("status") { req async -> HTTPStatus in\n        return .ok\n    }\n}
\n\n

Compilez le projet en mode production :

\n\n
swift build -c release
\n\n

Le binaire apparaîtra dans .build/release/HelloServer.

\n\n

3. Configuration du lancement et du service systemd

\n\n

Pour que l'application démarre automatiquement après un redémarrage du serveur, créons un service systemd. Créez d'abord un utilisateur pour l'application (sécurité) :

\n\n
useradd -m -s /bin/bash swiftuser\nchown -R swiftuser:swiftuser /root/HelloServer
\n\n

Créez le fichier de service :

\n\n
nano /etc/systemd/system/helloserver.service
\n\n

Insérez le contenu suivant :

\n\n
[Unit]\nDescription=HelloServer Swift App\nAfter=network.target\n\n[Service]\nType=simple\nUser=swiftuser\nWorkingDirectory=/root/HelloServer\nExecStart=/root/HelloServer/.build/release/HelloServer --host 127.0.0.1 --port 8080\nRestart=on-failure\nRestartSec=5\n\n[Install]\nWantedBy=multi-user.target
\n\n

Lancez le service :

\n\n
systemctl daemon-reload\nsystemctl enable helloserver\nsystemctl start helloserver\nsystemctl status helloserver
\n\n

Vérifiez que l'application répond localement :

\n\n
curl http://127.0.0.1:8080
\n\n

4. Configuration de Nginx comme proxy inverse

\n\n

Pour un environnement de production, il n'est pas recommandé d'ouvrir le port 8080 directement. Installons Nginx et configurons le proxy avec SSL (Let's Encrypt).

\n\n
apt install -y nginx certbot python3-certbot-nginx
\n\n

Créez la configuration Nginx :

\n\n
nano /etc/nginx/sites-available/helloserver
\n\n

Insérez :

\n\n
server {\n    listen 80;\                

Blogs

Book Recommendations