Ich habe meine Webserver-Anwendung beim Booten mit upstart gestartet. Dies ist das Upstart-Skript:
# 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
Dies funktioniert einwandfrei auf Ubuntu Server 10.04 LTS und ich bin sehr glücklich darüber.
Ich habe jedoch ein Deployment-Shell-Skript, das sich mit SSH als anmeldet mainuser(dies ist kein Sudoer) und dann das Arbeitsverzeichnis auf die neueste Deployment-Version aktualisiert.
Das Problem hierbei ist, dass der Dienst neu gestartet werden muss, damit die Anwendungen die neuen Quelldateien laden. Allerdings mainuserbekommt ein ...
mainuser@Saturn101:~$ stop webapp
-bash: stop: command not found
... beim Versuch, es zu stoppen. Ich muss ausführen sudo stop webapp, aber dieser Benutzer kann dies nicht, da er kein Sudoer ist. Aus Sicherheitsgründen möchte ich, dass er auch kein Sudoer ist, und ich möchte das Sudo-Passwort nicht einfügen.
Also, wie erlaube ich mainuserzu rennen stop webappund start webapp?
/sbin/stop webappbekomme ich stop: Unable to connect to system bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory. Wie würde ich erlauben mainuser, nur diesen Befehl auszuführen?