Django在Ubuntu上的部署(nginx+Uwsgi)

时间:2020-05-29
本文章向大家介绍Django在Ubuntu上的部署(nginx+Uwsgi),主要包括Django在Ubuntu上的部署(nginx+Uwsgi)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1、用户请求到Django应用的流程图

2、uWSGI、uwsgi、WSGI之间的关系

WSGI:是一种协议,起到规范参数的作用,WSGI沟通的双方是wsgi server (比如uWSGI) 要和 wsgi application(比如django )

uWSGI:是一个服务器软件,实现wsgi协议规范的服务器我们叫做wsgi服务器,也就是uWSGI服务器,作用是把HTTP协议转化成WSGI协议,让Python可以直接使用。也就是说如果没有Nginx服务器,单独的uWSGI也是可以使用的,但是加了Nginx能实现负载均衡,和高并发。uWSGI使用的是多进程来实现异步请求的,一主进程加多子进程的模式。

nginx:也是一个服务器软件,具备优秀的静态内容处理能力,然后将动态内容转发给uWSGI服务器,这样可以达到很好的客户端响应。支持的并发量更高,方便管理多进程,发挥多核的优势,提升性能。这时候nginx和uWSGI之间的沟通就要用到uwsgi协议。

3、uWSGI的安装和使用

pip install uwsgi
或
pip install https://projects.unbit.it/downloads/uwsgi-lts.tar.gz
安装uWSGI
uwsgi --http :8000 --wsgi-file test.py #启动单独的文件
    
uwsgi --http :8000 --module projectapp(app名称).wsgi  #启动django
启动
#/home/zbwu103/hellodjang/hellodjango-uwsgi.ini
 
 
[uwsgi]
#对外开放的端口
http = :9000           
#跟Nginx通信的端口
socket = 127.0.0.1:8001
# 项目的路径
chdir = /home/zbwu103/hellodjango
# Django WSGI文件存储的路径
wsgi-file = blogproject/wsgi.py
# 最大的进程数
processes = 4
#每个进程使用的线程数
threads = 2
 
#监控状态的端口
stats = 127.0.0.1:9191
# 退出清除环境变量
vacuum          = true

####uwsgi hellodjang-uwsgi.ini   命令启动uWSGI
通过配置文件启动
#安装
pip install uwsgitop   

#使用
uwsgitop :9191
监控负载

4、Nginx的安装和使用

sudo apt-get install nginx
sudo /etc/init.d/nginx start
安装运行

运行django的话需要在/etc/nginx/sites-enabled中新建一个nginx.ini文件,并且把/etc/nginx/里面的uwsgi_params复制到项目里面去

# hellodjango_nginx.conf
 
upstream django {
    # 和uWSGI通信的端口,和uWSGI配置一样
    server 127.0.0.1:8001; 
}
 
server {
    #对外的端口
    listen      8000;
    # the domain name it will serve for
    server_name .example.com; # substitute your machine's IP address or FQDN
    charset     utf-8;
 
    # 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 /home/zbwu103/hellodjango/static; # 收集的静态文件
    }
 
    # Finally, send all non-media requests to the Django server.
    location / {
        uwsgi_pass  django;
        include     /home/zbwu1o3/hellodjango/uwsgi_params; #复制的uwsgi_params文件路径
    }
}
nginx.ini
nginx -t  查看配置是否出错

ps -ef |grep nginx 查看服务是否启动

cat /val/log/nginx/error.log 查看错误日志
cat /val/log/nginx/access.log 查看接入日志

/etc/init.d/nginx start 开启服务
Nginx命令

原文地址:https://www.cnblogs.com/wuzhibinsuib/p/12986500.html