2012-04-25 40 views
0

如果我以用戶身份登錄www-data並運行此命令時,它的工作原理:當我從root運行它,以下列方式Django的FastCGI的命令

python /var/www/ssrc/jvwf/manage.py runfcgi --settings=spzr.settings-dev \\ 
method=prefork socket=/tmp/www/spzr.socket pidfile=/tmp/www/spzr.pid \\ 
minspare=4 maxspare=8 maxchildren=128 maxrequests=65535 daemonize=false 

但是(爲www-data運行):

exec /bin/su -c "python /var/www/ssrc/jvwf/manage.py runfcgi \\ 
--settings=spzr.settings-dev --pythonpath=/var/www/ssrc/jvwf \\ 
method=prefork socket=/tmp/www/spzr.socket pidfile=/tmp/www/spzr.pid \\ 
minspare=4 maxspare=8 maxchildren=128 maxrequests=65535 \\ 
daemonize=false" - www-data 

它不起作用。

實際上第二個命令就是:

exec /bin/su -c "FIRST_COMMAND" - www-data 

的問題是,它無法正確導入從通過設置文件中導入的中間設置文件。我想這是一個ENV(或路徑)問題,但我不知道如何解決它。

(以上\\只是爲了顯示行分隔符,我使用的是在現實中一個套)

回答

1

一個區別使用蘇當與將是 - 自動選擇它的CDS的主目錄。嘗試在您的命令前添加一個cd:

exec /bin/su -c "cd /var/www/ssrc/...; python ..." - www-data 

否則:您會得到哪些錯誤消息?

+0

它工作。我在upstart腳本中進一步使用了'chdir/var/www/ssrc/jvwf',但我相信這是爲'root'完成的,而不是'www-data'。謝謝! – 2012-04-26 08:54:24