Nginx+uwsgi+Django部署实战
2015-07-13 11:46
671 查看
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请求都经过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使配置信息生效
检查两个日志是否有异常。
④ 启动uswgi服务器(配置写在django_socket.xml文件中)
检查日志是否有异常
关闭uwsgi服务通过kill来操作(killall -9 uwsgi)
--------------------------------参考-----------------------------------
https://github.com/imelucifer/MyNote/blob/master/django/django%2Buwsgi%2Bnginx%2Bcentos%E9%83%A8%E7%BD%B2.md
--------------------------------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上,没问题。
至此,问题得以解决。
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)
--------------------------------参考-----------------------------------
https://github.com/imelucifer/MyNote/blob/master/django/django%2Buwsgi%2Bnginx%2Bcentos%E9%83%A8%E7%BD%B2.md
--------------------------------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上,没问题。
至此,问题得以解决。
相关文章推荐
- Linux下的nginx的安装
- Nginx平台构架
- Nginx平台构架 分类: Nginx 2015-07-13 10:55 205人阅读 评论(0) 收藏
- Nginx介绍
- Nginx介绍 分类: Nginx 服务器搭建 2015-07-13 10:50 19人阅读 评论(0) 收藏
- nginx----list
- Windows下安装Nginx和PHP
- linux 下配置 resin+nginx
- nginx limit_req限制ip在同一时间段的访问次数
- nginx中的try_files指令解释
- Nginx502,504和499错误解决方案
- Nginx Location配置总结
- nginx配置文件优化
- nginx内核参数优化
- nginx编译安装过程优化
- nginx 403 forbidden 解决方案之目录权限与文件权限
- 高并发下的 Nginx 优化
- [CentOS 7] 安装nginx
- Nginx负载均衡配置实例详解
- nginx URL 重写