centos下Django+uwsgi+nginx
本篇章主要讲解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的更多相关文章
- CentOS下 Django部署 nginx+uWSGI+Django(二)
该篇内容承接CentOS下 Django部署 uWSGI+Django(一),细节流程可参考此篇内容. 1. 当前系统 CentOS Linux release 7.6.1810 Python 2.7 ...
- Ubuntu下Django+uWSGI+nginx部署
本文采用uwsgi+nginx来部署django 这种方式是将nginx作为服务端前端,将接受web所有的请求,统一管理,Nginx把所有的静态请求自己处理,然后把所有非静态请求通过uwsgi传递给D ...
- linux之Ubuntu下Django+uWSGI+nginx部署
http://www.chenxm.cc/post/275.html?segmentfault
- 10: Django + Uwsgi + Nginx 的生产环境部署
1.1 一些重要概念 1.Web协议介绍 Web协议出现顺序: CGI -> FCGI -> WSGI -> uwsgi 1. CGI: 最早的协议 2. FCGI: 比CGI快 ...
- virtualvenv+django+uWSGI+nginx 部署
原创博文 转载请注明出处! 1. virtualvenv 2. django 3. uWSGI 4. nginx 5. 踩坑记录 1. virtualvenv virtualvenv install ...
- Django+uwsgi+nginx+angular.js项目部署
这次部署的前后端分离的项目: 前端采用angular.js,后端采用Django(restframework),他俩之间主要以json数据作为交互 Django+uwsgi的配置可以参考我之前的博客: ...
- django+uwsgi+nginx部署(非常详细)
django+uwsgi+nginx部署 1.介绍: 在网上看了很多教程,但自己部署了很久都没有成功,这篇博文记录自己所踩过得坑. 2.环境: Ubuntu 16.04.1 LTS (GNU/Linu ...
- django uWSGI nginx搭建一个web服务器 确定可用
网上的找了很多篇 不知道为什么不行,于是自己搭建了一个可用的Web 大家可按步骤尝试 总结下基于uwsgi+Nginx下django项目生产环境的部署 准备条件: .确保有一个能够用runserver ...
- Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx)
Linux 集群概念 , wsgi , Nginx负载均衡实验 , 部署CRM(Django+uwsgi+nginx), 部署学城项目(vue+uwsgi+nginx) 一丶集群和Nginx反向代理 ...
随机推荐
- 当初要是看了这篇,React高阶组件早会了
当初要是看了这篇,React高阶组件早会了. 概况: 什么是高阶组件? 高阶部件是一种用于复用组件逻辑的高级技术,它并不是 React API的一部分,而是从React 演化而来的一种模式. 具体地说 ...
- 十分钟通过 NPM 创建一个命令行工具
大过年的,要不要写点代码压压惊?来花十分钟学一下怎么通过 NPM 构建一个命令行工具. 写了一个小 demo,用于代替 touch 的创建文件命令 touchme ,可以创建自带“佛祖保佑”注释的文件 ...
- 【Redis篇】Redis集群安装与初始
一.前述 本文将单台节点不同端口模拟集群方式. 二.具体搭建 前提是安装好redis具体可参考http://www.cnblogs.com/LHWorldBlog/p/8463269.html 1 ...
- 【Storm篇】--Storm分组策略
一.前述 Storm由数源泉spout到bolt时,可以选择分组策略,实现对spout发出的数据的分发.对多个并行度的时候有用. 二.具体原理 1. Shuffle Grouping 随机分组,随机派 ...
- 知其所以然~分布式事务cap
背景 一致性是一个抽象的.具有多重含义的计算机术语,在不同应用场景下,有不同的定义和含义.在传统的IT时代,一致性通常指强一致性,强一致性通常体现在你中有我.我中有你.浑然一体:而在互联网时代,一致性 ...
- 一文读懂MapReduce
Hadoop解决大规模数据分布式计算的方案是MapReduce.MapReduce既是一个编程模型,又是一个计算框架.也就是说,开发人员必须基于MapReduce编程模型进行编程开发,然后将程序通过M ...
- docker 常用命令和使用
首先安装Docker CE 在ubantu上,参照https://docs.docker.com/install/linux/docker-ce/ubuntu/#set-up-the-reposito ...
- Java递归读取文件路径下所有文件名称并保存为Txt文档
本文用递归的方法实现读取一个路径下面的所有文件并将文件名称保存到Txt文件中,亲测可用. 递归读取文件路径下的所有文件: /** * 递归读取文件路径下的所有文件 * * @param path * ...
- [转]C# 实现Jwt bearer Authentication
本文转自:https://www.cnblogs.com/aishangyipiyema/p/9262642.html 什么是JWT JWT(JSON Web Token), 顾名思义就是在Web上以 ...
- 第一讲 新手如何学习HTTP协议之实践项目多开微信机器人
上一篇做了一个smart qq机器人. 前几天,因为突然上不了 smart qq,以为TX 要抛弃了..所以就没有接着完善smart 机器人.应朋友要求,做一个多开微信. 做了几天已经做好了,理论上 ...