没有由Gunicorn创build的套接字导致nginx抛出502错误

在本教程之后 ,我能够在AWS EC2实例(运行Ubuntu 16.04)上的virtualenv中设置Django,Gunicorn和nginx,然后继续创build一个Upstart文件来“守护”整个事物。

激活virtualenv后,我检查了:

  1. Django的工作 – 我能够通过运行以下端口8000访问我的Django项目:

./manage.py runserver 0.0.0.0:8000

当访问mydomain.com:8000我被默认的Django页面所欢迎。

  1. Gunicorn工作&能够服务Django应用程序 – 我能够通过从我的项目的文件夹(用我的实际项目名称replace项目名称)运行此Django应用程序访问:

gunicorn --bind 0.0.0.0:8000 projectname.wsgi:application

当这次访问mydomain.com:8000时,欢迎页面再次迎来了我的欢迎页面,当将/admin追加到URL的末尾时,我能够看到login屏幕减去 CSS(因为Gunicorn没有意识到静态CSS文件,现在可以根据教程确定)。

从这里我开始创build下面的systemd文件(当masterfolder用来显示所有动作发生的文件夹时, myuser是我的系统用户( ubuntu ,因为这是一个Ubuntu实例):

 [Unit] Description=gunicorn daemon After=network.target [Service] User=myuser Group=www-data WorkingDirectory=/home/myuser/masterfolder ExecStart=/home/myuser/masterfolder/myvirtualenv/bin/gunicorn --workers 3 --bind unix:/home/myuser/masterfolder/projectname.sock$ [Install] WantedBy=multi-user.target` 

我遇到了两个问题:

  1. 没有任何套接字正在创build – 检查nginx日志文件之外,以及在 virtualenv(不完全确定为什么他们是相同的,顺便说一句)我看到了同样的错误:

2017/01/17 15:12:43 [crit] 12403#12403: *3 connect() to unix:/home/myuser/masterfolder/projectname.sock failed (2: No such file or directory) while connecting to upstream

现在请注意, masterfolder与我在运行startproject时创build的文件夹层次结构django-admin startproject

masterfolder/ ├── manage.py └── projectname ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py

当查看主文件夹时 ,确实没有.sock文件 ,不用介意名为projectname.sock

  1. 因此,尽pipenginx的工作,它会抛出一个502

这是我的etc/nginx/sites-availabe/projectname文件的样子:

 server { listen 80; server_name www.mydomain.com mydomain.com MYIPADDRESS; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /home/masterfolder/projectname; } location / { include proxy_params; proxy_pass http://unix:/home/myuser/mastefolder/projectname.sock; } } 

当然,它的符号链接是正确的,在每次更改之后,我都会尝试修复它,然后运行:

 sudo systemctl daemon-reload sudo systemctl start gunicorn sudo systemctl enable gunicorn sudo systemctl restart nginx 

我觉得我在这里理解了所有这些基础设施是如何协同工作的。 当然,随意指出我理解过程中的错误。

你有没有检查masterfolder文件masterfolder目录的权限?

权限应该是myuser:www-data

在你的nginxconfiguration文件中也有一个拼写错误。 希望这是一个错字:)