Déploiement d'une Application Spring Boot avec Nginx

Construction du Projet

Pour compiler et empaqueter l'application, exécutez la commande Maven suivante :

mvn clean install

Configuration du Serveur Nginx

Installation

Pour installer Nginx, référez-vous à des ressources extérieures telles que les tutoriels disponibles en ligne.

Fichier de Configuration Principle (nginx.conf)

Le fichier se trouve généralement dans le répertoire nginx/conf. Voici les blocs de configuration essentiels :

Configuration de l'API Backend

server {
    server_name api.monsite.com;
    listen 80;
    
    location / {
        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_http_version 1.1;
        proxy_read_timeout 21600s;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass http://127.0.0.1:7086; # Doit correspondre au port du backend
    }
}

Configuration de l'Application Web Frontend

server {
    listen 80;
    server_name frontend.monsite.com;
    root /data/projets/web-front/dist; # Chemin vers le dossier build du frontend
    index index.html;
    try_files $uri $uri/ /index.html;
    location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|js|pdf|txt)$ {
        root /data/projets/web-front/dist;
        error_page 404 http://frontend.monsite.com/index.html;
    }
}

Configuration d'Accès aux Fichiers Statiques Locaux

server {
    listen 6088;
    server_name 192.168.1.100;
    root /data/static; # Répertoire contenant les fichiers statiques
    index index.html;
    try_files $uri $uri/ /index.html;
    location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|js|pdf|txt)$ {
        root /data/static;
        error_page 404 http://192.168.1.100:6088/index.html;
    }
}

Méthodes d'Ajout des Configurations

Vous avez deux options pour intégrer ces blocs :

  1. Les insérer directement dans la section http { } du fichier nginx.conf.
  2. Créer des fichiers séparés pour chaque bloc (ex: /data/nginx/vhost/api.conf) et inclure le dossier dans nginx.conf :
# Dans la section http { } du fichier nginx.conf, ajoutez à la fin :
include /data/nginx/vhost/*.conf;

Validation et Rechargement de la Configuration

Après toute modification, vérifiez la syntaxe et rechargez Nginx :

/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

Démarrage de l'Application Backend

Transférez le fichier JAR généré sur le serveur. Utilisez la commande suivante (ou créez un script start.sh) :

cd /data/projets/back/api
nohup /data/java/jdk-11/bin/java -Xms400m -Xmx400m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=512m -jar mon-app-api-1.0.0.jar >/data/logs/app-back.log 2>&1 &

Arrêt de l'Application

Avant de redéployer une nouvelle version, il est nécessaire d'arrêter l'ancien processus.

# Lister les ports en écoute
netstat -tlnp

# Arrêter le processus avec l'identifiant PID correspondant
kill -9 PID

Redémarrage Automatisé

Voici un script Bash complet (ex: restart.sh) pour arrêter et redémarrer l'application :

#!/bin/bash
echo "=== Arrêt du processus en cours ==="

NOM_JAR='mon-app-api-1.0.0.jar'
PIDS=`ps -ef | grep "$NOM_JAR" | grep "java" | awk '{print $2}'`

if [ -z "$PIDS" ]; then
    echo "Aucun processus trouvé pour $NOM_JAR."
else
    echo "Arrêt du processus PID: $PIDS ..."
    for PID in $PIDS ; do
        kill -9 $PID >/dev/null 2>&1
    done
    echo "Processus arrêté."
fi

echo "=== Démarrage de l'application ==="
cd /data/projets/back/api
nohup /data/java/jdk-11/bin/java -Xms1024m -Xmx4096m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxNewSize=4096m -jar $NOM_JAR >/data/logs/app-back.log 2>&1 &
echo "Application démarrée."

Consultation des Journaux

Pour suivre les logs en temps réel, utilisez la commande tail :

#!/bin/bash
echo "=== Suivi du fichier de log ==="
tail -f /data/projets/back/api/logs/application.log

Étiquettes: Spring Boot nginx Déploiement Java Script Bash

Publié le 17 juillet à 11h13