1) uwsgi+Django实现 http://django-china.cn/topic/101/
Django高版本中已经自动生成了wsgi.py文件,因此直接使用这个文件就可以了,不用自己去新建一个文件。
假如项目名称叫njbsv,则注意一定要是
--chdir xxx/xxx/njbsv --module njbsv.wsgi,
而不能是--chdir xxx/xxx/njbsv/njbsv --module wsgi,
因为系统会去设置的os.environ.setdefault("DJANGO_SETTINGS_MODULE", "njbsv.settings") 找njbsv.settings文件才能读取到Django项目的设置信息
uwsgi --http :8000 --chdir /home/range/njbsv --module njbsv.wsgi通过命令行的方式启动uwsgi服务器,这样所有的http请求都经过uwsgi服务其传递给Django项目程序去处理。
2) Nginx+uwsgi+Django实现 http://django-china.cn/topic/124/
① 配置uwsgi,这次(与之前命令行的方式不一样)是通过uwsgi配置文件(配置文件名为djangochina_socket.xml,在njbsv项目目录之下)的方式来设置服务。
1 <uwsgi>
2 <socket>:8077</socket>
3 <chdir>/home/range/njbsv</chdir>
4 <module>njbsv.wsgi</module>
5 <processes>2</processes> <!-- 进程数 -->
6 <daemonize>logs.uwsgi.log</daemonize>
7 </uwsgi>
②配置nignx,在/etc/nignx/conf.d/目录下集中了各种server配置文件(每一个server单独一个配置文件),而在/etc/nginx/nginx.conf文件中通过include /etc/nginx/conf.d/*.conf;来包含所有的配置文件。
在conf.d/下新建njbsv的server配置文件njbsv.conf,该server监听8000端口,所有请求通过socket(8077端口)方式交给uwsgi来处理
1 server {
2
3 listen 8000;
4 server_name njbsv;
5 access_log /home/range/njbsv/logs/access.log;
6 error_log /home/range/njbsv/logs/error.log;
7
8 #charset koi8-r;
9
10 #access_log logs/host.access.log main;
11
12 location / {
13 include uwsgi_params;
14 uwsgi_pass 127.0.0.1:8077;
15 }
16
17 }
③ 重启Nginx使配置信息生效
nginx -s reload
检查两个日志是否有异常。
④ 启动uswgi服务器(配置写在django_socket.xml文件中)
uwsgi -x django_socket.xml检查日志是否有异常
关闭uwsgi服务通过kill来操作(killall -9 uwsgi)
--------------------------------参考-----------------------------------
--------------------------------2015.11.14 update-----------------------------------
有段时间没有管服务器那边了,然后就默默的挂了,可能是之前服务器重启过,于是我重新输入了nohup uwsgi -x django_socket.xml来重启服务器端程序,但是依然不行,于是一步一步排除原因。
1) 首先在自己笔记本上运行服务器端程序,没问题。
2) 在服务器上直接跑python manage.py runserver 0.0.0.0:8000,没问题。
3) 不用nginx,而是直接用过uwsgi来运行,问题就出来了,会有import error的问题,就是“from django.core.wsgi import get_wsgi_application”这句话引起的,估计应该是uwsgi的问题,于是“ pip install --upgrade uwsgi”更新了uwsgi,这样之后再直接通过uwsgi来运行就没问题了。
4) 再将其运行到nginx上,没问题。
至此,问题得以解决。