2011-05-14 2 views
11

"SBT 실행"을 사용하여 정상적으로 실행되는 SBT 스칼라 응용 프로그램이 있습니다. 그러나 이것은 콘솔을 잠그고 차라리 서비스/데몬으로 시작하여 콘솔을 사용할 수 있도록하고 init.d에 추가하여 시작할 때 내 응용 프로그램이 자동으로 시작되도록합니다 .SBT를 데몬으로 실행

나는 이것을 할 수있는 방법을 찾을 수 없습니다. "sbt run &"을 실행하면 백그라운드에서 앱이 중단 된 것처럼 보입니다.

아무에게도이를 수행하는 방법을 알고 있습니까?

답변

8

우리는 init.d를 모든 시간에 SBT와 테스트/데모 애플리케이션을 실행 :

#!/bin/sh 
# test lift web app 

case "$1" in 
'start') 
    cd /home/demouser/wa/HTML5DemoLift231/HTML5demo/ 
    sbt jetty run 
    ;; 
'stop') 
    cd /home/demouser/wa/HTML5DemoLift231/HTML5demo/ 
    sbt jetty stop 
    ;; 
*) 
    echo "Usage: $0 { start | stop }" 
    ;; 
esac 
exit 0 

이 그냥 작동 - 우리는 문제는 없었습니다. 웹 앱이 아닌 경우에는 다를 수 있습니다.

+0

고마워. 이것을 정답으로 변경하십시오. 이렇게하면 패키지 단계가 생략되어보다 빠르게 배포 할 수 있습니다. – devinfoley

+5

시작되지만 즉시 종료됩니다. 제 경우에는 sbt 컨테이너를 사용하고 있습니다 : start. 어떤 아이디어? –

+1

여기와 같습니다. 시작되지만 즉시 종료됩니다. 어떤 아이디어? – Jack

5

GNU Screen을 사용하면 백그라운드에서 유지할 수 있습니다. 어쨌든 나는 그것을 할 좋은 이유를 생각할 수 없다. 애플리케이션을 패키징하고 생성 된 바이너리를 백그라운드에서 실행하는 것이 더 좋지 않을까요?

+2

좋은 이유는 디자이너가 html 파일을 업로드 할 수 있고 서비스를 다시 시작할 필요가없는 원격 개발 시스템을 갖추어야한다는 것입니다. 패키지화 된 앱에서이를 수행하는 방법을 모르겠습니다. –

+0

나는 그것에 대해 생각하지 않았다. 좋은. –

9

sbt-assembly 또는 sbt-onejar을 사용하여 응용 프로그램을 "뚱뚱한"병에 넣을 수도 있습니다.

이것은 실행 가능한 jar로 만들고 java -jar jarname.jar을 통해 쉽게 실행할 수 있습니다.

+0

패키지 단계를 건너 뛸 수 있도록 SBT에이 패키지가 빌드되기를 기대했지만 이것들을 살펴 보겠습니다. – devinfoley

+1

조립 - sbt는 나를 위해 매력처럼 일했다, thanks – Jack

1

sbt runProd 을 입력하고 Ctrl + D를 누르십시오. 프로세스가 데몬 프로세스로 실행됩니다.

관련 문제