我代表我的pipe理员发布了一个问题。 基本上,他想要设置Django应用程序(在Django 1.3上制作,但是将转移到Django 1.4,所以这两个应用程序中的哪一个应该工作,我希望)在安装在Amazon EC2上的nginx上的WSGI上。
当使用Django的开发服务器(例如使用./manage.py runserver 0.0.0.0:8080 )时,应用程序运行正常,Apache也正常工作。 唯一的问题是nginx,而且看起来nginx / WSGI或Djangoconfiguration还有其他问题。
他的描述如下:
服务器已根据许多教程进行了configuration,但不幸的是,Nginx和uWSGI仍然不能与应用程序一起工作。
ProjectName.py:
import os, sys, wsgi os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ProjectName.settings") from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
我通过命令运行uWSGI:
uwsgi -x /etc/uwsgi/apps-enabled/projectname.xml
XML文件:
<uwsgi> <chdir>/home/projectname</chdir> <pythonpath>/usr/local/lib/python2.7</pythonpath> <socket>127.0.0.1:8001</socket> <daemonize>/var/log/uwsgi/proJectname.log</daemonize> <processes>1</processes> <uid>33</uid> <gid>33</gid> <enable-threads/> <master/> <vacuum/> <harakiri>120</harakiri> <max-requests>5000</max-requests> <vhost/> </uwsgi>
在来自uWSGI的日志中:
*** no app loaded. going in full dynamic mode ***
在Nginx的日志中:
XXX.com [pid: XXX|app: -1|req: -1/1] XXX.XXX.XXX.XXX () {48 vars in 989 bytes} [Date] GET / => generated 46 bytes in 77 m secs (HTTP/1.1 500) 2 headers in 63 bytes (0 switches on core 0) added /usr/lib/python2.7/ to pythonpath. Traceback (most recent call last): File "./ProjectName.py", line 26, in <module> from django.core.wsgi import get_wsgi_application ImportError: No module named wsgi unable to load app SCRIPT_NAME=XXX.com|
使用的示例教程:
你有什么想法做错了什么,或者应该做些什么使Django在EC2的nginx上的uWSGI上工作?
告诉他从简单的configuration开始,然后调整它们:
http://projects.unbit.it/uwsgi/wiki/Quickstart
只要简单http模式下的应用程序可以工作,他就可以开始与nginx进行整合。
之后,他可以开始真正的调整添加过程和监视function。
从我所看到的,看起来他是以dynamic模式开始的,这是一个非常复杂的话题(99%的时间不需要)
添加一些更多的configuration行到你的uwsgi.xml,这里是我的一个项目的yaml版本:
uwsgi: uid: 33 gid: 33 socket: /webapps/<project_name>/run/uwsgi-socket logto: /webapps/<project_name>/logs/uwsgi.log pidfile: /webapps/<project_name>/run/uwsgi.pid touch-reload: /webapps/<project_name>/run/reload enable-threads: true single-interpreter: true thread: 3 master: true chdir: /webapps/<project_name> env: DJANGO_SETTINGS_MODULE=<project_name>.settings.production module: <project_name>.wsgi virtualenv: /webapps/.virtualenvs/<project_name>
看起来你错过了env和模块部分。 你也可以考虑一个virtualenv。