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

一、概述

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

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

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

二、uwsgi和nginx的作用和区别

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

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

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

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

  

三、uwsgi配置

  3.1、安装uwsgi服务

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

    uwsgi是python的一个模块

pip install uwsgi

   3.2 、相关配置

 3.2.1、通过命令行启动

假设项目自带虚拟环境,需要到虚拟环境下启动:
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.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:
# 进程个数
workers=
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=
# 设置缓冲
post-buffering=
# 设置日志目录
daemonize=web-item/script/uwsgi.log

3.3.3、启动uwsgi

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

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

3.3.4、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

四、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 ;
server_name localhost;
charset utf-;
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查看是否加载成功

    

    

centos下Django+uwsgi+nginx的更多相关文章

  1. CentOS下 Django部署 nginx+uWSGI+Django(二)

    该篇内容承接CentOS下 Django部署 uWSGI+Django(一),细节流程可参考此篇内容. 1. 当前系统 CentOS Linux release 7.6.1810 Python 2.7 ...

  2. Ubuntu下Django+uWSGI+nginx部署

    本文采用uwsgi+nginx来部署django 这种方式是将nginx作为服务端前端,将接受web所有的请求,统一管理,Nginx把所有的静态请求自己处理,然后把所有非静态请求通过uwsgi传递给D ...

  3. linux之Ubuntu下Django+uWSGI+nginx部署

    http://www.chenxm.cc/post/275.html?segmentfault

  4. 10: Django + Uwsgi + Nginx 的生产环境部署

    1.1 一些重要概念 1.Web协议介绍 Web协议出现顺序: CGI -> FCGI -> WSGI -> uwsgi 1. CGI:  最早的协议 2. FCGI:  比CGI快 ...

  5. virtualvenv+django+uWSGI+nginx 部署

    原创博文 转载请注明出处! 1. virtualvenv 2. django 3. uWSGI 4. nginx 5. 踩坑记录 1. virtualvenv virtualvenv install ...

  6. Django+uwsgi+nginx+angular.js项目部署

    这次部署的前后端分离的项目: 前端采用angular.js,后端采用Django(restframework),他俩之间主要以json数据作为交互 Django+uwsgi的配置可以参考我之前的博客: ...

  7. django+uwsgi+nginx部署(非常详细)

    django+uwsgi+nginx部署 1.介绍: 在网上看了很多教程,但自己部署了很久都没有成功,这篇博文记录自己所踩过得坑. 2.环境: Ubuntu 16.04.1 LTS (GNU/Linu ...

  8. django uWSGI nginx搭建一个web服务器 确定可用

    网上的找了很多篇 不知道为什么不行,于是自己搭建了一个可用的Web 大家可按步骤尝试 总结下基于uwsgi+Nginx下django项目生产环境的部署 准备条件: .确保有一个能够用runserver ...

  9. Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx)

    Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx) 一丶集群和Nginx反向代理 ...

随机推荐

  1. Java学习目录(持续更新中)

  2. 优化之Joiner组件

    Joiner组件在运行时需要额外的内存空间处理中间结果,因此会影响性能 可通过查看Joiner performance计数器来决定Joiner组件是否需要优化 通过如下方式优化Joiner组件 将Ma ...

  3. 【异常】Servlet.service() for servlet [springMvc] in context with path [/orderdishessystem] threw exception [Handler processing failed; nested exception is java.lang.NoClassDefFoundError: net/sf/ezmorph/M

    今天做登录的时候,引入json-lib-2.1-jdk15.jar的包时,执行到JSONObject jsonObject = new JSONObject()对象就报标题的那个错. 原来是除了要导入 ...

  4. MySQL优化之my.conf配置详解

    最近项目不太忙,所以有时间静心来研究下mysql的优化,对于MySQL的设置是否合理优化,直接影响到网站的速度和承载量!同时,MySQL也是优化难度最大的一个部分,不但需要理解一些MySQL专业知识, ...

  5. 高可用Eureka注册中心配置说明(双机部署)

    目  录 1. 高可用EureKa注册中心示意图 2. Eureka实例相互注册配置 3. 微服务注册到Eureka配置 4. 启动步骤及配置成功检查 5. 说明事项 1. 高可用EureKa注册中心 ...

  6. Nginx学习系列一搭建环境

    1.Win10下安装vmware14虚拟机软件 官方下载地址 全程next,输入key,激活即可. 2.在虚拟机中安装Linux服务器环境,操作系统为Centos7 继续下一步,安装完成! 3.下载C ...

  7. asp.net core系列 40 Web 应用MVC 介绍与详细示例

    一. MVC介绍 MVC架构模式有助于实现关注点分离.视图和控制器均依赖于模型. 但是,模型既不依赖于视图,也不依赖于控制器. 这是分离的一个关键优势. 这种分离允许模型独立于可视化展示进行构建和测试 ...

  8. 如何判断DataSet里有多少个DataTable

    dataset.table.count sda.fill(ds,"table"); //这里是在ds里新建了一个表,叫table,注意是新建,多次执行会报错,实际使用时,可以用co ...

  9. sql数据库快照与恢复 规则绑定

    存在数据库快照的话我发进行数据库分离 CREATE DATABASE <快照名称> ON (NAME=<数据库文件名>,FILENAME='<存放地址>') AS ...

  10. Python3+Selenium2完整的自动化测试实现之旅(四):Selenium-webdriver操作浏览器、Cookie、鼠标键盘、警示框、设置等待时间、多窗口切换

    本篇学习总结webdriver模块操作浏览器.Cookie.鼠标键盘.警示框.设置等待时间.多窗口切换等方法的使用 1    浏览器控制 Selenium-webdriverAPI提供了对页面元素定位 ...