Eu tenho um arquivo “sh” que inicia um servidor de nó.
Funciona bem se eu correr
sh /var/www/init_node.sh
Quero que o script seja executado sempre que minha instância for reiniciada (para ter um servidor de nó instalado e funcionando).
Adicionei o script ao meu arquivo /etc/rc.local da seguinte forma:
sh /var/www/init_node.sh
exit 0
Porém, quando reinicio a instância, o servidor nodejs não está em execução. É uma instância do Ubuntu 64.
Acho que não é importante, mas aqui está o conteúdo do meu arquivo 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
Também
sh /etc/rc.local
funciona bem
Alguma ideia?
Responder1
Eu tive um problema semelhante com o arquivo rc.local em uma instância da Amazon. Acontece que tive um erro com o script em rc.local que não permitiria sua execução a menos que eu tivesse um tty.
Então, como você descobre se está recebendo um erro semelhante? Use cloud-init para executar seu script.
Para minha distribuição Amazon Linux, editei primeiro o arquivo /etc/init.d/cloud-init-user-scripts
.
Alterar esta linha
/usr/bin/cloud-init-run-module once-per-instance user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure
Para sempre"
/usr/bin/cloud-init-run-module always user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure
Em seguida, crie um diretório mkdir /var/lib/cloud/data/scripts
. Agora copie o script que deseja executar na inicialização para /var/lib/cloud/data/scripts
. Certifique-se de que o bit executável do seu script esteja definido.
Agora você deve ser capaz de executar sudo /etc/init.d/cloud-init-user-scripts start
. Então você pode verificar /var/log/cloud-init.log
se há erros.