Spring Boot projelerinde build.gradle dosyasında aşağıdaki yapılandırma gereklidir.
build.gradle
jar {
baseName = 'your-app'
version = version
}
springBoot {
buildInfo()
executable = true
mainClass = "com.shunya.App"
}
yürütülebilir = doğru
Unix sisteminde (Centos ve Ubuntu) tamamen çalıştırılabilir bir kavanoz yapmak için bu gereklidir
Bir .conf dosyası oluşturun
Özel JVM özelliklerini veya Spring Boot uygulaması çalıştırma bağımsız değişkenlerini yapılandırmak istiyorsanız, Spring Boot uygulama adıyla aynı ada sahip bir .conf dosyası oluşturabilir ve jar dosyasına paralel olarak yerleştirebilirsiniz.
App.jar dosyanızın Spring Boot uygulamanızın adı olduğu göz önüne alındığında, aşağıdaki dosyayı oluşturabilirsiniz.
JAVA_OPTS="-Xms64m -Xmx64m"
RUN_ARGS=--spring.profiles.active=prod
LOG_FOLDER=/custom/log/folder
Bu yapılandırma Spring Boot uygulaması için 64 MB ram ayarlayacak ve prod profilini etkinleştirecektir.
Linux'ta yeni bir kullanıcı oluşturun
Gelişmiş güvenlik için, Spring Boot uygulamasını bir hizmet olarak çalıştırmak üzere belirli bir kullanıcı oluşturmalıyız.
Yeni bir kullanıcı oluştur
sudo useradd -s /sbin/nologin springboot
Ubuntu / Debian'da yukarıdaki komutu aşağıdaki gibi değiştirin:
sudo useradd -s /usr/sbin/nologin springboot
Şifreyi belirle
sudo passwd springboot
Yürütülebilir dosyanın springboot sahibi yap
chown springboot:springboot your-app.jar
Jar dosyasının değiştirilmesini önle
chmod 500 your-app.jar
Bu, kavanozun izinlerini yazılamayacak ve yalnızca sahibinin yaylı önyüklemesi tarafından okunabilecek veya yürütülecek şekilde yapılandırır.
Değiştir özniteliği (chattr) komutunu kullanarak jar dosyanızı isteğe bağlı olarak değiştirilemez hale getirebilirsiniz.
sudo chattr +i your-app.jar
İlgili .conf dosyası için de uygun izinler ayarlanmalıdır. .conf, read + execute (Octal 500) erişimi yerine yalnızca okuma erişimi (Octal 400) gerektirir
chmod 400 your-app.conf
Systemd hizmeti oluştur
/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
İşletim sistemi tarafından öldürülürse işlemi otomatik olarak yeniden başlat
Hata durumunda işlemi otomatik olarak yeniden başlatmak için aşağıdaki iki özelliği (Restart ve RestartSec) ekleyin.
/etc/systemd/system/your-app.service
[Service]
User=springboot
ExecStart=/var/myapp/your-app.jar
SuccessExitStatus=143
Restart=always
RestartSec=30
Değişiklik 30 saniyelik bir gecikmeyle arıza durumunda Spring Boot uygulamasını yeniden başlatır. Hizmeti systemctl komutunu kullanarak durdurursanız, yeniden başlatma gerçekleşmez.
Sistem başlangıcında zamanlama hizmeti
Uygulamayı sistem önyüklemesinde otomatik olarak başlayacak şekilde işaretlemek için aşağıdaki komutu kullanın:
Sistem başlangıcında Spring Boot uygulamasını etkinleştir
sudo systemctl enable your-app.service
Hizmeti Durdurma
systemctl, işlemi başlatmak ve durdurmak için Ubuntu 16.04 LTS ve 18.04 LTS'de kullanılabilir.
İşlemi başlat
sudo systemctl start your-app
İşlemi durdurun
sudo systemctl stop your-app
Referanslar
https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html