centos下Django+uwsgi+nginx

本篇章主要讲解uwsgi和nginx的做用,并利用二者对django项目进行部署css

 

1、概述python

  在开发过程当中,咱们通常是在该项目的虚拟环境中启用django自带的web服务:python manage.py runserver 0.0.0.0:8000nginx

自带的web服务仅仅是单线程运行,没法处理较高的访问数据git

项目须要部署最好仍是利用uwsgi搭建,它具备高性能,低内存,多app管理,多线程等功能,搭配nginx实现部署github

 2、uwsgi和nginx的做用和区别web

  参考博客:https://blog.csdn.net/dqchouyang/article/details/81639788django

  1.nginx是对外的服务器,客户请求url经过nginx处理(反向代理)服务器

    2. uwsgi对内的服务器,主要处理静态文件和动态请求
多线程

    3.uwsgi处理动态请求能力高,但对于静态请求(如static文件,css,js文件等)处理能力差app

  

 

 3、uwsgi配置

  3.一、安装uwsgi服务

    在确保该项目能够跑动:python manage.py runserver 0.0.0.0:8000

    uwsgi是python的一个模块

pip install uwsgi

   3.2 、相关配置

 3.2.一、经过命令行启动

假设项目自带虚拟环境,须要到虚拟环境下启动:
uwsgi --http 172.21.0.2:8000 --file teacher/wsgi.py --static-map=/static=static

--http 这个就和runserver同样指定IP 端口
--file 这个文件就里有一个反射,若是你在调用他的时候没有指定Web Server就使用默认的
-- static 作一个映射,指定静态文件

访问:wget
192.168.31.123:8080
 

 3.2.二、经过配置文件实现

目录结构以下

本项目名为:LibrarySystem
结构以下:
----web-item
     ---LibrarySystem
          --LibrarySystem
                -settings.py
                -wsgi.py
          --manage.py    
          --static
          --venv        
     ---script
         --uwsgi.ini

 

在某个目录下建立配置文件 xxx.ini(最好在项目的同目录下建立,便于管理)

注意点:在socket和http二者中,在单独配置uwsgi只须要配置http,须要uwsgi+nginx使用须要配置socket

[uwsgi]
# 项目目录 
chdir=web-item/LibrarySystem/
#指定虚拟环境目录                       #假设在不在虚拟环境下启动uwsgi,须要配置虚拟环境目录
home=web-item/LibrarySystem/venv
# 指定项目的application
module=LibrarySystem.wsgi:application
# 指定sock的文件路径
#socket=127.0.0.1:8001            #sock或http只能指定其中一个,其中在和nginx配合使用须要指定socket
#须要指定的地址是内网地址eth0
http=172.21.0.2:8000
# 进程个数
workers=5
pidfile=web-item/script/uwsgi.pid
#指定wsgi文件
wsgi-file=LibrarySystem/wsgi.py
# 指定静态文件
static-map=/static=web-item/LibrarySystem/static
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务中止的时候
vacuum=true
# 序列化接受的内容,若是可能的话
thunder-lock=true
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务中止的时候
vacuum=true
# 序列化接受的内容,若是可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize=web-item/script/uwsgi.log

 3.3.三、启动uwsgi

在uwsgi.ini目录下执行命令:

  /usr/local/python3/bin/uwsgi --ini uwsgi.ini

 3.3.四、Django项目中静态文件的处理 

  将Django的静态文件集中起来,Django为此有专门的工具

  如今Django的Settings文件中加上StATIC_ROOT,把静态文件都集中到这个路径下

STATIC_ROOT = os.path.join(BASE_DIR, "static/")  

  执行命令

python3 ./manage.py collectstatic

3.3.5 访问django项目

wget 172.21.0.2:8000

成功则实现uwsgi的部署,失败则查看是否配置出错或是否在虚拟环境下执行

3.3.6 管理uwsgi

执行:
    uwsgi --ini uwsgi.ini
中止(须要添加相关配置):
  
uwsgi --reload uwsgi/uwsgi.pid    
查看状态(须要添加相关配置):
  uwsgi --connect-and-read uwsgi.status
中止方法二:
  查看uwsgi的pid
    ps aux | grep uwsgi
  中止相关pid
    kill -9 pid

 

4、nginx配置

  1.安装nginx

yum install uginx

     2.准备工做

  2.1 确保存在uwsgi_params

 

确保nginx.conf的同目录下有uwsgi_params文件(/etc/nginx/conf/uwsgi_params),没有的话根据连接获取

 

    2.2 nginx的默认配置文件目录(nginx.conf)的路径

nginx -t

默认显示内容:
    nginx: the configuration file /etc/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/conf/nginx.conf test is successful

里面说明了nginx默认配置文件的路径是:/etc/nginx/conf/nginx.conf;

 

    3. 在项目下新建目录nginx_cof(看你需求是否须要集中管理)

   3.1 修改nginx配置

  把/etc/nginx/nginx.cof复制到该目录下并把相关内容做以下修改

server {
    listen 80;
    server_name localhost;
    charset     utf-8;
    access_log      目录/nginx_cof/nginx_access.log;    #
    error_log       目录/nginx_cof/nginx_error.log;
    client_max_body_size 75M;


    location /static {
        alias 你的项目路径/static;
    }

    location / {
        include     /etc/nginx/conf/uwsgi_params;
        uwsgi_pass  127.0.0.1:8001;          #必须确保和uwsgi中的socket一致
    }
}

    3.2  加载nginx文件

nginx -c /wwwroot/destiny/destiny.conf经过 nginx -t查看是否加载成功
相关文章
相关标签/搜索