2017-03-27 6 views
0

스프링 부트 애플리케이션을 생성했습니다. 받는다는으로, 그리고우분투에서 init.d 서비스로 스프링 부트 애플리케이션 설치하기 14.04 LTS

/var/licence/licence-0.0.1-SNAPSHOT.jar 

sudo ln -s /var/licence/licence-0.0.1-SNAPSHOT.jar /etc/init.d/licence 

에 항아리를 이동하지만

[email protected]:/var/licence$ service licence start 
licence: unrecognized service 

를 입력 할 때 이러한 /etc/init.d/licence

lrwxrwxrwx 1 root root 46 Mar 27 18:17 licence -> /var/licence/licence-0.0.1-SNAPSHOT.jar 

의 속성은이 내 치어입니다 .xml :

.... 내가 /etc/init.d에 저장에게 유일한 스크립트 파일을 아시는 바와 같이

<build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <configuration> 
        <executable>true</executable> 
       </configuration>    
      </plugin> 
     </plugins> 
    </build> 
... 
+0

참조 가이드에서 설명한대로 실행 가능 병을 만들었습니까? –

+0

예, 참조 가이드에 설명 된대로 실행 가능한 jar 파일을 만들었습니다 –

+0

어떤 부트 버전을 사용하고 있으며 로그를 확인 했습니까? [여기] (https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html#deployment-initd-service)에서 언급했듯이? –

답변

1

sudo service license start

샘플 scriptdetail처럼 서비스를 시작/중지 할 수 있습니다 아래의 systemd 단위 파일. systemd는 대부분의 Linux 배포판에서 사용하는 init 시스템이며 무료 통합 관리, 로깅 기능, 다른 서비스의 종속성 관리 등을 위해 서비스 통합이 더 쉽고 (아래 참조) 더 강력합니다. 이 명령

[Unit] 
Description=License service by MyCorp 

[Service] 
ExecStart=/var/licence/licence-0.0.1-SNAPSHOT.jar 
User=myuser 
Restart=on-failure 

[Install] 
WantedBy=default.target 

다음 실행 : 서비스에 대한 예제에 대해서는

는, 먼저 같은 내용으로 디렉토리 /etc/systemd/systemlicense.service을 둘 필요가

#>systemctl daemon-reload 
#>systemctl enable license 
#>systemctl start license 

참고 SpringBoot이 할 수있는 그 java을 명시 적으로 호출 할 필요가 없도록 실행 가능한 JAR (즉, 쉘 스크립트로 시작하는 JAR)을 작성하십시오. 맞춤 설정 방법은 spring.io documentation을 참조하십시오.

+0

'java -jar' 부분은'jar'가 설명 ​​된 실행 파일 (스크립트)이어야하므로 필요하지 않습니다. [here] (https://docs.spring.io/spring-boot/docs/current/reference /html/deployment-install.html#deployment-systemd-service). –

+0

감사합니다. 답변을 업데이트했습니다. – Raffaele

3

. 서비스 시작/중지 방법을 설명하는 스크립트 파일을 넣어야합니다. 나는 /etc/init.d/license로 저장 샘플 스크립트를 작성하고 당신 대신 당신이 더 나은를 사용하려는 구식 /etc/init.dresource

#!/bin/sh 
SERVICE_NAME=License 
PATH_TO_JAR=/var/licence/licence-0.0.1-SNAPSHOT.jar 
PID_PATH_NAME=/tmp/License.pid 

case $1 in 
    start) 
     echo "Starting $SERVICE_NAME ..." 
     if [ ! -f $PID_PATH_NAME ]; then 
      nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null >> /dev/null & 
         echo $! > $PID_PATH_NAME 
      echo "$SERVICE_NAME started ..." 
     else 
      echo "$SERVICE_NAME is already running ..." 
     fi 
    ;; 
    stop) 
     if [ -f $PID_PATH_NAME ]; then 
      PID=$(cat $PID_PATH_NAME); 
      echo "$SERVICE_NAME stoping ..." 
      kill $PID; 
      echo "$SERVICE_NAME stopped ..." 
      rm $PID_PATH_NAME 
     else 
      echo "$SERVICE_NAME is not running ..." 
     fi 
    ;; 
    restart) 
     if [ -f $PID_PATH_NAME ]; then 
      PID=$(cat $PID_PATH_NAME); 
      echo "$SERVICE_NAME stopping ..."; 
      kill $PID; 
      echo "$SERVICE_NAME stopped ..."; 
      rm $PID_PATH_NAME 
      echo "$SERVICE_NAME starting ..." 
      nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null >> /dev/null & 
         echo $! > $PID_PATH_NAME 
      echo "$SERVICE_NAME started ..." 
     else 
      echo "$SERVICE_NAME is not running ..." 
     fi 
    ;; 
esac 
+0

실행 가능한 Spring Boot jar는 [here] (https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html#deployment-initd-service)에서 설명한 스크립트입니다. –

관련 문제