Spring Boot 应用程序即服务。系统V初始化

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:未找到单位 menu-core-prices-update.service。

答案1

既然您提到了 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

参考

相关内容