uwsgi+nginx+django部署流程

本文详细介绍如何使用Django、uWSGI及Nginx部署Web应用,包括环境准备、请求流程解析及各组件间的交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.环境准备

Linux主机1

Python环境

已安装django模块

二.储备知识

·        django

一个基于python的开源web框架,请确保自己熟悉它的框架目录结构。

·        uWSGI

一个基于自有的uwsgi协议、wsgi协议和http服务协议的web网关

·        nginx

常用高性能代理服务器

·        wsgi.py

django项目携带的一个wsgi接口文件

如果项目名叫hello的话,此文件就位于[hello/hello/wsgi.py]

.请求流程

首先客户端请求服务资源,

nginx作为直接对外的服务接口,接收到客户端发送过来的http请求,会解包、分析,

如果是静态文件请求就根据nginx配置的静态文件目录,返回请求的资源,

如果是动态的请求,nginx就通过配置文件,将请求传递给uWSGIuWSGI 将接收到的包进行处理,并转发给wsgi

wsgi根据请求调用django工程的某个文件或函数,处理完后django将返回值交给wsgiwsgi将返回值进行打包,转发给uWSGI

uWSGI接收后转发给nginx,nginx最终将返回值返回给客户端(如浏览器)

*:不同的组件之间传递信息涉及到数据格式和协议的转换

四.安装

4.1 django项目测试

1.请保证已经安装了django模块,具体测试方法为:


如果导入成功,则不会报错。

2.找到自己django项目的路径,然后执行命令:pythonmanage.py runserver ip:端口


结果如下,说明项目已经启动


使用浏览器浏览


我虚拟机的地址为19.168.164.137,使用8001端口,后面的/watch/test是在url配置的,详情可见https://blog.youkuaiyun.com/weixin_38942791/article/details/80673872。这个结果就说明,django运行正常啦。

4.2 uwsgi+django结合

4.2.1.安装uwsgi

安装命令如下:



我已经安装好了,所以报这个。这台虚拟机使用的是python2.7,我本人一般在python3上码代码,这里不用纠结2/3,主要是做一个测试,把环境跑起来。

4.2.2.配置uwsgi

在项目下面新建一个文件叫uwsgi.ini,然后添加如下信息:

[uwsgi]
# 项目目录
chdir=/root/hello/
# 指定项目的application
module=hello.wsgi:application
# 指定sock的文件路径        
socket=/root/hello/uwsgi.sock
# 进程个数        
workers=5
pidfile=/root/hello/uwsgi.pid
# 指定IP端口        
http=192.168.164.137:9000
# 指定静态文件
static-map=/static=/root/hello/static
# 启动uwsgi的用户名和用户组
uid=root
gid=root
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 序列化接受的内容,如果可能的话
thunder-lock=true
# 启用线程
enable-threads=true
# 设置自中断时间
harakiri=30
# 设置缓冲
post-buffering=4096
# 设置日志目录
daemonize = /root/hello/uwsgi.log

这里我配置了192.168.164.137:9000,访问的时候可以访问这个。

4.2.3 运行uwsgi+django

依然是运行测试项目,运行命令为:

uwsgi  --ini uwsgi.ini

 浏览器截图如下:



目前已经成功的完成了uwsgi+django的方式了。Nginx的出现是为了提供更好的网页性能,更安全的访问网页,但他不是必须的。Uwsgi处理动态请求效果较好,处理静态请求nginx性能较高。因此下面将增加nginx

4.3 nginx+uwsgi+django结合

4.3.1 安装运行nginx

可通过yum方式安装:

yum -y install nginx

安装好后,执行:

/etc/init.d/nginx start

确保Nginx已经正常运行。


4.3.2 nginx+uwsgi+django

1. 创建配置文件hello.conf。名字无所谓,我的这个项目叫hello,起名为hello.conf

里面的内容为:


upstream django {
    server unix:///root/hello/uwsgi.sock; # for a file socket
    #server 127.0.0.1:8001; # for a web port socket (we'll use this first)
}
server 
{ # 这个server标识我要配置了
listen 9090; # 我要监听那个端口
server_name 192.168.164.137; # 你访问的路径前面的url名称 
access_log /var/log/nginx/access.log; # Nginx日志配置
charset utf-8; # Nginx编码
gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/jso
n image/jpeg image/gif image/png application/octet-stream; # 支持压缩的类型
error_page 404 /404.html; # 错误页面
error_page 500 502 503 504 /50x.html; # 错误页面
# 指定项目路径uwsgi
location / { # 这个location就和咱们Django的url(r'^admin/', admin.site.urls),
include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的
uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间
uwsgi_pass unix:///root/hello/uwsgi.sock; # 指定uwsgi的sock文件所有动态请求就会直接丢给他
}
# 指定静态文件路径
location /static/ {
alias /root/hello/static/;
index index.html index.htm;
}
}

这个我是参考别人的。地址:端口是192.168.164.137:9090。参数具体干啥的,里面大部分已经写得很清楚了。

放在/etc/nginx/sites-available/目录下,其实这个放在自己的项目主目录下也挺好的,方便配置管理。放完之后最重要的一步是在/etc/nginx/sites-enabled/目录下建立一个软链接:ln –s  hello.conf 刚刚配置文件的绝对路径。

截图如下:



2.重新启动nginx

3.把项目中的uwsgi.ini中,图中这一行给注释掉:

在执行uwsgi –ini uwsgi.ini启动项目。如果不注释掉,如果nginx也在用这个端口,将会导致程序两者中后者起不来。启动项目之后,访问网页

显示正常,以上三次运行我分别使用了三个端口号,但运行项目都是同一个。

这时我们可以查看nginx日志。

没问题。至此整个项目搭建完毕。

主要参考的两篇博客,感谢分享。

1. https://www.cnblogs.com/Xjng/p/aa4dd23918359c6414d54e4b972e9081.html

2. https://www.cnblogs.com/chenice/p/6921727.html


内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值