Django的部署

  • 当Django运行在生产环境时,将不再提供静态文件的支持,需要将静态文件交给静态文件服务器。我们需要收集项目中静态文件,并放到静态文件服务器中。我们使用Nginx服务器作为静态文件服务器。
  • 基本思路
    1.方案:Nginx+uwsgi
    这样大体的流程是:nginx作为服务器最前端,负责接收client的所有请求,统一管理。静态请求由Nginx自己处理。非静态请求通过uwsgi传递给Django,由Django来进行处理,从而完成一次WEB请求。
    2,通信请求
    the web client <–> the web server(nginx) <–> the socket <–> uwsgi <–> Django

Nginx部署静态数据

1. 收集项目静态文件
  • 1.配置收集静态文件存放的目录
    STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), ‘static’)
  • 2.执行收集静态文件命令
    $ python manage.py collectstatic
2. 部署Nginx服务器提供静态数据
  • 1.打开Nginx服务器配置文件

  • $ sudo vim /usr/local/nginx/conf/nginx.conf

  • 2.修改Nginx服务器配置文件

  • `http {

    server { # 静态服务
    listen 端口号;
    server_name 域名;
    location /static {
    alias /home/python/static;
    }
    location /detail {
    alias /home/python/static/detail;
    }
    location = / {
    root /home/python/static;
    index index.html index.htm;
    }
    location = /index.html { #首页
    root /home/python/static;
    index index.html index.htm;
    }
    }
    }`

3.启动Nginx服务器

检查配置文件
$ sudo /usr/local/nginx/sbin/nginx -t
首次启动
$ sudo /usr/local/nginx/sbin/nginx
重启
sudo /usr/local/nginx/sbin/nginx -s reload
停止
$ sudo /usr/local/nginx/sbin/nginx -s stop`

  • Nginx默认监听80端口
    所以安装完毕,访问localhost或者服务器自己的ip地址就可以看到下面的画面。
    在这里插入图片描述

Nginx反向代理动态业务

配置uwsgi
  • 安装uwsgi

pip install --upgrade pip #升级pip
pip install uwsgi`

  • 编写测试
    写一个test.py测试uwsgi

test.py

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return "Hello World"

然后执行shell命令:

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

此时访问8001端口,就可以看到Hello World

  • 连接uwsgi与Django

测试Django自身,
确保Django自身可以启动运行,在Django应用的目录下:
python manage.py runserver 0.0.0.0:8002
访问8002端口,如果正常,说明Django启动成功!

  • 编写wsgi.py文件

编写django_wsgi.py文件,将其放在与文件manage.py同一个目录下。

import os
import sys

#将系统的编码设置为UTF8
reload(sys)
sys.setdefaultencoding('utf8')

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")#mysite替换为自己的项目名

from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()
  • 连接Django和uwsgi

通过Django与uwsgi就已经可以形成一个简单的web服务器了
编写完成django_wsgi.py文件后执行:

uwsgi --http :8000 --chdir path/to/yoursite --module django_wsgi

这样,就可以在浏览器中的8000端口访问Django程序了。
所有的请求都是经过uwsgi传递给Django程序的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值