我试图build立一个Ubuntu(12.04 LTS)的upstart脚本来pipe理Trac的内置web服务器作为nginx的上游服务器。
这是我的init脚本/etc/init/tracd.conf 。 我使用http://codebyko.se/2010/11/26/tracd-with-upstart-on-ubuntu/ (首先也是唯一的谷歌结果为'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启动/死亡,进程748”。 upstart log /var/log/upstart/tracd.log包含任何信息,也不包含syslog。
如果我只是在命令行上复制并粘贴sudo tracd -d -p 8000 -b 192.168.1.2 --user=www-data --group=www-data /trac/proj ,服务器运行良好。
这是我试过的:
expect fork , expect daemon或完全省略expect行。 script / end script块。 setuid www-data / setgid www-data 。 sudo -u www-data甚至sudo su www-data -c "..." /var/run/trac/并指定--pidfile=/var/run/trac/tracd.pid 。 sudo -u www-data env输出,看看是否有来自命令行的特殊环境variables,因为从shell执行时它运行良好。 Trac似乎不依赖任何环境variables。 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检查了僵尸tracd守护进程 ps -aux | grep trac 。 我还没有尝试过的东西:
除去--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
我不认为你需要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
如果这不起作用,请尝试通过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标志.. upstart你不能运行一个守护进程,它需要像在前台运行