Я использую следующий сценарий в /etc/init/my-project.conf
на моем экземпляре AWS.
description "start and stop the go program 'my-project'"
start on filesystem or runlevel [2345]
stop on runlevel [!2345]
env USER='ec2-user'
env APP_DIR='/home/ec2-user/go/src/bitbucket.com/xxx/my-project/'
env APP_EXEC='my-project'
exec start-stop-daemon —start —chuid ${USER} —chdir ${APP_DIR} —exec ${APP_DIR}${APP_EXEC}
service my-project start
команда дает unrecognized service
ошибка. sudo start my-project
запускает процесс, который не является моим проектом. Когда я работаю sudo status my-project
команда я добираюсь my-project stop/waiting
. Я не мог найти то, что я делаю неправильно.
В пути /home/ec2-user/go/src/bitbucket.com/xxx/my-project/
существует названный исполняемый файл my-project
. Так в основном /home/ec2-user/go/src/bitbucket.com/xxx/my-project/my-project
выполняет исполняемый файл.
Прежде всего, команда "service" предназначена для "сценариев инициализации System V", находящихся в /etc/init.d, а не для конфигураций Upstart в / etc / init. Для Upstart вы хотите использовать "initctl". Эквивалент
$ service --status-all
для Upstart:
$ initctl list
Используя пример конфигурации выскочки, найденный на https://gist.github.com/c4milo/940909 в качестве руководства, я смог получить конфигурацию Upstart для запуска, используя следующее:
#description "start and stop the go program 'my-project'"
start on filesystem or runlevel [2345]
stop on runlevel [!2345]
script
USER='ec2-user'
APP_DIR='/home/ec2-user/go/src/bitbucket.com/xxx/my-project/'
APP_EXEC='my-project'
su - ${USER} -c "exec ${APP_DIR}${APP_EXEC}"
end script
Если ваши изменения в /etc/init/my-project.conf не вступают в силу, вы можете попытаться принудительно перезагрузить его с помощью:
$ initctl reload-configuration
Мне также удалось удалить использование "env" "поскольку в этом не было необходимости.