Скрипт 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.. выскочка, вы не можете запустить что-либо как демон, он должен действовать так, как будто он работает на переднем плане