Django学习笔记五:通过nginx+uwsgi部署Django项目(暂时静态文件没有部署上去)

概念

Nginx:是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势
uwsgi::是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。
运行过程:
nginx作为服务器的最前端,它将接受WEB的所有请求,统一管理请求。nginx把所有静态请求自己来处理(这是nginx的强项,静态文件像我们django博客项目中的static文件夹下面的图片,css,js)。然后nginx将所有的非静态请求(像显示文章的详细信息,通常这类信息都保存在数据库,因此需要调用数据库获取数据)通过uwsgi传递给Django,由django来处理,从而完成一次WEB请求。uwsgi的作用就类似一个桥接器,起到桥梁的作用。

部署环境

阿里云服务器ubuntu14.04 (域名买了还没备案,所以博客暂时是通过ip访问的)

python3.5.2
nginx 1.4.6
uwsgi 2.0.15
django 1.11.3
markdown 1.0.1

安装nginx

打开putty远程控制云服务器输入账号和密码:

sudo apt-get install update 更新ubuntu库资源
sudo apt-get install nginx  安装nginx:
service nginx restart  启动nginx(重启)这个命令在后面要常用到

访问:http://59.110.155.51(这是我的云服务器的ip)
这里写图片描述
出现上图,则说明nginx启动成功

安装uwsgi

sudo apt-get install python3-pip
pip3 install uwsgi

测试uwsgi,创建test.py文件(注意:linux创建目录的命令是:mkdir,创建test.py用 “vi test.py”命令)

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

函数名字application,这是默认的函数,uwsgi的python加载器将会搜索这个名字
把它部署到htto端口8000(现在运行uwsgi来启动一个会把请求传递给你的wsgi应用的http服务器):

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

这里写图片描述
出现上图,则说明测试成功:

从github上获取django项目

sudo apt-get install git 安装git
git clone https://github.com/xuna123/Django_study1.git

安装django和markdwon

pip3 install django
pip3 install markdown

将nginx+uwsgi部署到django博客项目

我们实现的目录:
这里写图片描述
在我们从git拉下来Django_study1项目的时候,在子目录下回自动帮我们生成wsgi.py文件,所以我们只需要创建
myweb_uwsgi.ini配置文件。

vim myweb_uwsgi.ini

文件内容:

# Django-related settings

socket = :8000

# the base directory (full path)
chdir           = /root/Django_study1


# Django s wsgi file
module          = easyblog.wsgi

# process-related settings
# master
master          = true

# maximum number of worker processes
processes       = 4

# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

文件意思:

  • socket :指定项目执行的端口号
  • chadir :指定项目的目录
  • module :可以这么来理解,对于- myweb_uwsgi.ini文件来说,与它的平级的有一个easyblog目录,这个目录下有一个wsgi.py文件
  • master :允许主线程存在(true)
  • processes:开启的进程数量(这里是开启4个进程)
  • vacuum :当服务器退出的时候自动清理环境,删除unix socket文件和pid文件

配置nginx:

接下来要做的就是修改nginx的配置文件,打开/etc/nginx/sites-available/default文件,删除所有内容,写入下面内容:

server {
    listen         8099;
    server_name    59.110.155.51
    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 59.110.155.51:8000;
        uwsgi_read_timeout 2;
    }
    location /static {
        expires 30d;
        autoindex on;
        add_header Cache-Control private;
        alias /Django_study1/blog/static;
     }
 }
  • listen 指定的是nginx代理uwsgi对外的端口号(这个要自己阿里云服务器的安全组中添加)
  • server_name : 服务器的名字,(因为暂时没有域名,就写的ip地址)
  • access_log :用来指定日志文件的存放路径
  • error_log :用来指定错误日志文件的存放路径
  • include uwsgi_params “一般来说,你只需包含uwsgi_params文件 (包含在nginx发行版本中),使用uwsgi_pass指令来设置uWSGI socket的地址。
  • uwsgi_pass 设置uwsgi服务器的协议和地址,协议可是uwsgi或suwsgi(uwsgi over ssl); 地址可以是ip地址,域名,和可选的端口。
  • uwsgi_read_timeout:指令的含义是如果视图函数处理的时间超时,uwsgi便会关闭连接,这个关闭只是针对Nginx这边的关闭,视图函数还会继续执行,处理完成后,视图函数那边会报IO写入。
  • expires 30d:意味着静态和媒体文件夹中的所有内容将在30天内由浏览器缓存,但不会删除任何内容,您将无需
    重新生成服务器中的任何内容
  • autoindex on;启用目录流量, 默认为off,显示的文件时间为GMT时间。改为on后,显示的文件时间为文件的服务
    器时间
  • add_header Cache-Control private: HTTP协议的Cache -Control指定请求和响应遵循的缓存机制。private(默认): 只能在浏览器中缓存, 只有在第一次请求的时候才访问服务器, 若有max-age, 则缓存期间不访问
    服务器.
  • alias /Django_study1/blog/static; 静态文件的位置(暂时这么理解)
接下里还有 一部修改settings.py里面的8ALLOWED_HOSTS增加我们访问的ip,如下:
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ['localhost','59.110.155.51']

现在我们重启nginx 和uwsgi:

service nginx restart
uwsgi --ini myweb_uwsgi.ini

这里写图片描述

参考资料:
http://zmrenwu.com/post/20/#购买域名
nginx restart failed问题解决方法:http://www.linuxidc.com/Linux/2015-07/119754.htm
虫师博客:http://www.cnblogs.com/fnng/p/5268633.html
http://uwsgi-docs-cn.readthedocs.io/zh_CN/latest/WSGIquickstart.html

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值