uwsgi+nginx+django部署流程

一.环境准备

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.csdn.net/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


Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值