จำเป็นต้องใช้การกำหนดค่าต่อไปนี้ในไฟล์ build.gradle ในโครงการ Spring Boot
build.gradle
jar {
baseName = 'your-app'
version = version
}
springBoot {
buildInfo()
executable = true
mainClass = "com.shunya.App"
}
executable = true
สิ่งนี้จำเป็นสำหรับการทำให้ 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
การกำหนดค่านี้จะตั้งค่า RAM 64 MB สำหรับแอปพลิเคชัน 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) แทนการเข้าถึง read + execute (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
รีสตาร์ทกระบวนการโดยอัตโนมัติหากระบบปฏิบัติการนั้นถูกฆ่า
ผนวกสองคุณลักษณะด้านล่าง (เริ่มต้นใหม่และเริ่มใหม่อีกครั้ง) เพื่อเริ่มกระบวนการใหม่โดยอัตโนมัติเมื่อเกิดความล้มเหลว
/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