Наступна конфігурація потрібна у файлі build.gradle у проектах Spring Boot.
build.gradle
jar {
baseName = 'your-app'
version = version
}
springBoot {
buildInfo()
executable = true
mainClass = "com.shunya.App"
}
виконуваний = вірно
Це потрібно, щоб зробити повністю виконувану банку в системі Unix (Centos і Ubuntu)
Створіть .conf файл
Якщо ви хочете налаштувати власні властивості JVM або аргументи запуску програми Spring Boot, ви можете створити .conf файл з тим самим іменем, що і назва програми Spring Boot, і розмістити його паралельно файлу jar.
Враховуючи, що ваш 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 файл незмінним за допомогою команди змінити атрибут (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