Déploiement d'une application Java sur VPS : guide étape par étape 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 Java sur VPS : guide étape par étape de A à Z

\n\n

Développer une application Java n'est que la moitié du travail. La seconde moitié, tout aussi importante, est son déploiement sur un serveur de production. Dans ce guide, nous allons parcourir le cycle complet de déploiement d'une application Java (Spring Boot) sur un serveur virtuel privé (VPS) avec le système d'exploitation Ubuntu 22.04. Vous apprendrez à configurer le serveur, à construire le projet, à le lancer en tant que service système et à assurer un accès sécurisé via un serveur web.

\n\n

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

\n\n

La première étape consiste à vous connecter à votre VPS via SSH et à installer l'environnement d'exécution Java (JRE) et Git.

\n\n

Connexion au serveur

\n
ssh root@votre-ip-serveur
\n\n

Mise à jour des paquets et installation de Java (OpenJDK 17)

\n

Pour Spring Boot 3.x, Java 17 est recommandé. Installons OpenJDK.

\n
apt update && apt upgrade -y\napt install openjdk-17-jdk git -y\njava -version
\n

Vous devriez voir les informations sur la version de Java 17.

\n\n

Installation de Nginx (pour le reverse proxy)

\n
apt install nginx -y\nsystemctl start nginx\nsystemctl enable nginx
\n\n

2. Construction de l'application Java (Maven/Gradle)

\n\n

Sur votre machine locale (ou directement sur le serveur si vous clonez le dépôt), vous devez construire le fichier JAR. Examinons les deux options.

\n\n

Option A : Construction locale et copie sur le serveur

\n

Supposons que vous ayez un projet Spring Boot avec Maven.

\n
# Sur la machine locale\nmvn clean package -DskipTests\n# Le fichier apparaîtra dans target/my-app-0.0.1-SNAPSHOT.jar
\n

Ensuite, copiez-le sur le serveur via SCP :

\n
scp target/my-app-0.0.1-SNAPSHOT.jar root@votre-ip:/opt/myapp/
\n\n

Option B : Construction directement sur le serveur

\n

Clonez le dépôt et construisez le projet :

\n
cd /opt\ngit clone https://github.com/votre-nom-utilisateur/votre-depot.git myapp\ncd myapp\n./mvnw clean package -DskipTests\n# Ou, si Maven est installé globalement :\nmvn clean package -DskipTests
\n\n

3. Configuration de la configuration de production et création du service systemd

\n\n

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

\n\n

Création du script de lancement

\n

Créez un répertoire pour l'application (si ce n'est pas déjà fait) :

\n
mkdir -p /opt/myapp\n# Déplacez le fichier JAR dans ce répertoire s'il n'y est pas déjà
\n\n

Création du service systemd

\n

Créez le fichier /etc/systemd/system/myapp.service :

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

Insérez le contenu suivant (remplacez les chemins et paramètres selon votre projet) :

\n
[Unit]\nDescription=My Java Spring Boot Application\nAfter=syslog.target network.target\n\n[Service]\nUser=root\nWorkingDirectory=/opt/myapp\nExecStart=/usr/bin/java -Xms256m -Xmx512m -jar /opt/myapp/my-app-0.0.1-SNAPSHOT.jar --server.port=8080\nSuccessExitStatus=143\nRestart=always\nRestartSec=10\n\n[Install]\nWantedBy=multi-user.target
\n

Explication des paramètres :

\n
    \n
  • -Xms256m -Xmx512m — taille initiale et maximale du tas Java.
  • \n
  • --server.port=8080 — port sur lequel l'application fonctionnera.
  • \n
  • Restart=always — redémarrage automatique en cas de panne.
  • \n
\n\n

Lancement et vérification du service

\n
systemctl daemon-reload\nsystemctl start myapp\nsystemctl status myapp\nsystemctl enable myapp  # Démarrage automatique au démarrage
\n

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

\n
curl http://localhost:8080/actuator/health
\n

Vous devriez obtenir une réponse JSON avec le statut UP.

\n\n

4. Configuration du Reverse Proxy via Nginx

\n\n

L'accès direct à l'application via le port 8080 n'est pas sécurisé. Configurons Nginx comme serveur proxy, qui acceptera les requêtes sur le

Blogs

Book Recommendations