Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式。

uWSGI

uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。

要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。

  1. WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范。

  2. uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。

  3. 而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。

  4. uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型描述,它与WSGI相比是两样东西。

uwsgi性能非常高

uWSGI的主要特点如下

  1. 超快的性能

  2. 低内存占用(实测为apache2的mod_wsgi的一半左右)

  3. 多app管理(终于不用冥思苦想下个app用哪个端口比较好了-.-)

  4. 详尽的日志功能(可以用来分析app性能和瓶颈)

  5. 高度可定制(内存大小限制,服务一定次数后重启等)

Uwsgi 安装使用

pip install uwsgi
pip install https://projects.unbit.it/downloads/uwsgi-lts.tar.gz

基本测试

Create a file called test.py

# test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"] # python3
#return ["Hello World"] # python2

运行

uwsgi --http : --wsgi-file test.py

用uwsgi 启动django

uwsgi --http : --module Mysite.wsgi

编写uwsgi配置文件

[uwsgi]
http = :
#the local unix socket file than commnuincate to Nginx
socket = 127.0.0.1:
# the base directory (full path)
chdir = /home/user/Mysite
# Django's wsgi file
wsgi-file = Mysite/wsgi.py
# maximum number of worker processes
processes =
#thread numbers startched in each worker process
threads = #monitor uwsgi status
stats = 127.0.0.1:
# clear environment on exit
vacuum = true

启动

/usr/local/bin/uwsgi Mysite_uwsgi.ini

Nginx安装使用  

sudo apt-get install nginx
sudo /etc/init.d/nginx start # start nginx

为你的项目生成Nginx配置文件

1.先去nginx 目录下copy一个uwsgi_params 到你项目的目录下  源文件( /etc/nginx/uwsgi_params )

2.创建一个 mysite_nginx.conf  配置文件

# mysite_nginx.conf

# the upstream component nginx needs to connect to
upstream django {
# server unix:///path/to/your/mysite/mysite.sock; # for a file socket
server 127.0.0.1:; # for a web port socket (we'll use this first)
} # configuration of the server
server {
# the port your site will be served on
listen ;
# the domain name it will serve for
server_name .example.com; # substitute your machine's IP address or FQDN
charset utf-; # max upload size
client_max_body_size 75M; # adjust to taste # Django media
location /media {
alias /path/to/your/mysite/media; # your Django project's media files - amend as required
} location /static {
alias /path/to/your/mysite/static; # your Django project's static files - amend as required
} # Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /path/to/your/mysite/uwsgi_params; # the uwsgi_params file you installed
}
}

通过软连接形式把配置文件连接到nginx的目录里(或者直接cp过去)

sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/

3.setting.py 中配置所有静态文件的路径

STATIC_ROOT = os.path.join(BASE_DIR, "all_static_files/")

4.集合所有静态文件

python manage.py collectstatic

5.在 mysite_nginx.conf 中修改  location /static 路劲

6.重启服务

最新文章

  1. app里使用163邮箱发送邮件,被163认为是垃圾邮件的坑爹经历!_ !
  2. jquery中的append和appendTo用法
  3. 自然语言13_Stop words with NLTK
  4. Android -- 自定义ImageView(圆形头像)
  5. nginx+apache+php+mysql服务器集群搭建
  6. HDU2015校赛 The Country List
  7. 算法分析-快速排序QUICK-SORT
  8. 【Hexo】(一)使用HEXO配置环境,创建Hello World
  9. oracle sql developer 出现 : 适配器无法建立连接问题解决方案 The Network Adapter could not establish the connection
  10. 【深度学习】吴恩达网易公开课练习(class2 week1 task2 task3)
  11. 11.全局变量(static)
  12. PowerBI/Excel - PowerQuery数据转换系列 - 如何将多行的值串联到一行 - 行列转换
  13. rinetd 通过公网连接云数据库
  14. Jenkins入门之导航操作
  15. 【酷】JS+CSS打造沿Y轴纵深运动的3D球体
  16. 疑问:VS在调试的过程中,总是会提示正在加载picface.dll的符号,然后卡死在那
  17. 产品经理面试题——浅谈O2O
  18. kubernetes核心组件kube-proxy 学习总结
  19. python之PIL模块基础功能
  20. 【mybatis源码学习】调试mybatis的第一个程序

热门文章

  1. SOS--DP(基础版本)未压缩空间
  2. Mysql 三大特性详解
  3. Elastic Search 分布式架构分析
  4. iView组件Tabs嵌套使用
  5. jq之display:none与visible:hidden
  6. java lesson15Homework
  7. nginx之健康检查
  8. 用php连接数据库,并执行数据库操作
  9. 从零开始实现asp.net MVC4框架网站的用户登录以及权限验证模块 详细教程
  10. linux命令详解——sed