【发布时间】:2012-10-26 10:43:51
【问题描述】:
我想用 nginx 和 uwsgi 在 amazon ec2 (ubuntu) 上运行一个 django 站点。我已经按照here 的描述进行了基本设置。
当我从命令行(作为 ubuntu 用户)启动 uwsgi 时,一切正常,网站服务正常:
/home/ubuntu/uwsgi-1.3/uwsgi --home /home/ubuntu/apps/mysite-env/site/ --socket /tmp/uwsgi_mysite.sock --chmod-socket --module mysite_wsgi --pythonpath /home/ubuntu/apps/mysite-env/site/mysite/production -H /home/ubuntu/apps/mysite-env
但是,当我想通过启动脚本来妖魔化这个时,uwsgi 会报告以下错误:
2012/11/06 12:50:08 [error] 1773#0: *10 connect() to unix:///tmp/uwsgi_mysite.sock failed (111: Connection refused) while connecting to upstream, client: 91.66.145.99, server: *.mysite.com, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:///tmp/uwsgi_mysite.sock:", host: "mysite.com"
(这看起来像是权限问题)
我的启动脚本是这样的
# file: /etc/init/uwsgi_mysite.conf
description "uWSGI server"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
exec /home/ubuntu/uwsgi-1.3/uwsgi --home /home/ubuntu/apps/mysite-env/site/ --socket /tmp/uwsgi_mysite.sock --chmod-socket 777 --module mysite_wsgi --pythonpath /home/ubuntu/apps/mysite-env/site/mysite/production -H /home/ubuntu/apps/mysite-env
我尝试以 ubuntu 用户身份执行启动命令
exec sudo -u ubuntu "command..."
但无济于事。
我还尝试通过传入来更改套接字文件的权限
--chmod-socket 777
但这里也没有运气。我不知道如何解决这个问题,感谢任何意见!
【问题讨论】:
-
"我尝试以 ubuntu 用户 exec sudo -u ubuntu "command..." 的身份执行启动命令,但无济于事",嗯,您是否尝试在 uwsgi 调用中添加 --uid在启动脚本中?另外,如果您手动 chmod 777 套接字是否有效?
-
感谢您的建议,手动将套接字权限更改为 777 无效,但传入 --uid neigher ......还有其他建议吗? :) 干杯!
-
好吧,在这种情况下,我只是做
strace -p [PID THAT SHOULD ACCESS THE SOCKET (the HTTPD)]并阅读错误。但是我不明白,你说uwsgi记录2012/11/06 12:50:08 [error] 1773#0: *10 connect() to unix:///tmp/uwsgi_mysite.sock failed (111: Connection refused) while connecting to upstream, client: 91.66.145.99, server: *.mysite.com, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:///tmp/uwsgi_mysite.sock:", host: "mysite.com",你确定不是nginx记录的吗?
标签: django ubuntu permissions wsgi uwsgi