Ubuntu的启动脚本Tracd在启动/停止时挂起

我试图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 startsudo 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 ,服务器运行良好。

这是我试过的:

  • Googlesearch – 很难。 阅读Ubuntu的新手烹饪书页面和所有的Trac指南: TracInstall , TracNginxRecipe , TracStandalone
  • 使用expect forkexpect daemon或完全省略expect行。
  • 在exec行周围使用script / end script块。
  • 使用setuid www-data / setgid www-data
  • 使用sudo -u www-data甚至sudo su www-data -c "..."
  • 创build一个万维网数据可写dir /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

我还没有尝试过的东西:

  • 放弃一个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 

我不认为你需要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 

如果这不起作用,请尝试通过setuidsetgid设置正在运行的用户

 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你不能运行一个守护进程,它需要像在前台运行