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