Мне записали веб-сервис в 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.
Какие-либо идеи?
Если это ваш полный сценарий, то у него две простые проблемы. 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
Ссылки:
Вам нужно определить переменную окружения, используя 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.