2014-09-19 4 views
1

Vagrant/Puppet (puphpet.com에서 생성)을 사용하여 Ubuntu 환경에 node.js 앱을 설정했습니다. 나는 완성 된 패키지를 누군가에게 보냈고, node.js 앱이 "변질 업"이 끝난 순간을 실행하고 싶다. (그래서 ssh와 명령을 연결하는 것을 방해 할 필요가 없다) .Ubuntu + Vagrant + Puphpet : 부팅시 node.js 앱을 자동으로 시작하는 방법은 무엇입니까?

puphpet 다운로드 패키지에는/puphpet/files/start-always 및/exec-always라는 폴더가 포함되어 있습니다. 그 파일을 사용할 수 있는지 궁금합니다.

또는 내가 실수하지 않은 경우 .Vagrantfile의 끝 부분에 우분투 실행 명령을 추가 할 수도 있습니다 (구문을 모르겠 음).

누구나이 경험이 있습니까?

답변

5

해결책 : 알아 냈어. 알아 두어야 할 사람 : run.sh (이 파일은 알파벳순으로로드되어 있으므로 두 개 이상 있으면 적절하게 파일 이름 지정)이라고하는 /puphpet/files/exec-once (또는 필요한 폴더/빈도수)에 파일을 만듭니다. 예제 파일 :이 경우

#!/bin/bash 
sudo npm install pm2 -g --unsafe-perm 2&>1 >/dev/null 
cd /var/www/app && sudo pm2 start app.js 

, 나는 "PM2"라는 NPM 모듈을 설치하고있어 (2&>1 >/dev/null는 콘솔 및 오류 메시지를 숨 깁니다). 이 모듈을 사용하면 node.js 앱을 서비스로 실행할 수 있습니다. 다음 번에 우리는 앱 디렉토리에 cd을 가지고 있고 거기에서 sudo pm2으로 앱을 시작합니다.

이 시점부터 node.js 앱이 자동으로 실행됩니다 (앱이 다운되거나 우분투가 다시 시작될 때 포함). 따라서이 명령을 두 번 이상 실행할 필요가 없습니다 (따라서 /exec-once 폴더). exec-always의 "초기 설정 이후의 부팅을 포함하여" "vagrant up"이 호출 될 때마다 실행됩니다).

pm2에는 폴더의 변경 사항을 볼 수있는 기능이 있으므로 개발중인 경우 node.js 앱이 자동으로 다시 시작됩니다. 자세한 내용은 pm2 설명서를 참조하거나 을 ssh에 입력하십시오.

+5

사실, 이것을 "puphpet/files/startup-always"로 옮겨야합니다. 'exec-once'와 'exec-always'는 첫 번째 'up'또는 각 'provision'중에 만 실행되도록 변경되었습니다. 따라서 만약 당신이 '방해물을 막아서 막연한 냄새를 맡는다면'nodejs 앱은 더 이상 작동하지 않을 것입니다. 이 문제를 문서화하는 문제 : https://github.com/puphpet/puphpet/issues/389 – nover