【问题标题】:Django fastcgi commandDjango fastcgi 命令
【发布时间】:2012-05-06 13:39:20
【问题描述】:

如果我以用户 www-data 的身份登录并运行此命令,它就可以工作:

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

但是,当我从root 运行它时,以以下方式(以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(或 path)问题,但我不知道如何解决。

(上面的\\是用于显示目的的行分隔符,我在现实中使用一个行)

【问题讨论】:

    标签: python django bash nginx fastcgi


    【解决方案1】:

    一个区别是,当使用带有 - 选项的 su 时,它会自动 cd 到主目录。尝试在命令前添加 cd:

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

    否则:您会收到什么错误消息?

    【讨论】:

    • 成功了。 chdir /var/www/ssrc/jvwf 在 upstart 脚本中更进一步,但我相信它是为 root 而不是为 www-data 完成的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-07-02
    • 2016-03-04
    • 2020-01-24
    • 2013-11-03
    • 1970-01-01
    • 2013-03-20
    • 2012-07-06
    • 2012-04-19
    相关资源
    最近更新 更多