Следующая конфигурация требуется в файле build.gradle в проектах Spring Boot.
build.gradle
jar {
baseName = 'your-app'
version = version
}
springBoot {
buildInfo()
executable = true
mainClass = "com.shunya.App"
}
исполняемый = верно
Это необходимо для того, чтобы сделать полностью исполняемый jar в системе Unix (Centos и Ubuntu)
Создать файл .conf
Если вы хотите настроить пользовательские свойства JVM или аргументы запуска приложения Spring Boot, то вы можете создать файл .conf с тем же именем, что и имя приложения Spring Boot, и разместить его параллельно файлу jar.
Учитывая, что your-app.jar - это имя вашего приложения Spring Boot, вы можете создать следующий файл.
JAVA_OPTS="-Xms64m -Xmx64m"
RUN_ARGS=--spring.profiles.active=prod
LOG_FOLDER=/custom/log/folder
Эта конфигурация установит 64 МБ оперативной памяти для приложения Spring Boot и активирует профиль prod.
Создать нового пользователя в Linux
Для повышения безопасности мы должны создать конкретного пользователя для запуска приложения Spring Boot в качестве службы.
Создать нового пользователя
sudo useradd -s /sbin/nologin springboot
В Ubuntu / Debian измените приведенную выше команду следующим образом:
sudo useradd -s /usr/sbin/nologin springboot
Установка пароля
sudo passwd springboot
Сделать Springboot владельцем исполняемого файла
chown springboot:springboot your-app.jar
Предотвратить изменение файла JAR
chmod 500 your-app.jar
Это настроит права доступа jar так, что он не может быть записан и может быть прочитан или выполнен только его владельцем springboot.
При желании вы можете сделать свой JAR-файл неизменным, используя команду change attribute (chattr).
sudo chattr +i your-app.jar
Соответствующие разрешения должны быть установлены и для соответствующего файла .conf. .conf требует только доступа на чтение (Octal 400) вместо доступа на чтение + выполнение (Octal 500)
chmod 400 your-app.conf
Создать сервис 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
Автоматический перезапуск процесса, если он убит ОС
Добавьте следующие два атрибута (Restart и RestartSec), чтобы автоматически перезапустить процесс при сбое.
/etc/systemd/system/your-app.service
[Service]
User=springboot
ExecStart=/var/myapp/your-app.jar
SuccessExitStatus=143
Restart=always
RestartSec=30
Это изменение приведет к перезагрузке приложения Spring Boot в случае сбоя с задержкой в 30 секунд. Если вы остановите службу с помощью команды systemctl, перезапуск не произойдет.
Расписание обслуживания при запуске системы
Чтобы пометить приложение для автоматического запуска при загрузке системы, используйте следующую команду:
Включить приложение Spring Boot при запуске системы
sudo systemctl enable your-app.service
Начать Остановить Сервис
systemctl может использоваться в Ubuntu 16.04 LTS и 18.04 LTS для запуска и остановки процесса.
Начать процесс
sudo systemctl start your-app
Остановить процесс
sudo systemctl stop your-app
Ссылки
https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html