在连接 Django + uWSGI + NGINX 时遇到了一些问题
如果我运行 Django 开发服务器,该页面就可以完美运行。
如果我运行:uwsgi --http 0.0.0.0:8134 --wsgi-file /test/test_project/wsgi.py 并从 localhost:8134 访问它,则该网站可以正常工作,只是图像未加载。
但是如果我访问 localhost:80 上的站点(大概是用于 nginx 处理),我会在 nginx error.log 中收到一个错误(以下是针对一个页面请求,所以不确定为什么它看起来像两个):
2018/07/15 11:55:34 [error] 20986#20986: *1 connect() to unix:/test
/test_project/test.sock failed (111: Connection refused) while
connecting to upstream, client: 127.0.0.1, server: 127.0.0.1,
request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/test/test_project
/test.sock:", host: "localhost"
2018/07/15 11:55:34 [error] 20986#20986: *1 connect() to unix:/test
/test_project/test.sock failed (111: Connection refused) while
connecting to upstream, client: 127.0.0.1, server: 127.0.0.1,
request: "GET /favicon.ico HTTP/1.1", upstream: "uwsgi://unix:
/test/test_project/test.sock:", host: "localhost", referrer:
"http://localhost/"
我已确保运行“sudo service nginx reload”和“sudo service nginx restart”。
主要问题:
1. 为什么我无法通过 localhost:80 访问网站。我猜这与套接字文件拒绝连接有关;套接字文件是空的,并且是使用“uwsgi --ini test_uwsgi.ini”创建的。我需要检查 inetd/xinetd 是否有问题?
次要问题(可能需要单独发帖):
1. 不确定配置是否有问题,或者我是否从一开始就正确运行了它。我是否必须运行“sudo service nginx start”并运行“uwsgi --http 0.0.0.0:8134 --wsgi-file /test/test_project/wsgi.py”?我猜现在需要,除非我以某种方式通过 nginx 自动执行 uwsgi 命令。2
. 每个脚本、图像和配置文件是否都应归 www-data 所有?
3. 我的静态图像文件夹是否可由 uwsgi 和 nginx 访问(基于以下配置)?如何确定?
4. 我遇到了无法传递 cookie 的问题,因此如果配置存在问题阻止了这种情况,请告诉我。
设置如下:
/test/test_project/test.sock 权限:
srwxrwxrwx 1 www-data www-data 0 Jul 14 22:51 test.sock
*Obviously I'll want to tighten this up, but for troubleshooting purposes permissions are open wide.
/测试/测试项目/test_uwsgi.ini:
[uwsgi]
chdir = /test/test_project
module = test.wsgi
pythonpath = /usr/bin/python2
# process-related settings
master = true
processes = 8
socket = /test/test_project/test.sock
chmod-socket = 666
max-requests = 50000
/测试/测试项目/uwsgi.py:
def application_backup(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
返回视图.索引(环境,start_response)
自定义nginx.conf:
upstream django {
server unix:/test/test_project/test.sock;
# Also tried unix:///test/test_project/test.sock;
}
server {
listen 80;
server_name 127.0.0.1;
charset utf-8;
client_max_body_size 1024M;
location /static {
alias /test/test_project/static;
}
location /media {
alias /test/test_project/media;
}
location / {
uwsgi_pass django;
include uwsgi_params;
}
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log warn;
}