J'ai réussi à faire démarrer mon application de serveur web au démarrage en utilisant upstart. Voici le script de upstart :
# web app node upstart file at /etc/init/webapp.conf
description "web application"
start on started mongodb
stop on runlevel [06]
respawn
respawn limit 10 100
env NODE_ENV=production
pre-start script
ulimit -n 2048
end script
exec start-stop-daemon --start -c mainuser --exec /usr/bin/make -- -C /home/mainuser/app start-prod
Cela fonctionne parfaitement sur le serveur Ubuntu 10.04 LTS et j'en suis très heureux.
Cependant, j'ai un déploiement Shell Shell qui se connecte en utilisant SSH en tant que mainuser
(ce n'est pas un sudoer) et mettra ensuite à jour le répertoire de travail avec la dernière version du déploiement.
Le problème ici est que le service doit être redémarré pour que les applications chargent les nouveaux fichiers sources. Cependant, mainuser
obtient un...
mainuser@Saturn101:~$ stop webapp
-bash: stop: command not found
...en essayant de l'arrêter. Je dois exécuter sudo stop webapp
mais cet utilisateur ne peut pas le faire car il n'est pas un sudoer. Pour des raisons de sécurité, je ne veux pas non plus qu'il soit un sudoer, et je ne veux pas non plus insérer le mot de passe sudo.
Alors comment puis-je permettre mainuser
à exécuter stop webapp
y start webapp
?