Назад | Перейти на главную страницу

sudo start my-project не работает

Я использую следующий сценарий в /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, поскольку это было ненужным.