Nginx, django, gunicorn, ubuntu 14.04 (13: Permission denied) 同时连接到上游
Posted
技术标签:
【中文标题】Nginx, django, gunicorn, ubuntu 14.04 (13: Permission denied) 同时连接到上游【英文标题】:Nginx, django, gunicorn, ubuntu 14.04 (13: Permission denied) while connecting to upstream 【发布时间】:2016-08-14 21:14:33 【问题描述】:我正在使用nginx
和gunicorn
在我的django
项目中工作,正如这里所说:
https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-14-04
我的网站在本地工作,但是当我启动 nginx
和 gunicorn
服务器时,我有
502 网关错误。
操作系统是UBUNTU 14.04
我正在尝试使我的项目正常运行,并以 root 身份重新安装所有内容(我知道这很糟糕)——同样的错误。
这是我的“error.log”:
2016/04/20 20:15:10 [crit] 10119#0: *1 connect() to unix:/root/myproject/myproject.sock 失败(13:权限被拒绝) 连接上游时,客户端:46.164.23
当我运行命令“nginx
”时:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
我的 gunicorn.conf
description "Gunicorn application server handling myproject"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
setuid root
setgid www-data
chdir /root/myproject
exec myprojectenv/bin/gunicorn --workers 3 --bind unix:/root/myproject/myproject.sock myproject.wsgi:application
那是我的“/etc/nginx/sites-available/myproject”
server
listen 80;
server_name www.mysite.ru;
error_log /nginx_error.log;
location = /favicon.ico access_log off; log_not_found off;
location /static/
root /root/myproject;
location /
include proxy_params;
proxy_pass http://unix:/root/myproject/myproject.sock;
非常感谢您的帮助!!!
【问题讨论】:
【参考方案1】:根据您的 nginx 错误日志,我认为您有其他进程使用端口 80。
您必须弄清楚该进程是什么,并在不需要时终止它。或者使用其他端口。
【讨论】:
我希望这是真的,但是:# netstat -tulpn | grep :80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 15830/nginx 当我终止该进程时,我的网站完全停止工作。【参考方案2】:proxy_pass http://unix:/root/myproject/myproject.sock;
套接字位于超级用户的主文件夹中。包括您的 nginx 用户在内的所有其他用户几乎都无法访问。请把插座换到不同的位置。 /var/log/gunicorn/ 是个好地方。
我还看到你以 root 身份运行 gunicorn 吗?不建议。
setuid root
请在此处使用其他用户。
【讨论】:
以上是关于Nginx, django, gunicorn, ubuntu 14.04 (13: Permission denied) 同时连接到上游的主要内容,如果未能解决你的问题,请参考以下文章
Django-Gunicorn-Nginx 部署没有通过 Nginx
Django、Nginx、Gunicorn 和 AngularJS 应用程序结构
Nginx Django 和 Gunicorn。 Gunicorn 袜子文件丢失?