La seguente configurazione è richiesta nel file build.gradle nei progetti Spring Boot.
build.gradle
jar {
baseName = 'your-app'
version = version
}
springBoot {
buildInfo()
executable = true
mainClass = "com.shunya.App"
}
eseguibile = vero
Ciò è necessario per creare un vaso completamente eseguibile sul sistema unix (Centos e Ubuntu)
Crea un file .conf
Se si desidera configurare proprietà JVM personalizzate o argomenti di esecuzione dell'applicazione Spring Boot, è possibile creare un file .conf con lo stesso nome del nome dell'applicazione Spring Boot e posizionarlo parallelamente al file jar.
Considerando che your-app.jar è il nome dell'applicazione Spring Boot, è possibile creare il seguente file.
JAVA_OPTS="-Xms64m -Xmx64m"
RUN_ARGS=--spring.profiles.active=prod
LOG_FOLDER=/custom/log/folder
Questa configurazione imposterà 64 MB di RAM per l'applicazione Spring Boot e attiverà il profilo prod.
Crea un nuovo utente in linux
Per una maggiore sicurezza, è necessario creare un utente specifico per eseguire l'applicazione Spring Boot come servizio.
Crea un nuovo utente
sudo useradd -s /sbin/nologin springboot
Su Ubuntu / Debian, modifica il comando sopra come segue:
sudo useradd -s /usr/sbin/nologin springboot
Impostare la password
sudo passwd springboot
Rendi Springboot il proprietario del file eseguibile
chown springboot:springboot your-app.jar
Impedire la modifica del file jar
chmod 500 your-app.jar
Ciò configurerà le autorizzazioni del jar in modo che non possa essere scritto e possa essere letto o eseguito solo dal suo avvio di primavera proprietario.
Opzionalmente puoi rendere il tuo file jar come immutabile usando il comando change Attribute (chattr).
sudo chattr +i your-app.jar
È necessario impostare autorizzazioni appropriate anche per il file .conf corrispondente. .conf richiede solo l'accesso in lettura (Octal 400) anziché l'accesso in lettura + esecuzione (Octal 500)
chmod 400 your-app.conf
Crea servizio 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
Riavvia automaticamente il processo se viene ucciso dal sistema operativo
Aggiungi i due attributi seguenti (Restart e RestartSec) per riavviare automaticamente il processo in caso di errore.
/etc/systemd/system/your-app.service
[Service]
User=springboot
ExecStart=/var/myapp/your-app.jar
SuccessExitStatus=143
Restart=always
RestartSec=30
La modifica farà riavviare l'applicazione Spring Boot in caso di errore con un ritardo di 30 secondi. Se si interrompe il servizio utilizzando il comando systemctl, il riavvio non avverrà.
Pianifica il servizio all'avvio del sistema
Per contrassegnare l'applicazione per l'avvio automatico all'avvio del sistema, utilizzare il comando seguente:
Abilita l'applicazione Spring Boot all'avvio del sistema
sudo systemctl enable your-app.service
Avvia un arresto del servizio
systemctl può essere utilizzato in Ubuntu 16.04 LTS e 18.04 LTS per avviare e interrompere il processo.
Inizia il processo
sudo systemctl start your-app
Ferma il processo
sudo systemctl stop your-app
Riferimenti
https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html