Mam aplikację webserver, która uruchamia się przy starcie przy użyciu upstart. To jest skrypt wstępny:
# 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
Działa to bezbłędnie na serwerze Ubuntu 10.04 LTS i jestem z tego bardzo zadowolony.
Mam jednak skrypt powłoki wdrażania, który loguje się przy użyciu SSH as mainuser(nie jest to sudoer), a następnie zaktualizuje katalog roboczy do najnowszej wersji wdrożenia.
Problem polega na tym, że usługa musi zostać zrestartowana, aby aplikacje ładowały nowe pliki źródłowe. Jednak mainuserdostaje ...
mainuser@Saturn101:~$ stop webapp
-bash: stop: command not found
... kiedy próbujesz to zatrzymać. Muszę biec sudo stop webapp, ale ten użytkownik nie może tego zrobić, ponieważ nie jest sudoerem. Ze względów bezpieczeństwa nie chcę, aby był sudoer, a ponadto nie chcę wstawiać hasła sudo.
Jak mogę pozwolić i mainuseruruchomić ?stop webappstart webapp
/sbin/stop webapp, dostaję stop: Unable to connect to system bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory. Jak pozwoliłbym mainuserwykonać tylko to polecenie?