我想在 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