Django开发——部署Django

准备代码库

关闭Debug
如果Debug被设置为True:

  • 所有的数据库查询将被保存在内存中,以django.db.connection.quereis的形式。
  • 任何404错误都将呈现在页面中,这个页面将会包含潜在的敏感信息。
  • 应用中任何未捕获的异常,从语法错误到数据库错误都会返回在页面中。所以绝对不能公开这个页面。
    实现一个404模板
    如果将debug改为False,Django会显示一个在模板根目录中名字叫404.html的模板,所以你需要创建这个模板。
    404.html
<h1>404</h1>

<h3>
    <p>Sorry,nut the requested page could not be found</p>
</h3>

这里写图片描述
实现500模板
和404一样,500错误是服务器报错。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Page unacaliable</title>
</head>
<body>
<h1>500</h1>
<h1>Page unacaliable</h1>

<p>Sorry,but the requested page is unavaliable
    due to a server hiccup</p>


</body>
</html>

这里写图片描述
设置错误警告
默认情况下,Django在你的代码发生未处理的异常时,将会发送一封Email至开发团队。

  • 改变ADMINS设置用来引入你的E-mail地址
ADMINS=(
    ('westos','westos@qq.com'),
    ('redhat','redhat@qq.com')
    
)
  • 确保你的服务器配置为发送电子邮件。设置好postfix,sendmail。
    设置链接中断警报
#如果连接发生中断
SEND_BROKEN_LINK_EMAILS=True
MANAGERS=(
    ('westos', 'westos@qq.com'),
    ('redhat', 'redhat@qq.com'),
)

Django+uwsgi+nginx部署

uWSGI介绍
UWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中的HttpUwsgiModule的作用是与uWSGI读物器进行交换。
WSGI/uwsgi/uWSGI概念区分:

  • WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx,uWSGI等服务器)而web应用通信的一种规范。

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

  • uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。
    uWSGI的主要特点:

  • 超快的性能

  • 低内存占用

  • 多app管理

  • 详尽的日志功能

  • 高度可定制
    Nginx
    Ningx是一个反向代理服务器
    反响代理,部署在Web服务器上,代理所有外部网络对内部网络的访问。浏览器访问服务器,必须经过这个代理,是被动的。正向代理的主动方是客户端,反响代理的主动方是Web服务器。
    正向代理,浏览器主动请求代理服务器,代理服务器发送请求到对应的目标服务器。
    反响代理的作用

  • 安全,防止外部程序对Web服务器的直接攻击。

  • 负载均衡。可以根据Web服务器的负载情况,动态的把HTTP请求交给不同的Web服务器来处理。

  • 提升Web服务器的IO性能。如果一个HTTP请求的数据直接传给Web服务器,传输需要几秒,Web服务器就会阻塞几秒,来接收IO,这样会降低web服务器性能。如果使用反向代理服务器,先让反向代理服务器接收完整个HTTP请求,在把请求发给Web服务器。
    WSGI协议
    一个网站一般有很多不同的请求,在这些请求中基本1,2,4,5部都是固定的,变得是第三步,所以把这四步抽象出来让开发者只关注第三步,这样就能提高来法效率。用于处理Web服务器和应用程序的交互信息。
    部署原理框图
    这里写图片描述
    安装
    安装nginx

sudo yum install python-devel nginx

安装uwsgi

pip install uwsgi

创建一个uwsgi.ini
配置

[uwsgi]

#配置服务器的监听ip和端口,让uWSGI作为nginx的支持服务器的话,设置socket
#如果要让uWSGI作为单独的web-server,用http

#http=127.0.0.1:3309
socket=127.0.0.1:3309

#配置项目目录(设置为项目的根目录)
chdir=/home/kiosk/Desktop/DjangoPro

#配置入口模块即wsgi.py
wsgi-file=DjangoPro/wsgi.py

#开启master,将会多开一个管理进程,管理其他服务进程
master=True

#服务器开启的进程数量
processes=2

#以守护进程方式提供服务,输出信息将会打印到log中
daemonize=wsgi.log

#服务器进程开启的线程数量
threads=4

#退出时候清空环境变量
vacuum=True

#进程pid
pidfile=uwsgi.pid

#配uWSGI搜索静态文件目录(即django项目下存放static文件
#的目录用uWSGI作为单独服务器时才需要设置,此时我们是用nginx处理静态文件)

check-static=/home/kiosk/Desktop/DjangoPro/staticuw

nginx配置

server {
        listen       8080;
        server_name  localhost;

        charset utf-8;

        access_log off;

        location /static {
            alias /home/kiosk/Desktop/DjangoPro/DjangpPro/all_static/;

        }


        location / {
            include  /usr/local/nginx/conf/uwsgi_params; #设置将所有请求转发给uwsgi服务处理
            uwsgi_pass 127.0.0.1:3309; #指定uwsgi的url
        }

进入项目目录启动uwsgi

uwsgi --ini uwsgi.ini

启动nginx服务

/usr/local/nginx/sbin/nginx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值