Eu tenho meu aplicativo de servidor web começando na inicialização usando upstart. Este é o script inicial:
# 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
Isso funciona perfeitamente no servidor Ubuntu 10.04 LTS e estou muito feliz com isso.
No entanto, tenho um script de shell de implantação que efetua login usando o SSH como mainuser
(isso não é um sudoer) e atualizará o diretório de trabalho para a versão de implantação mais recente.
O problema aqui é que o serviço precisa ser reiniciado para que os aplicativos carreguem os novos arquivos de origem. No entanto, mainuser
obtém um ...
mainuser@Saturn101:~$ stop webapp
-bash: stop: command not found
... ao tentar pará-lo. Eu tenho que executar sudo stop webapp
, mas esse usuário não pode fazer isso porque ele não é um sudoer. Por motivos de segurança, também não quero que ele seja um sudoer, além de não querer inserir a senha do sudo.
Então, como eu permito que mainuser
execute stop webapp
e start webapp
?