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