Django项目部署uWSGI+Nginx

系统Ubuntu16.04 64位
环境Python
Django2.2.16
Mysql5.7.16
Nginx1.14.0
uwsgi2.0.20
1.1 uWSGI
1.1.1 uWSGI介绍
什么是WSGI

WSGI 全称 Web Server Gateway Interface,是为python语言定义的web服务器和web应用程序和框架之间的一种简单而通用的接口。

什么是uWSGI

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

关于WSGI、uwsgi、uWSGI三个概念区分:
  • WSGI是Web服务器与Web应用程序或应用框架之间的接口,也可以看作是一个协议
  • uwsgi是一种传输协议
  • uWSGI是实现了uwsgi和WSGI两种协议的Web服务器

uwsgi协议是一个uWSGI服务器自带的协议,他用于传输信息的类型,每一个uwsgi packet的前4bytes都为传输信息类型的描述,他与WSGI相比是不同的两个协议。

1.1.2 安装uWSGI
pip install uWSGI
# https://pypi.python.org/pypi/uWSGI

测试uWSGI,创建test.py文件
test.py

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

通过uwsgi命令运行test.py文件
ubuntu终端

ian@ubuntu:/var/www/django_rest# uwsgi --http :8001 --wsgi-file test.py

浏览器访问:http://127.0.0.1:8001,返回Hello World

1.1.3 uWSGI运行Django

uwsgi命令常用参数如下:

--http 协议类型和端口号。
--processes:开启进程数量。
--wrokers:开启进程数量,等同于processes。
--chdir 指定运行目录。
--wsgi--file 载入wsgi-file(加载wsgi.py文件)。
--stats 在指定地址上开启状态服务。
--threads 开启的线程数量。
--master 允许主线程存在。
--daemonize 使进程在后台运行,并将日志输出到指定的日志文件或者UDP服务器。
--pidfile 指定PID文件的位置,记录主进程的PID号(PID,服务器进程ID)。
--vacuum 当服务器退出时指定清理环境,删除Unix Socket 文件和PID文件。 
ian@ubuntu:/var/www/django_rest# uwsgi --http :8000 --wsgi-file test.py --chdir /var/www/django_rest/ --wsgi-file django_rest/wsgi.py --master --processes 4 --stats 127.0.0.1:9000
1.2 Nginx安装

非root用户,记得命令前加sudo

1、更新软件源
apt-get update
2、安装nginx
apt-get install nginx
3、启动nginx 默认80端口
etc/init.d/nginx start
4、nginx常用操作
etc/init.d/nginx reload 不重启重新载入最新配置文件内容
etc/init.d/nginx stop 停止服务
etc/init.d/nginx restart 重启服务

启动nginx
在这里插入图片描述

1.2.1 Nginx + uWSGI + Django
创建日志文件
touch /var/www/django_rest/uwsgi.log
整合Nginx 、uWSGI、Django,项目结构如下:
django_rest/
	|— django_rest/
	|    |— __init__.py
	|    |— settings.py
	|    |— urls.py
	|    |_ wsgi.py
	|— api/
	|    |— static/
	|    |— __init__.py
	|    |— admin.py
	|    |— apps.py
	|    |— models.py
	|    |— tests.py
	|    |_ views.py
	|— manage.py
	|_ django_uwsgi.ini
django_uwsgi.ini配置
[uwsgi]
# 请求方式与端口号
socket = :8001
# Django项目路径
chdir = /var/www/django_rest
# wsgi文件
module = django_rest.wsgi
# 允许主进程存在
master = true
# 开启进程数
processes = 3
# 当服务器退出时自动清理环境
vacuum = ture
# 使进程在后台运行,并将日志输出到指定的日志文件
daemonize = /var/www/django_rest/uwsgi.log
ubuntu终端
ian@ubuntu:/var/www/django_rest# uwsgi --ini django_uwsgi.ini
查看日志文件,如有错检查配置文件参数是否有误
tail -f uwsgi.log
Nginx 配置修改

server {
        listen 8000;
        listen [::]:8000;
        server_name  localhost;
        client_max_body_size 100M;
        location  / {
                include /etc/nginx/uwsgi_params;
                uwsgi_pass 127.0.0.1:8001;
                }
        # 配置静态资源
        location /static {
                alias /var/www/django_rest/api/static;
                }
}

启动nginx
etc/init.d/nginx start

我的另一篇文章Ubuntu+Nginx+uwsig+部署两个Flask项目至同一端口,内容大同小异

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值