golang 애플리케이션의 시작 프로세스를 시작하는 방법은 무엇입니까?

golang 애플리케이션의 시작 프로세스를 시작하는 방법은 무엇입니까?

내 golang 응용 프로그램을 시작하기 위해 upstart를 사용하고 있습니다. 내 응용 프로그램 폴더 구조는 다음과 같습니다.

   Web-app/
         /app
             main.go

애플리케이션을 구축했습니다.

$cd /home/ec2-user/go/src/github.com/dineshappavoo/web-app/app/
$go build ./...

앱 폴더 아래에 앱 [실행 파일]을 앱으로 생성했습니다.

폴더 web-app.conf에 넣으세요 /etc/init/. web-app.conf의 내용은 다음과 같습니다.

#Web app upstart script
description "start and stop web app"

start on (net-device-up
and local-filesystems
and rullevel [2345])

stop on runlevel [016]

respawn
respawn limit 5 30

console output   

script
    chdir /home/ec2-user/go/src/github.com/dineshappavoo/web-app/app
    exec ./app
end script

sudo initctl list를 시도하면 프로세스가 중지/대기 중으로 나열됩니다. 나는 그 과정을 시작하려고 노력한다.

$sudo initctl start web-app

프로세스가 시작/실행 중임을 나타냅니다. 하지만 아직 시작되지 않았습니다.

/var/log/messages로그를 확인했습니다 . 보여주다,

init: web-app main process (18740) terminated with status 127

프로세스를 시작할 수 없습니다. chdir에 문제가 있는 것 같습니다. 지난 이틀 동안 다른 옵션을 시도했지만 성공하지 못했습니다. 나는 아직 누보 부자를 처음 접했습니다. 누구든지 이 문제를 해결하도록 도와줄 수 있나요?

답변1

종료 상태 127은 명령을 찾을 수 없음을 나타냅니다. 문제는 upstart를 사용하려고한다는 것입니다제전스크립트 블록 내부에 있으므로 upstart가 이를 명령으로 실행하려고 시도하지만 명령이 존재하지 않습니다. 스크립트 블록 위로 이동해야 합니다.

또한 스크립트 블록 내에서만 exec를 사용하므로 이를 제거하고 exec.

#Web app upstart script
description "start and stop web app"

start on (net-device-up
and local-filesystems
and rullevel [2345])

stop on runlevel [016]

respawn
respawn limit 5 30

console output   

chdir /home/ec2-user/go/src/github.com/dineshappavoo/web-app/app
exec ./app

관련 정보