Почему я не могу соединиться с этим сервисом при запуске через Выскочку?

Мне записали веб-сервис в Golang, что я должен разжечь Выскочку использования.

Я могу выполнить сервисный исполняемый файл (названный словом) на порте 5555 из, это - каталог вручную как так:

PORT=5555 ./word

Затем curl -i http://127.0.0.1:5555/api/word возвращает корректный ответ (который является некоторым JSON).

Теперь, я должен выполнить этот сервис через Выскочку. Я записал этот сценарий (названный word.conf):

start on runlevel [2345]
stop on runlevel [!2345]

chdir /home/word

setgid word
setuid word

export PORT=5555
exec ./word

Я выполняю его через sudo start word

status word затем говорит мне, что услуга работает, и я не вижу ошибок в Новомодных журналах ошибок.

При попытке поразить сервис снова через curl -i http://127.0.0.1:5555/api/word Я получаю a curl: (7) couldn't connect to host ошибка.

Это кажется, что должна быть своего рода проблема полномочий, но я не могу точно определить его.

Я пытался удалить setgid и setuid и выполнение без удачи. Мне действительно звонили пользователю word.

Я нахожусь на Ubuntu 12.04.3.

Какие-либо идеи?

0
задан 9 October 2013 в 04:22

2 ответа

Если это ваш полный сценарий, то у него две простые проблемы. exec должно быть в script [...] end script, например:

script
    exec ./word
end script

, и переменная экспорта должна быть сначала объявлена ​​со строфой env:

env PORT=5555
export PORT

Таким образом, весь сценарий должно выглядеть так:

start on runlevel [2345]
stop on runlevel [!2345]

chdir /home/word

setgid word
setuid word

env PORT=5555
export PORT

script
    exec ./word
end script

Я бы также вместо того, чтобы позвонить ./word, сначала позвонил бы переводчику. Если это скрипт bash:

exec /usr/bin/env bash ./word

python:

exec /usr/bin/env python word

Ссылки:

0
ответ дан 9 October 2013 в 04:22

Вам нужно определить переменную окружения, используя env, и указать интерпретатор для вызова вашего скрипта:

start on runlevel [2345]
stop on runlevel [!2345]

chdir /home/word

setgid word
setuid word

env PORT=5555
export PORT

exec go run word

Возможно, вам не нужно «экспортировать PORT», если это единственный процесс, который его использует, и если интерпретатор определен в сценарии, вам, возможно, даже не потребуется включать его в exec.

0
ответ дан 9 October 2013 в 04:22

Другие вопросы по тегам:

Похожие вопросы: