Скрипт Ubuntu для запуска tracd зависает при запуске / остановке

Я пытаюсь настроить скрипт запуска Ubuntu (12.04 LTS) для управления встроенным веб-сервером Trac в качестве вышестоящего сервера для nginx.

Вот мой скрипт инициализации /etc/init/tracd.conf, Я использовал http://codebyko.se/2010/11/26/tracd-with-upstart-on-ubuntu/ (первый и единственный результат Google для "upstart" и "tracd") в качестве отправной точки:

description "Tracd Web Server"

start on startup
stop on shutdown

expect daemon

exec sudo tracd -d -p 8000 -b 192.168.1.2 --user=www-data --group=www-data /trac/proj

Всякий раз, когда я прохожу это через sudo service tracd start или же sudo service tracd stop, он просто зависает и никогда не возвращается. sudo service tracd status возвращает "tracd start/kill, process 748". Выскочка журнала /var/log/upstart/tracd.log не содержит информации и системного журнала.

Если я просто скопировать и вставить sudo tracd -d -p 8000 -b 192.168.1.2 --user=www-data --group=www-data /trac/proj в командной строке сервер работает нормально.

Вот что я попробовал:

  • Погуглил - тяжело. Прочитайте справочную страницу поваренной книги Ubuntu и все руководства по Trac: TracInstall, TracNginxRecipe, TracStandalone
  • использование expect fork, expect daemon или опустить expect линия целиком
  • использование script/end script блок вокруг линии exec.
  • использование setuid www-data/setgid www-data,
  • использование sudo -u www-data и даже sudo su www-data -c "..."
  • Создан каталог для записи данных www /var/run/trac/ и указано --pidfile=/var/run/trac/tracd.pid,
  • Проверьте вывод из sudo -u www-data env чтобы увидеть, есть ли какие-либо специальные переменные окружения из командной строки, потому что он работает нормально, когда выполняется из оболочки. Trac, похоже, не полагается на какие-либо переменные окружения.
  • Использовал гораздо более многословную, но идентичную команду: sudo /usr/bin/python /usr/local/bin/tracd --daemonize --port=8000 --hostname=192.168.1.2 --user=www-data --group=www-data /trac/proj
  • Проверено на наличие демонов зомби-траков с ps -aux | grep trac,

Вещи, которые я не пробовал:

  • Откажитесь от выскочки для сценария init.d.

РЕДАКТИРОВАТЬ: Исправлено

Удаление --daemonize флаг, кажется, исправил это. Спасибо, Майк! Вот мой рабочий скрипт выскочки:

description "Trac Web Server"

start on startup
stop on shutdown

setuid www-data
setgid www-data

exec tracd -p 8000 -b 192.168.1.2 /trac/proj

1 ответ

Решение

Я не думаю, что вам нужно sudo, так как tracd устанавливает пользователя / группу

description "Tracd Web Server"

start on startup
stop on shutdown


expect daemon

exec tracd -p 8000 -b 192.168.1.2 --user=www-data --group=www-data /trac/proj

Если это не сработает, попробуйте настроить работающего пользователя в upstart через setuid а также setgid

description "Tracd Web Server"

start on startup
stop on shutdown

setuid www-data
setgid www-data

expect daemon

exec tracd -p 8000 -b 192.168.1.2 /trac/proj

РЕДАКТИРОВАТЬ

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

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