La configuration suivante est requise dans le fichier build.gradle des projets Spring Boot.
build.gradle
jar {
baseName = 'your-app'
version = version
}
springBoot {
buildInfo()
executable = true
mainClass = "com.shunya.App"
}
exécutable = vrai
Cela est nécessaire pour créer un pot entièrement exécutable sur le système Unix (Centos et Ubuntu)
Créez un fichier .conf
Si vous souhaitez configurer des propriétés JVM personnalisées ou des arguments d'exécution d'application Spring Boot, vous pouvez créer un fichier .conf avec le même nom que le nom de l'application Spring Boot et le placer parallèlement au fichier jar.
Étant donné que your-app.jar est le nom de votre application Spring Boot, vous pouvez créer le fichier suivant.
JAVA_OPTS="-Xms64m -Xmx64m"
RUN_ARGS=--spring.profiles.active=prod
LOG_FOLDER=/custom/log/folder
Cette configuration définira 64 Mo de RAM pour l'application Spring Boot et activera le profil prod.
Créer un nouvel utilisateur sous Linux
Pour une sécurité renforcée, nous devons créer un utilisateur spécifique pour exécuter l'application Spring Boot en tant que service.
Créer un nouvel utilisateur
sudo useradd -s /sbin/nologin springboot
Sur Ubuntu / Debian, modifiez la commande ci-dessus comme suit:
sudo useradd -s /usr/sbin/nologin springboot
Définir le mot de passe
sudo passwd springboot
Rendre Springboot propriétaire du fichier exécutable
chown springboot:springboot your-app.jar
Empêcher la modification du fichier jar
chmod 500 your-app.jar
Cela configurera les autorisations de jar afin qu'il ne puisse pas être écrit et ne puisse être lu ou exécuté que par son propriétaire springboot.
Vous pouvez éventuellement rendre votre fichier jar immuable en utilisant la commande change attribute (chattr).
sudo chattr +i your-app.jar
Des autorisations appropriées doivent également être définies pour le fichier .conf correspondant. .conf nécessite juste un accès en lecture (Octal 400) au lieu d'un accès en lecture + exécution (Octal 500)
chmod 400 your-app.conf
Créer un service Systemd
/etc/systemd/system/your-app.service
[Unit]
Description=Your app description
After=syslog.target
[Service]
User=springboot
ExecStart=/var/myapp/your-app.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
Redémarrez automatiquement le processus s'il est tué par le système d'exploitation
Ajoutez les deux attributs ci-dessous (Redémarrer et RestartSec) pour redémarrer automatiquement le processus en cas d'échec.
/etc/systemd/system/your-app.service
[Service]
User=springboot
ExecStart=/var/myapp/your-app.jar
SuccessExitStatus=143
Restart=always
RestartSec=30
La modification fera redémarrer l'application Spring Boot en cas d'échec avec un retard de 30 secondes. Si vous arrêtez le service à l'aide de la commande systemctl, le redémarrage n'aura pas lieu.
Planifier le service au démarrage du système
Pour signaler que l'application démarre automatiquement au démarrage du système, utilisez la commande suivante:
Activer l'application Spring Boot au démarrage du système
sudo systemctl enable your-app.service
Démarrer un arrêt du service
systemctl peut être utilisé dans Ubuntu 16.04 LTS et 18.04 LTS pour démarrer et arrêter le processus.
Lancer le processus
sudo systemctl start your-app
Arrêtez le processus
sudo systemctl stop your-app
Références
https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html