노드 서버를 시작하는 "sh" 파일이 있습니다.
달리면 잘되요
sh /var/www/init_node.sh
인스턴스가 다시 시작될 때마다 스크립트가 실행되기를 원합니다(따라서 노드 서버가 실행 중입니다).
다음과 같이 /etc/rc.local 파일에 스크립트를 추가했습니다.
sh /var/www/init_node.sh
exit 0
그러나 인스턴스를 다시 시작하면 nodejs 서버가 실행되지 않습니다. 우분투 64 인스턴스입니다.
나는 그것이 중요하지 않다고 생각하지만, 여기 내 sh 파일의 내용이 있습니다:
cd /var/www/myproject
eval `ssh-agent -s`
ssh-add -D
ssh-add ~/.ssh/id_rsa
git stash
git pull origin master --force
forever start express.js
또한
sh /etc/rc.local
잘 작동해요
어떤 아이디어가 있나요?
답변1
Amazon 인스턴스의 rc.local 파일과 비슷한 문제가 있었습니다. tty가 없으면 실행을 허용하지 않는 rc.local의 스크립트에 오류가 있는 것으로 나타났습니다.
그렇다면 유사한 오류가 발생하는지 어떻게 알 수 있습니까? cloud-init를 사용하여 스크립트를 실행하세요.
내 Amazon Linux 배포판의 경우 처음으로 /etc/init.d/cloud-init-user-scripts
.
이 줄을 변경하세요
/usr/bin/cloud-init-run-module once-per-instance user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure
"항상"
/usr/bin/cloud-init-run-module always user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure
그런 다음 디렉토리를 만듭니다 mkdir /var/lib/cloud/data/scripts
. 이제 시작 시 실행하려는 스크립트를 에 복사합니다 /var/lib/cloud/data/scripts
. 스크립트 실행 가능 비트가 설정되어 있는지 확인하세요.
이제 ..을 실행할 수 있습니다 . 그런 다음 오류를 sudo /etc/init.d/cloud-init-user-scripts start
확인할 수 있습니다 ./var/log/cloud-init.log