【问题标题】:uwsgi: connection refused when running from startup scriptuwsgi:从启动脚本运行时连接被拒绝
【发布时间】: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


【解决方案1】:

我认为连接错误是由 /tmp/uwsgi_mysite.sock 文件的权限问题引起的。

尝试在您的新贵脚本中添加“--uid YOURNAME --gid www-data”和“--chmod-socket 666”选项,如下所示。并确保 YOURNAME 在 www-data 组(默认的 nginx 组)中。

exec /home/ubuntu/uwsgi-1.3/uwsgi --uid YOURNAME --gid www-data --home /home/ubuntu/apps/mysite-env/site/ --socket /tmp/uwsgi_mysite.sock --chmod-socket 666 --module mysite_wsgi --pythonpath /home/ubuntu/apps/mysite-env/site/mysite/production -H /home/ubuntu/apps/mysite-env

【讨论】:

  • 谢谢!你拯救了我的一天。重要的部分是用户应该是 www-data 组的一部分!
猜你喜欢
  • 2021-05-10
  • 2015-04-30
  • 1970-01-01
  • 2022-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-22
  • 2021-06-24
相关资源
最近更新 更多