Ubuntu
用於 tracd 的 Ubuntu 新貴腳本在啟動/停止時掛起
我正在嘗試設置一個 Ubuntu (12.04 LTS) 新貴腳本來管理 Trac 的內置 Web 伺服器作為 nginx 的上游伺服器。
這是我的初始化腳本
/etc/init/tracd.conf
。我使用http://codebyko.se/2010/11/26/tracd-with-upstart-on-ubuntu/(“upstart”和“tracd”的第一個也是唯一一個Google結果)作為起點: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
or執行它時sudo service tracd stop
,它都會掛起並且永遠不會返回。sudo service tracd status
返回“跟踪啟動/終止,程序 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
,伺服器執行良好。這是我嘗試過的:
- Google搜尋 - 很難。通讀 Ubuntu 的新貴食譜頁面和所有 Trac 指南:TracInstall、TracNginxRecipe、TracStandalone
- 使用
expect fork
,expect daemon
或完全省略該expect
行。- 在 exec 行周圍使用
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
。我沒有嘗試過的事情:
- 放棄 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
如果這不起作用,請嘗試通過
setuid
and將正在執行的使用者設置為暴發戶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 你不能作為守護程序執行它需要像在前台執行一樣執行的東西