Linux
Spring Boot 應用程序即服務。系統 V 初始化
我想在 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
參考