Linux

Spring Boot 應用程序即服務。系統 V 初始化

  • July 25, 2018

我想在 Ubuntu 16.04 中將 Spring Boot 應用程序作為服務執行。我創建了一個指向可執行 JAR 文件的符號連結

$ sudo ln -s /home/canperis/core-price-update/menu-core-prices-update-0.0.1-SNAPSHOT.jar \
   /etc/init.d/menu-core-prices-update

$ sudo service menu-core-prices-update start

但我有這個錯誤:

無法啟動 menu-core-prices-update.service:未找到 Unit menu-core-prices-update.service。

既然你提到了 Ubuntu,大多數新版本現在都支持 systemd。要使用 systemd 設置類似的內容,您需要創建一個 systemd 單元文件,然後啟用它。

1. 軟體

首先決定你想在哪裡找到你的軟體。我會推薦/opt/core-price-update

像這樣的東西:

$ tree /opt/menu-core-prices-update/
/opt/menu-core-prices-update/
├── application.conf
└── menu-core-prices-update-0.0.1-SNAPSHOT.jar

0 directories, 2 files

2.systemd單元文件

接下來創建一個 systemd 單元文件,如下所示:

$ cat /etc/systemd/system/menu-core-prices-update.service
[Unit]
Description=Menu Core Prices Update Daemon
After=network.target

[Service]
Environment="APP_CP=/opt/menu-core-price-update"
Environment="JAVA_HOME=/usr/java/latest"
Environment="APP_NAME=com.myapps.MenuCorePriceUpdate"
Environment="APP_NAME_JPROP=appname=menu-core-price-update"
Environment="CONFIG_FILE=/opt/menu-core-price-update/application.conf"
Environment="LOGPATH=/var/log/menu-core-price-update"
ExecStartPre=/bin/mkdir -pm 0755 ${LOGPATH}
ExecStart=/bin/bash -c "$JAVA_HOME/bin/java -D${APP_NAME_JPROP} -cp ${APP_CP} ${APP_NAME}"
PIDFile=/run/core-price-update/menu-core-price-update%i.pid
Restart=on-abort
RuntimeDirectory=menu-core-price-update
RuntimeDirectoryMode=755
WorkingDirectory=/opt/menu-core-price-update

[Install]
WantedBy=multi-user.target

3.啟用服務

要使此服務在重新啟動之間執行:

$ sudo systemctl enable --now menu-core-prices-update

參考

引用自:https://unix.stackexchange.com/questions/457505