Déploiement d'une application Java 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 VPS est le choix idéal pour les applications Java

Le déploiement d'une application Java sur un serveur privé virtuel (VPS) est la référence pour les développeurs qui souhaitent un contrôle total sur l'environnement d'exécution. Contrairement à l'hébergement partagé, un VPS fournit des ressources dédiées (CPU, RAM, disque), permet de configurer la Java Virtual Machine (JVM), d'installer toutes les bibliothèques et de configurer le serveur selon les besoins spécifiques du projet.

Dans cet article, nous allons parcourir le cycle complet de déploiement : de la préparation du VPS et de l'installation du JDK au lancement de l'application en mode production avec systemd. Toutes les étapes sont accompagnées d'exemples de code et de commandes pour Linux (Ubuntu 22.04 LTS).

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

1.1. Connexion au serveur

Après l'achat du VPS, vous recevrez une adresse IP et un mot de passe root. Connectez-vous via SSH :

ssh root@votre_adresse_IP_serveur

Il est recommandé de créer immédiatement un utilisateur non privilégié pour le travail quotidien :

adduser deployerusermod -aG sudo deployer

1.2. Installation de Java (JDK 17 LTS)

Pour les applications Java modernes, OpenJDK 17 est le meilleur choix. Exécutez :

sudo apt updatesudo apt install openjdk-17-jdk -y

Vérifiez l'installation :

java -version# Sortie : openjdk version "17.0.10" 2024-01-16 LTS

1.3. Installation de Git et Maven/Gradle

Pour compiler le projet depuis le dépôt :

sudo apt install git maven -y# Ou pour Gradle :# sudo apt install gradle -y

2. Compilation et préparation de l'application

2.1. Clonage du dépôt

Supposons que votre application Spring Boot se trouve sur GitHub :

cd /optsudo git clone https://github.com/votre_compte/my-java-app.gitcd my-java-app

2.2. Compilation du fichier JAR

Pour Maven :

mvn clean package -DskipTests

En conséquence, un fichier my-app-0.0.1-SNAPSHOT.jar apparaîtra dans target/. Assurez-vous qu'il se lance :

java -jar target/my-app-0.0.1-SNAPSHOT.jar --server.port=8080

Vérifiez le fonctionnement : ouvrez dans le navigateur http://votre_IP:8080.

2.3. Optimisation du JAR pour la production

Ajoutez dans application.properties les paramètres pour la production :

server.port=8080spring.datasource.url=jdbc:postgresql://localhost:5432/mydbspring.datasource.username=app_userspring.datasource.password=secure_passwordspring.jpa.hibernate.ddl-auto=validate

Ne stockez jamais les mots de passe réels dans le code — utilisez des variables d'environnement ou Vault.

3. Configuration de la base de données et de l'environnement

3.1. Installation de PostgreSQL

sudo apt install postgresql postgresql-contrib -ysudo systemctl start postgresqlsudo systemctl enable postgresql

Créez la base de données et l'utilisateur :

sudo -u postgres psqlCREATE DATABASE mydb;CREATE USER app_user WITH PASSWORD 'secure_password';GRANT ALL PRIVILEGES ON DATABASE mydb TO app_user;\\q

3.2. Configuration des variables d'environnement

Créez le fichier /etc/environment.d/java-app.conf :

DB_URL=jdbc:postgresql://localhost:5432/mydbDB_USER=app_userDB_PASSWORD=secure_passwordJAVA_OPTS="-Xms256m -Xmx512m"

Rechargez l'environnement :

source /etc/environment.d/java-app.conf

4. Lancement de l'application en tant que service systemd

4.1. Création du fichier unit

Créez le fichier /etc/systemd/system/java-app.service :

[Unit]Description=Java Spring Boot ApplicationAfter=network.target postgresql.service

[Service]User=deployerWorkingDirectory=/opt/my-java-appExecStart=/usr/bin/java $JAVA_OPTS -jar /opt/my-java-app/target/my-app-0.0.1-SNAPSHOT.jarSuccessExitStatus=143Restart=alwaysRest

Blogs

Book Recommendations