Konfigurasi berikut diperlukan dalam file build.gradle di proyek Boot Spring.
build.gradle
jar {
baseName = 'your-app'
version = version
}
springBoot {
buildInfo()
executable = true
mainClass = "com.shunya.App"
}
executable = true
Ini diperlukan untuk membuat jar yang sepenuhnya dapat dieksekusi pada sistem unix (Centos dan Ubuntu)
Buat file .conf
Jika Anda ingin mengkonfigurasi properti JVM kustom atau argumen menjalankan aplikasi Boot Spring, maka Anda dapat membuat file .conf dengan nama yang sama dengan nama aplikasi Boot Spring dan menempatkannya sejajar dengan file jar.
Mengingat app-jar Anda adalah nama aplikasi Boot Musim Semi Anda, maka Anda dapat membuat file berikut.
JAVA_OPTS="-Xms64m -Xmx64m"
RUN_ARGS=--spring.profiles.active=prod
LOG_FOLDER=/custom/log/folder
Konfigurasi ini akan mengatur ram 64 MB untuk aplikasi Spring Boot dan mengaktifkan profil prod.
Buat pengguna baru di linux
Untuk meningkatkan keamanan, kita harus membuat pengguna tertentu untuk menjalankan aplikasi Spring Boot sebagai layanan.
Buat pengguna baru
sudo useradd -s /sbin/nologin springboot
Di Ubuntu / Debian, modifikasi perintah di atas sebagai berikut:
sudo useradd -s /usr/sbin/nologin springboot
Setel kata sandi
sudo passwd springboot
Buat pemilik springboot dari file yang dapat dieksekusi
chown springboot:springboot your-app.jar
Cegah modifikasi file jar
chmod 500 your-app.jar
Ini akan mengonfigurasi izin jar sehingga tidak dapat ditulis dan hanya dapat dibaca atau dieksekusi oleh springboot pemiliknya.
Secara opsional Anda dapat membuat file jar Anda sebagai tidak dapat diubah menggunakan perintah ubah atribut (chattr).
sudo chattr +i your-app.jar
Izin yang tepat juga harus ditetapkan untuk file .conf yang sesuai. .conf membutuhkan akses hanya baca (Oktal 400) alih-alih akses baca + eksekusi (Oktal 500)
chmod 400 your-app.conf
Buat layanan 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
Mulai ulang proses secara otomatis jika terbunuh oleh OS
Tambahkan dua atribut di bawah ini (Restart dan RestartSec) untuk memulai kembali proses kegagalan secara otomatis.
/etc/systemd/system/your-app.service
[Service]
User=springboot
ExecStart=/var/myapp/your-app.jar
SuccessExitStatus=143
Restart=always
RestartSec=30
Perubahan ini akan membuat aplikasi Spring Boot restart jika terjadi kegagalan dengan penundaan 30 detik. Jika Anda menghentikan layanan menggunakan perintah systemctl maka restart tidak akan terjadi.
Jadwalkan layanan di startup sistem
Untuk menandai aplikasi agar mulai secara otomatis saat boot sistem, gunakan perintah berikut:
Aktifkan aplikasi Spring Boot saat startup sistem
sudo systemctl enable your-app.service
Mulai Stop Layanan
systemctl dapat digunakan di Ubuntu 16.04 LTS dan 18.04 LTS untuk memulai dan menghentikan proses.
Mulai prosesnya
sudo systemctl start your-app
Hentikan prosesnya
sudo systemctl stop your-app
Referensi
https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html