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

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

我正在尝试设置一个 Ubuntu(12.04 LTS)upstart 脚本来管理 Trac 的内置 Web 服务器作为 nginx 的上游服务器。

这是我的初始化脚本/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 start/killed,进程 748”。upstart 日志/var/log/upstart/tracd.log不包含任何信息,syslog 也不包含任何信息。

如果我只是sudo tracd -d -p 8000 -b 192.168.1.2 --user=www-data --group=www-data /trac/proj在命令行上复制并粘贴,服务器就可以正常运行。

这是我尝试过的:

  • 谷歌搜索——很费劲。阅读 Ubuntu 的 upstart cookbook 页面和所有 Trac 指南:Trac安装TracNginxRecipeTracStandalone
  • 使用expect forkexpect daemon或者expect完全省略该行。
  • 在执行行周围使用script/块。end script
  • 使用setuid www-data/ setgid www-data
  • 使用sudo -u www-data甚至sudo su www-data -c "..."
  • 创建了一个 www-data 可写目录 /var/run/trac/并指定--pidfile=/var/run/trac/tracd.pid
  • 检查输出以sudo -u www-data env查看命令行中是否有任何特殊环境变量,因为从 shell 执行时运行良好。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
  • 使用 检查僵尸 tracd 守护进程ps -aux | grep trac

我还没尝试过的事情:

  • 放弃 upstart,采用 init.d 脚本。

编辑:已修复

删除该--daemonize标志似乎已经解决了问题。谢谢 Mike!这是我的工作 upstart 脚本:

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 中设置运行用户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 你不能以守护进程的形式运行某些东西,它需要像在前台运行一样

相关内容