Django学习之路(七)生产环境中的使用
来源:互联网 发布:淘宝女装素材 编辑:程序博客网 时间:2024/04/28 21:14
基本思路
1,方案:Nginx+uwsgi
这个方案的大体思路就是:nginx作为服务器最前端,负责接收client的所有请求,统一管理。
静态请求由Nginx自己处理,非动态请求通过uwsgi传递给Django,由Django来进行处理,从而完成一次web请求。
2,通信请求:
the web client<->the web server(nginx)<->the socket<->uwsgi<->Django
配置Nginx
安装Nginx
Ubuntu上:sudo install nginxCentos上:yum install nginx
启动Nginx
service nginx start #启动service nginx stop #关闭service nginx restart #重启
在阿里云的centos中安装nginx时候发现无法启动,最后发现是http的端口被占用。这时候可以输入命令停止占用端口的服务:
systemctl stop httpdsystemctl disable httpd
按照正常道理来说这样就可以直接通过服务器的IP来访问网页。
实际操作中又发现,在阿里云部署的nginx无法出现正常的网页“Welcome to nginx”。具体原因是需要在阿里云的安全组中添加80端口的权限。
http://blog.csdn.net/sinat_35537471/article/details/72355362
http://blog.csdn.net/KascLiyuan/article/details/73438093
以上网页有具体解决方案。
配置uwsgi
安装uwsgi:
#假如说缺少libxml2文件:yum install libxml*#假如说缺少python-develyum install python-develpip install uwsgi
不建议使用yum或者apt-get。
连接uwsgi与Django
通过Django与uwsgi可以形成了一个简单的web服务器。想要完成这一个环节,需要在打开manage.py的同级目录,新建django_wsgi.py文件。
# coding: utf-8import osimport sys# 将系统的编码设置为UTF8reload(sys)sys.setdefaultencoding('utf8')os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")#mysite替换为自己的项目名#启动django的服务import djangodjango.setup()from django.core.handlers.wsgi import WSGIHandlerapplication = WSGIHandler()
在编写django_wsgi.py文件后执行:
uwsgi --http:8000 --chdir /path/to/yourblog --module django_wsgi
这样,就可以在浏览器的8000端口访问django程序。所有请求都是经过uwsgi传递给Django程序。
此时是无法访问js/css静态文件,这些文件都将交给Nginx处理。
实现Nginx与uwsgi的连接
一,编写uwsgi配置文件
在manage.py同级目录下新建xml文件:django_socket.xml:
<uwsgi> <socket>:8077</socket> <chdir>path/to/yoursite</chdir> <module>django_wsgi</module> <processes>4</processes> <!-- 进程数 --> <daemonize>uwsgi.log</daemonize></uwsgi>
以上开启4个进程来处理请求。占用端口8077。
二,Nginx配置
以上连接uwsgi与django,下面配置Nginx。
打开/etc/nginx/nginx.conf文件,添加以下内容:
server { listen 80; server_name 127.0.0.1 charset UTF-8; access_log /var/log/nginx/myweb_access.log; error_log /var/log/nginx/myweb_error.log; client_max_body_size 75M; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8077; uwsgi_read_timeout 2; } location /static { expires 30d; autoindex on; add_header Cache-Control private; alias path/to/yoursite/static/; } }
类似这样,nginx到底是如何与uwsgi产生关联,目前理解为这两行配置:
include uwsgi_params;uwsgi_pass 127.0.0.1:8077
uwsgi_pass需要与本文django_socket.xml配置文件中的端口一致。
结尾
重新启动nginx
service nginx reloadservice nginx restart
打开manage.py同级目录下的命令行:
uwsgi -x django_socket.xml
最后就可以在浏览器中通过服务器ip访问网页。
- Django学习之路(七)生产环境中的使用
- Django在生产环境中的部署
- Django在生产环境中的部署
- Django生产环境搭建
- django学习之环境搭建
- 【Django基础入门】生产环境搭建
- Django + Uwsgi + Nginx 实现生产环境部署
- 在ubuntu上搭建django生产环境
- Django+uWSGI+Nginx的生产环境部署
- Django学习随手记(七)
- Django学习笔记(七)
- Django 学习笔记(七)
- 图数据库Titan在生产环境中的使用全过程+分析
- 图数据库Titan在生产环境中的使用全过程+分析
- Django 网络框架使用(七)
- springboot学习总结系列(一):多环境下(开发环境,生产环境)使用yml 或 properties 配置文件
- django学习之pythonbrew部署开发环境
- django学习之路
- [Bluetooth]: android 平台上BLE连接流程之优化方案
- 【牛腩】FreeTextBox
- 用一个标准安卓APK包统计多个渠道,不用再打渠道包了!
- PAT:Spell It Right 结题报告
- 秒懂ajax轮询、long poll 、websocket
- Django学习之路(七)生产环境中的使用
- struts--动态访问国际化资源(国家/语言切换)
- HBase与MapReduce整合/HBase和Hive整合 nosql/HBase与 Sqoop整合
- Java集合-06之 Vector
- 最多能喝多少瓶啤酒呢?
- IDEA集成Git版本控制工具—分享项目到GitHub上和从GitHub克隆项目
- 【并查集入门专题1】A+B+D 三道模板题 hdu1232 hdu1233 poj2524【并查集模板】
- 【noip 2009】最优贸易
- Leetcode 655. Print Binary Tree 打印二叉树 解题报告