Déploiement d'une application Go sur VPS : guide étape par étape

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 le déploiement d'une application Go sur un VPS est simple et efficace

Go (Golang) est réputé pour ses performances et sa simplicité. L'un des principaux avantages du langage est la compilation en un seul binaire statique qui ne nécessite pas l'installation de runtimes supplémentaires sur le serveur. Cela rend le déploiement d'une application Go sur un VPS incroyablement rapide et fiable. Dans cet article, nous allons parcourir le cycle complet de déploiement : de la préparation du serveur à la configuration du reverse proxy et du HTTPS. Vous obtiendrez une checklist prête à l'emploi que vous pourrez utiliser pour n'importe quel projet Go.



1. Préparation du VPS et installation des logiciels nécessaires

Avant de charger le code, vous devez préparer le serveur. On suppose que vous disposez d'un VPS avec Ubuntu 22.04 ou 24.04. Connectez-vous via SSH et effectuez la mise à jour du système.

sudo apt update && sudo apt upgrade -y

Installation de Go sur le serveur

Bien que Go soit compilé en binaire, un compilateur peut être nécessaire sur le serveur pour la construction. Installons la dernière version :

wget https://go.dev/dl/go1.22.5.linux-amd64.tar.gzsudo tar -C /usr/local -xzf go1.22.5.linux-amd64.tar.gzexport PATH=$PATH:/usr/local/go/binecho 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile

Vérifiez l'installation : go version.



Installation de Git et Nginx

Git sera nécessaire pour cloner le dépôt, et Nginx pour le reverse proxy et les fichiers statiques.

sudo apt install git nginx -y


2. Construction et lancement de l'application Go

Examinons le processus avec l'exemple d'un simple serveur HTTP. Créez un fichier main.go :

package main

import (\t"fmt"\t"net/http")

func handler(w http.ResponseWriter, r *http.Request) {\tfmt.Fprintf(w, "Hello from Go on VPS!")}

func main() {\thttp.HandleFunc("/", handler)\tfmt.Println("Server started on :8080")\thttp.ListenAndServe(":8080", nil)}

Construisez le binaire pour Linux (même si vous travaillez sous Windows/Mac) :

GOOS=linux GOARCH=amd64 go build -o myapp main.go

Téléchargez maintenant le binaire sur le serveur. Utilisez SCP ou Rsync :

scp myapp user@your-server-ip:~/

Sur le serveur, rendez le fichier exécutable et lancez-le :

chmod +x ~/myapp./myapp &

Vérifiez le fonctionnement : curl http://localhost:8080. Si vous voyez "Hello from Go on VPS!" — tout fonctionne.



3. Configuration de systemd pour le démarrage automatique

Le lancement manuel n'est pas une bonne pratique. Utilisons systemd pour que l'application démarre au démarrage du système et redémarre en cas de panne.

Créez un fichier de service :

sudo nano /etc/systemd/system/myapp.service

Insérez la configuration :

[Unit]Description=Go Application ServiceAfter=network.target

[Service]Type=simpleUser=www-dataWorkingDirectory=/home/userExecStart=/home/user/myappRestart=alwaysRestartSec=5

[Install]WantedBy=multi-user.target

Remplacez /home/user par votre chemin. Activez et démarrez le service :

sudo systemctl daemon-reloadsudo systemctl enable myappsudo systemctl start myappsudo systemctl status myapp

Maintenant, votre application Go fonctionnera comme un démon.



4. Configuration de Nginx comme reverse proxy et HTTPS

Pour que l'application soit accessible par domaine et via le port 443, configurons Nginx.

Configuration du reverse proxy

Supprimez la configuration par défaut et créez la vôtre :

sudo rm /etc/nginx/sites-enabled/defaultsudo nano /etc/nginx/sites-available/myapp

Ajoutez :

server {    listen 80;    server_name yourdomain.com www.yourdomain.com;

location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_h

Blogs

Book Recommendations