Déploiement d'une application Go sur VPS : guide 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

Introduction : Pourquoi Go est idéal pour un VPS, et ce que nous allons faire



Go (Golang) est un langage conçu pour les applications serveur évolutives et performantes. La compilation en un seul fichier binaire statique en fait un candidat idéal pour le déploiement sur un VPS (Virtual Private Server). Vous n'avez pas besoin d'installer d'interpréteur ou de dépendances sur le serveur — il suffit de copier le fichier et de l'exécuter.



Dans cet article, nous allons parcourir le chemin complet : de l'écriture d'un simple serveur HTTP en Go à son exécution en production sur un VPS en utilisant systemd pour le démarrage automatique, Nginx comme proxy inverse et Let's Encrypt pour le HTTPS.



Vous apprendrez à :

  • Compiler une application Go pour Linux
  • Télécharger le fichier binaire sur le VPS via SSH
  • Configurer systemd pour un démarrage automatique
  • Installer et configurer Nginx
  • Obtenir un certificat SSL gratuit


Étape 1 : Préparation de l'application Go et compilation



Création d'une application web simple



Pour l'exemple, écrivons un serveur HTTP minimal qui répond "Hello, VPS!". Créez un fichier main.go :



package main

import ( "fmt" "net/http")

func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, VPS!") })

fmt.Println("Server started on :8080") http.ListenAndServe(":8080", nil)}


Compilation pour Linux



Si vous développez sur Windows ou macOS, vous devez compiler le binaire pour l'architecture cible du VPS (généralement linux/amd64). Ouvrez un terminal dans le dossier du projet et exécutez :



set GOOS=linuxset GOARCH=amd64go build -o myapp


Pour Linux/macOS, utilisez export :



export GOOS=linuxexport GOARCH=amd64go build -o myapp


Le résultat sera un fichier binaire myapp. Vérifiez sa taille — elle sera petite (environ 7-10 Mo), car Go compile tout de manière statique.



Étape 2 : Téléchargement sur le VPS et configuration de systemd



Connexion au serveur et téléchargement du fichier



Connectez-vous à votre VPS via SSH :



ssh root@votre-ip-serveur


Créez un répertoire pour l'application :



mkdir -p /opt/myappcd /opt/myapp


Sur votre machine locale, téléchargez le binaire via SCP (exécutez dans un terminal séparé) :



scp myapp root@votre-ip-serveur:/opt/myapp/


Revenez sur le serveur et donnez les droits d'exécution :



chmod +x /opt/myapp/myapp


Création du service systemd



Pour que l'application démarre automatiquement au démarrage du système et redémarre en cas de panne, créons une unité systemd. Créez le fichier :



nano /etc/systemd/system/myapp.service


Insérez le contenu suivant :



[Unit]Description=My Go ApplicationAfter=network.target

[Service]Type=simpleUser=www-dataGroup=www-dataWorkingDirectory=/opt/myappExecStart=/opt/myapp/myappRestart=on-failureRestartSec=5

[Install]WantedBy=multi-user.target


Explication des paramètres :

  • User et Group — l'utilisateur sous lequel l'application sera exécutée (recommandé : ne pas utiliser root).
  • Restart=on-failure — redémarrage automatique en cas de panne.
  • RestartSec=5 — pause avant le redémarrage.


Maintenant, activons et démarrons le service :



systemctl daemon-reloadsystemctl enable myappsystemctl start myappsystemctl status myapp


Si tout est fait correctement, vous verrez le statut active (running). Vérifiez que l'application répond localement :



curl http://localhost:8080


Étape 3 : Configuration de Nginx comme proxy inverse



L'accès direct à l'application via le port 8

Blogs

Book Recommendations