Django在uWSGI上运行,NGiNX-INI方法不起作用
我正在从Django在uWSGI上运行,NGiNX-INI方法不起作用,django,nginx,uwsgi,Django,Nginx,Uwsgi,我正在从apache和mod_wsgi迁移到nginx和uwsgi。我正在运行Python 3.3和Django 1.7。我在虚拟环境中通过apt-get和uwsgi通过pip安装了nginx 当我使用此命令时,我已经设置了Django项目并开始工作(位于localhost:8000-请参阅下面的nginx配置): uwsgi--master--processs 4--socket:8001--wsgi文件wsgi.py 但是,当我在INI文件中放入相同的配置时,它不起作用,我得到了一个错误的网
apache
和mod_wsgi
迁移到nginx
和uwsgi
。我正在运行Python 3.3和Django 1.7。我在虚拟环境中通过apt-get
和uwsgi
通过pip
安装了nginx
当我使用此命令时,我已经设置了Django项目并开始工作(位于localhost:8000
-请参阅下面的nginx
配置):
uwsgi--master--processs 4--socket:8001--wsgi文件wsgi.py
但是,当我在INI文件中放入相同的配置时,它不起作用,我得到了一个错误的网关502:
502 Bad Gateway
nginx/1.1.19
以下是uwsgi
配置:
[uwsgi]
base = /path/to/project
wsgi-file = %(base)/proj/wsgi.py
logto = %(base)/proj/logs/uwsgi.log
chdir = %(base)
module = rebo.wsgi.local:application
home = /path/to/virtenvs/proj
master = true
processes = 4
socket = %(base)/proj/proj.sock
# I have tried ``socket = 8001`` as well
chmod-socket = 664
vacuum = true
upstream proj {
server unix:///path/to/project/proj/proj.sock;
# I have tried ``server 127.0.0.1:8001;`` as well
}
server {
listen 8000;
server_name 127.0.0.1;
root /path/to/project;
access_log /var/www/proj/access.log;
error_log /var/www/proj/error.log;
location /static/ {
alias /path/to/project/proj/static/;
expires 30d;
}
location /media/ {
alias /path/to/project/proj/media/;
expires 30d;
}
location / {
include uwsgi_params;
uwsgi_pass proj;
}
}
# WRONG!!!
socket = 8001
以及要启动的命令:
uwsgi--ini/path/to/uwsgi.ini
当我检查日志时,一切似乎都井然有序(注意
-这些是路径,输出没有显示错误):
我从各种来源收集了这篇文章,它似乎有正确的成分,但经过多次尝试和错误后,它仍然不起作用。我不确定我读的是哪篇文档导致我走上了这条错误的道路,但我只使用了INI套接字配置的编号:
[uwsgi]
base = /path/to/project
wsgi-file = %(base)/proj/wsgi.py
logto = %(base)/proj/logs/uwsgi.log
chdir = %(base)
module = rebo.wsgi.local:application
home = /path/to/virtenvs/proj
master = true
processes = 4
socket = %(base)/proj/proj.sock
# I have tried ``socket = 8001`` as well
chmod-socket = 664
vacuum = true
upstream proj {
server unix:///path/to/project/proj/proj.sock;
# I have tried ``server 127.0.0.1:8001;`` as well
}
server {
listen 8000;
server_name 127.0.0.1;
root /path/to/project;
access_log /var/www/proj/access.log;
error_log /var/www/proj/error.log;
location /static/ {
alias /path/to/project/proj/static/;
expires 30d;
}
location /media/ {
alias /path/to/project/proj/media/;
expires 30d;
}
location / {
include uwsgi_params;
uwsgi_pass proj;
}
}
# WRONG!!!
socket = 8001
应该是,就像手动命令行方法一样:
# CORRECT
socket = :8001
或者像大多数文档描述的那样:
# ALSO CORRECT, and probably better
socket = 127.0.0.1:8001
我想这是一次我可能确实有了正确的配置,但在匆忙中,我改变了它与其他变量(一个故障排除没有否),并随身携带,错误
感谢您的反馈和评论。希望这至少能帮助另外一个人;-) 看看这个:
module=rebo.wsgi.local
应该是module=rebo.wsgi:application
?这个模块实际上住在rebo.wsgi.local
所以你说它应该是rebo.wsgi.local:application
?哪个模块?是的,:应用程序必须在那里我很抱歉。。。我应该提到的,但我很早就试过了。我试过几件事,但并没有全部列出。这没用。