本文将告诉您NGINX如何改善Django的并发性,而知识点对应于Nginx High和解决方案的解决方案。我希望这对您有帮助。不要忘记收集此网站。
本文目录清单:
1. nginx uwsgi django高 - 绩效并发问题2.如何使用nginx关联的django应用程序3.如何配置nginx+uwsgi+uwsgi+django 4.使用nginx负载平衡来增加并发5. django部署-UWSGI+nginx(uwsgi+nginx)(超级详细信息)(超级详细信息)6.如何使用nginx部署djangouwsgitop是官方的sudo apt-get install uwsgitop uwsgi运行性能
UWSGI开始
UWSGI -Socket:8101 -Stats 127.0.0.1:1717
UWSGITOP:1717
通过nginx部署Django(基于Ubuntu)
部署Django有很多方法。NGINX+UWSGI的方法是一种更常见的方法。
这样,我们通常的方法是将NGINX用作服务器的前端,它将接收Web的所有请求并均匀地管理请求。NGINX请求所有静态请求以处理自身(这是NGINX的优势)。
可以看出,UWSGI的作用类似于桥梁。它扮演了桥梁的角色。
Linux的强度用于用作服务器,因此我们选择完成以下整个部署过程。
1.安装nginx
NGINX是一款轻巧的Web服务器/反向代理服务器和电子邮件(IMAP/POP3)代理服务器,并根据BSD样协议发行。它的特征是拥有较少的内存和强大的并发症。实际上,NGINX的并发能力确实在同一类型的Web服务器中表现良好。
Nginx也是一家非常受欢迎的Web服务器。在其部署Django的情况下,我们还在这里简要介绍。
NGINX官方网站:
打开Ubuntu控制台(CTRL+ALT+T),以使用Ubuntu的仓库安装。
fnngj@ubuntu:?$ sudo apt-get安装nginx #installation
启动nginx:
fnngj@ubuntu:?$ /etc/init.d/nginx开始#startup
fnngj@ubuntu:?$ /etc/init.d/nginx stop #close
fnngj@ubuntu:?$ /etc/init.d/nginx restart #restart
修改nginx的默认端口号,打开/etc/nginx/nginx.conf文件,然后修改端口号。
复制代码
服务器 {
听8088;#修改端口号
server_name localhost;
#Charset KOI8-R;
#access_log logs/host.access.log main;
地点 / {
根HTML;
索引index.html index.htm;
}
复制代码
关于文件36的位置,默认的80端号更改为其他端口号,例如8088。由于其他应用程序很容易占用默认的80 -port号码。
然后,通过上面的命令重新启动nginx。访问:http // 127.0.0.1:8088/
如果图片出现在上方,则NGINX启动成功。
第二,安装UWSGI
通过PIP安装UWSGI。
root@ubuntu:/etc#python3 -m pip安装uwsgi
测试UWSGI并创建一个test.py文件:
def应用程序(env,start_response):
start_response('200 ok',[('content-type','text/html')]))))))
返回[B“ Hello World”]]
通过UWSGI运行文件。
fnngj@ubuntu:?/pydj $ uwsgi-http:8001-wsgi-file test.py
下一个配置Django连接到UWSGI。
fnngj@ubuntu:?/pydj $ uwsgi-http:8001-chdir/home/fnngj/pydj/myweb/-wsgi-file myweb/wsgi.py-master-master-master-master-master-processers 4-threads 2-stats127.0.0.0.0.0.0.0.0.1:9191919191:919191:919191
共同选择:
HTTP:协议类型和端口号
过程:启动过程的数量
工人:启动过程的数量等同于流程
CHDIR:指定操作目录
WSGI文件:已加载的WSGI文件(load.wsgi文件)
统计:在指定的地址上,开始状态服务
线程:运行threads.due to gil的存在,我认为这确实没有用。
主:允许主进程(启用主过程)
DAEMONIZE:使该过程在后台运行,并将日志击中指定的日志文件或UDP服务器(DAEMONIZE UWSGI)。实际上,最常用的是在本地文件上输出操作记录。
PIDFILE:指定PID文件的位置并记录主过程的PID号。
真空:当服务器退出时,自动清理环境,删除UNIX套接字文件和PID文件(尝试删除所有生成的文件/插座)
3. nginx+uwsgi+django
接下来,我们必须结合三个。第一个列表项目的必需文件:
myweb/
e- manage.py
b - ├myweb/
│_ _- __init__.py
│e ─—设置.py
│u - urURLS.PY
│s-wsgi.py
b - ─myweb_uwsgi.ini
当我们通过django创建MyWeb项目时,由sub -directory myweb生成的wsgi.py文件。因此,我们只需要创建myweb_uwsgi.ini配置文件即可。当然,UWSGI支持多种类型的配置文件,例如XML,INI等。
复制代码
#myweb_uwsgi.ini文件
[UWSGI]
#与Django相关的设置
插座=:8000
#基本目录(完整路径)
chdir =/home/fnngj/pydj/myweb
#django s wsgi文件
模块= myweb.wsgi
#与过程相关的设置
# 掌握
主= true
#最大工程数量
过程= 4
#...有适当的权限 - 可能需要
#chmod-socket = 664
#出口清除环境
真空= true
复制代码
这种配置实际上等同于上一节中的WSGI命令,以及用一堆参数归档的方法。
套接字指定项目执行的端口号。
CHDIR指定项目目录。
模块myweb.wsgi,您可以这样理解。对于myweb_uwsgi.ini文件,有一个具有级别的myWeb目录。此目录中有一个wsgi.py文件。
几个参数可以参考上一节中的参数引入。
接下来,切换到MyWeb项目目录,然后读取myweb_uwsgi.ini文件以通过UWSGI命令启动项目。
复制代码
fnngj@ubuntu:?cd/home/fnngj/pydj/myweb/
fnngj@ubuntu:?/pydj/myweb $ uwsgi -ini myweb_uwsgi.ini
[uwsgi]从myweb_uwsgi.ini获取INI配置
***开始UWSGI 2.0.12(32bit)[星期六3月12日13:05:06 2016] ***
编译版本:4.8.4,2016年1月26日06:14:41
操作系统:Linux-3.19.0-25代#26?14.04.1-ubuntu SMP星期五24:18:00 UTC 2015
Nodename:Ubuntu
机器:I686
时钟来源:UNIX
检测到的CPU核心数:2
当前的工作目录:/home/fnngj/pydj/myweb
检测到的二进制路径:/usr/local/bin/uwsgi
!!!没有Interzal路由支持,可以通过PCRE支持重建!!!
chdir()to/home/fnngj/pydj/myweb
您的过程编号限制为15962
您的内存页面大小为4096字节
检测到的最大文件描述符编号:1024
锁发动机:Pthread robust Mutexes
雷霆锁:禁用(您可以使用锁定锁)启用它)
UWSGI插座0绑定到TCP地址:8000 FD 3
Python版本:3.4.3(默认,2015年10月14日,20:37:06)[GCC 4.8.4]
*** Python线程支持被禁用。您可以使用-nable-threads ***启用它
Python主解释器在0x8B52DC0初始化
您的服务器插座收听积压限制为100个连接
您对工人的优雅运营的怜悯是60秒
映射4核的319920字节(312 kb)
***操作模式:预叉***
WSGI应用程序0(MountPoint ='')在解释器0x8b52dc0 pid:7158(默认应用程序)上准备就绪。
*** UWSGI以多解释器模式运行***
产卵的UWSGI主处理(PID:7158)
产卵的UWSGI工人1(PID:7160,核心:1)
产卵的UWSGI工人2(PID:7161,核心:1)
产卵的UWSGI工人3(PID:7162,核心:1)
产卵的UWSGI工人4(PID:7163,核心:1)
复制代码
注意UWSGI的启动信息。如果有任何错误,请检查是否设置了配置文件的参数。
我需要做的下一步是修改nginx.conf配置文件。open/etc/nginx/nginx.conf文件并添加以下内容。
复制代码
本国的
服务器 {
听8099;
server_name 127.0.0.1
charset UTF-8;
access_log/var/log/nginx/myweb_access.log;
error_log/var/log/nginx/myweb_error.log;
client_max_body_size 75m;
地点 / {
包括uwsgi_params;
UWSGI_PASS 127.0.0.1:8000;
uwsgi_read_timeout 2;
}
位置 /静态{
到期30d;
自动索引;
add_header缓存控制prive;
别名/home/fnngj/pydj/myweb/static/;
}
}
本国的
复制代码
侦听指定NGINX代理UWSGI的外部端口号。
server_name Internet上的大多数信息是URL集(例如,wwwexamplecom)。如果我将其设置在此处,则无法访问它,因此指定了指定的默认IP。
配置后,我有一个问题,我一直在考虑它。nginx如何与UWSGI关联。现在看来,最重要的是这两行配置。
包括uwsgi_params;
UWSGI_PASS 127.0.0.1:8000;
必须指定包含为uwsgi_params;以及uwsgi_pass和myweb_uwsgi.ini配置文件的IP端口。
现在重新启动nginx并查看上面的nginx的命令。然后,请访问:http // 127.0.0.1:8099/
通过此IP和端口号的方向,请求首先为nginx。如果您在页面上执行一些请求,则将看到这些请求最终将转移到UWSGI以处理它。
1.安装UWSGI库
PIP安装UWSGI
2.在Django目录中创建配置文件。
我的项目目录结构如下:
输入apimanager(相应的设置,URLS)目录,即带有wsgi.py文件夹的djangoxx_socket.xml文件。
我叫djangomgr_socket.xml,名称是休闲的。
djangomgr_socket.xml内容如下:
UWSGI
插座:8999/插座
chdir/webroot/wjc/apimgr // chdir
Modulewsgi/模块
proceses1/processes! - 过程编号 -
daemonizeuwsgi.log/daemonize
/uwsgi
注意:
1. CHDIR通往项目根目录的路径(包含Manage.py的目录)
2.套接字端口号是需要在NGINX中访问的端口号
3. Daemonize是运行日志。当不填充路径时,默认值将在与djangomgr_socket.xml相同的路径下生成uwsgi.log。当然,您也可以自己指定路径。
3.配置nginx
NGINX配置如下。配置配置后,测试并重新启动NGINX。
测试nginx:
命令:nginx -t -Test nginx配置文件是否错误
重新启动nginx:
命令:nginx -s reload(或服务nginx restart)
服务器 {
听80;
server_name apimgr.myexist.cn;
地点/{
包括uwsgi_params;
UWSGI_PASS 127.0.0.1:899;
}
本地?。*。html |zip |rar)$
{{{
root/webroot/wjc/apimgr/apimgr/templates/;
如果(-f $ request_filename){
到期最大;
休息;
}
}
access_log/var/log/nginx/myexist/apimgr.myexist.access.access.log;
error_log/var/log/nginx/myexist/apimgr.myexist.cn.error.log;
}
4.开始服务:
在djangoxx_socket.xml的路径下:
execute命令:uwsgi -x djangoxx_socket.xml
您可以启动服务,并且可以在uwsgi.log中查看启动日志
上一篇文章说,使用AB进行压力测试,CPU瓶颈出现在单个服务器中。
为了提高并发性,可以从两个方面扩展到垂直扩展(改善单个服务器性能)和水平扩展(增加机器)。
垂直扩展相对较大且易于到达顶部。随着业务的增加,它仍然无法持有。
因此,我们需要执行分布式计划,以便我们可以租用更多机器以随着业务的扩大而承受压力。
目前,软负载的简单方法是使用nginx。当然,您也可以努力负担,但是我没有接触过,但是我只是听到了。据说它很昂贵。
然后,我将在下面介绍NGINX配置方法。
我的两个机器配置没有1个核心和1G内存。
直接查看NGINX配置
这样,Reload nginx就会生效。为了测试它是否已成功加载,您可以在两个应用程序中返回不同的信息,并使用浏览器访问它,以查看是否会自动切换。
如果测试过程中有更多异常,则可以检查NGINX的错误日志,定位问题
如果1024 Worker_connections不够
您可以修改/ETC/NGINX/NGINX.CONF
以下是3,000个并发。分布式方案的结果比单机器的平均处理时间降低了1秒。
环境:
Python3.6
Centos 7
django1.11
用Django编写一个小网站,只能在您自己的位置运行!该怎么办?我听说它可以在云服务器上部署,以便其他人可以访问它!
它从哪里开始?从django!旧规则开始,请按照以下步骤操作:
请勿在此处谈论Django项目的实施。假设您已经写了一个Django项目,并且可以以127.0.0.0.1:8000局部奔跑,请给您参考,该项目可能会像这样增长:
也就是说,项目目录中的settings.py文件主要强调几个地方:
①关闭调试模式:
②修改允许的host:
③配置静态文件存储路径:
修改配置后,执行:
关于这一点,无话可说。
最好在安装UWSGI和验证方法后进行验证:
创建一个test.py文件:
启动UWSGI服务器:
如果您可以正常启动而无需报告,那应该没有问题。如果您不用担心,则可以在终端进行验证:
以下配置在uwsgi.ini中执行:
找到NGINX配置文件夹,CentOS7的NGINX配置文件在/etc/nginx下。此路径下有一个nginx.conf总配置文件,两个文件夹https://www.shouxicto.com/article/conf.d,https://wwwww.shouxicto.com/article/article/default.d,我们复制复制nginx.conf到conf.d文件夹,并将其命名为nginx.conf(或project name.conf),如下所示(根据中文注释相应的配置):
输入uwsgi.ini文件夹以执行:
在终端执行:
参考资料:
刘江的博客
博客花园
问答;
匿名博客
Django教程
Django文档
empty_xl博客
如果您开发在Windows上开发的Django项目,则需要将其分为三个步骤。
步骤1:在Linux下下载Python的依赖关系软件包并构建Python环境。副本在Windows到Linux下的项目,并从Django开始,并从您自己的服务开始。
步骤2:下载UWSGI模块并编写配置文件以替换Django随附的服务模块。
步骤3:下载nginx软件包并编译并安装。然后创建一个配置文件来配置nginx启动django项目的信息。然后访问它。
Django并发的引入和NGINX高技术解决方案的引入已经结束。我想知道您是否从中找到了所需的信息?如果您想进一步了解此信息,请记住要收集对该网站的关注。