Die folgende Konfiguration ist in der Datei build.gradle in Spring Boot-Projekten erforderlich.
build.gradle
jar {
baseName = 'your-app'
version = version
}
springBoot {
buildInfo()
executable = true
mainClass = "com.shunya.App"
}
ausführbar = wahr
Dies ist erforderlich, um ein vollständig ausführbares JAR auf einem Unix-System (Centos und Ubuntu) zu erstellen.
Erstellen Sie eine .conf-Datei
Wenn Sie benutzerdefinierte JVM-Eigenschaften oder Ausführungsargumente für Spring Boot-Anwendungen konfigurieren möchten, können Sie eine .conf-Datei mit demselben Namen wie der Name der Spring Boot-Anwendung erstellen und parallel zur JAR-Datei platzieren.
Wenn Sie bedenken, dass your-app.jar der Name Ihrer Spring Boot-Anwendung ist, können Sie die folgende Datei erstellen.
JAVA_OPTS="-Xms64m -Xmx64m"
RUN_ARGS=--spring.profiles.active=prod
LOG_FOLDER=/custom/log/folder
Diese Konfiguration legt 64 MB RAM für die Spring Boot-Anwendung fest und aktiviert das Produktprofil.
Erstellen Sie einen neuen Benutzer unter Linux
Zur Erhöhung der Sicherheit müssen wir einen bestimmten Benutzer erstellen, um die Spring Boot-Anwendung als Dienst auszuführen.
Erstellen Sie einen neuen Benutzer
sudo useradd -s /sbin/nologin springboot
Ändern Sie unter Ubuntu / Debian den obigen Befehl wie folgt:
sudo useradd -s /usr/sbin/nologin springboot
Passwort festlegen
sudo passwd springboot
Machen Sie Springboot zum Besitzer der ausführbaren Datei
chown springboot:springboot your-app.jar
Verhindern Sie die Änderung der JAR-Datei
chmod 500 your-app.jar
Dadurch werden die Berechtigungen von jar so konfiguriert, dass es nicht geschrieben und nur von seinem Besitzer springboot gelesen oder ausgeführt werden kann.
Sie können Ihre JAR-Datei optional mit dem Befehl change attribute (chattr) als unveränderlich festlegen.
sudo chattr +i your-app.jar
Entsprechende Berechtigungen sollten auch für die entsprechende .conf-Datei festgelegt werden. .conf erfordert nur Lesezugriff (Octal 400) anstelle von Lese- und Ausführungszugriff (Octal 500)
chmod 400 your-app.conf
Erstellen Sie den Systemd-Dienst
/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
Starten Sie den Prozess automatisch neu, wenn er vom Betriebssystem beendet wird
Fügen Sie die beiden folgenden Attribute (Restart und RestartSec) hinzu, um den Prozess bei einem Fehler automatisch neu zu starten.
/etc/systemd/system/your-app.service
[Service]
User=springboot
ExecStart=/var/myapp/your-app.jar
SuccessExitStatus=143
Restart=always
RestartSec=30
Durch die Änderung wird die Spring Boot-Anwendung im Fehlerfall mit einer Verzögerung von 30 Sekunden neu gestartet. Wenn Sie den Dienst mit dem Befehl systemctl beenden, wird kein Neustart durchgeführt.
Planen Sie den Service beim Systemstart
Verwenden Sie den folgenden Befehl, um die Anwendung so zu kennzeichnen, dass sie beim Systemstart automatisch gestartet wird:
Aktivieren Sie die Spring Boot-Anwendung beim Systemstart
sudo systemctl enable your-app.service
Starten Sie einen Stop the Service
systemctl kann in Ubuntu 16.04 LTS und 18.04 LTS verwendet werden, um den Prozess zu starten und zu stoppen.
Starten Sie den Prozess
sudo systemctl start your-app
Stoppen Sie den Prozess
sudo systemctl stop your-app
Verweise
https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html