Python项目的服务器部署怎么操作,涉及哪些知识
Admin 2022-06-28 群英技术资讯 571 次浏览
基本概念:
两者之间的区别:
在我们平时搭建一个Python Web项目时,比如Django框架的项目,这时候常见的服务端架构:
接下来针对上文提到Django项目部署架构,聊聊这几个协议在这过程中的作用:
简单来讲,uWSGI也是一个Web服务器,他虽然同时实现了http、uwsgi、wsgi协议,但是更多被作为应用服务器和应用程序之间进行通信。
那么这里就有个疑问了,为什么uWSGI都能直接处理http请求了,还需要Nginx服务器?这样处理有几点原因:
总而言之,Nginx服务器在处理http请求上,都有着uWSGI没有的优势,所以在日常部署环境中,经常会使用到Nginx+uWSGI。
uWSGI有两种安装方式,一种是通过pip安装,一种是通过源码安装。这里就简单介绍pip安装方式,源码安装有兴趣可以私下自己了解。
pip install uwsgi
uWSGI服务器在启动的过程中主要涉及到以下这几个文件,其中uwsgi.sock还会涉及到Nginx相关部署的问题,在Nginx配置的时候回继续展开讲。
(venv) [root@mbb-48 uwsgi]# tree . . |-- uwsgi.ini # uwsgi配置文件 |-- uwsgi.log # uwsgi日志文件 |-- uwsgi.pid # uwsgi运行进程pid |-- uwsgi.sock # uwsgi socket `-- uwsgi.status # uwsgi状态文件
以下配置是自己一个项目中用到的,其中的配置参数都是比较常见通用。
[uwsgi] chdir=/data/Novel/novel_test module=novel_test.wsgi:application home=/data/Novel/venv static-map=/static=/data/Novel/novel_test/static threads=8 http=0.0.0.0:23606 master=true vacuum=true thunder-lock=true uid=root gid=root harakiri=30 post-buffering=4096 socket=%(chdir)/uwsgi/uwsgi.sock stats=%(chdir)/uwsgi/uwsgi.status pidfile=%(chdir)/uwsgi/uwsgi.pid daemonize=%(chdir)/uwsgi/uwsgi.log
配置解析
额外配置
上面介绍了相关常用的配置参数,当设置uWSGI参数后,需要启动指定配置文件,以及有关暂停,重启的动作。
uwsgi --ini uwsgi.ini # 启动uWSGI uwsgi --stop uwsgi.pid # 暂停uWSGI uwsgi --reload uwsgi.pid # 重启uWSGI
uWSGI之一Stats服务器机制,它能将uWSGI状态作为一个JSON对象导出一个socket中,只需要像我们前面配置uWSGI配置文件一样,添加stats选项,跟着一个有效的socket地址接口。
当你配置完毕后,就可以通过客户端连接到指定的socket地址,将会获得一个包含uWSGI内部统计数据的JSON对象。
uwsgi --connect-and-read uwsgi.status
执行完这个命令后,读取的返回的结果是一个json字符串,字符串中包括每个线程的状态,整个应用的负载,版本,监听队列等详细的信息。
uwsgitop查看实时状态
uwsgitop是一个开源的实时监控uWSGI服务器状态的工具,安装也十分简单:
pip install uwsgitop
具体uwsgitop像一个top命令,监听应用程序并且使用socket地址进行调用,查看进程运行状态,运行详细信息:
uwsgitop uwsgi/uwsgi.status uwsgi-2.0.19.1 - Sun Sep 20 15:58:48 2020 - req: 6 - RPS: 0 - lq: 0 - tx: 67.6K node: mbb-48 - cwd: /data/Novel/novel_test - uid: 0 - gid: 0 - masterpid: 15109 WID % PID REQ RPS EXC SIG STATUS AVG RSS VSZ TX ReSpwn HC RunT LastSpwn 1 100.0 15144 6 0 0 0 idle 15ms 0 0 67.6K 1 0 125.449 15:48:08 :2 16.7 - 1 0 - - idle - - - - - :3 16.7 - 1 0 - - idle - - - - - :0 33.3 - 2 0 - - idle - - - - - :1 33.3 - 2 0 - - idle - - - - -
关于uWSGI服务器相关使用就总结到这里,因为在平时工作中会经常接触到,但是由于没有应用到一些高并发的场景,对于uwsgi调优方面没有多少经验,等待以后遇到此类问题再继续总结性能调优方面的问题。同时有关Nginx方面的配置留到下一篇文章继续讲,未完待续。。。。。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
python的is和in有啥不同?很多新手学习python,对于is和in的区别不是很清楚,对此,下面小编就给大家简单的介绍一下python的is和in的区别以及用法,感兴趣的朋友就继续往下看吧。
python中lambda函数怎样使用?python函数有很多,lambda函数也是其中比较基础的一个函数,这篇文章主要分享的是lambda函数用法,下文实例对新手学习lambda函数有一定参考价值,感兴趣的朋友可以了解看看。
内容介绍准备工作全球火山带的分布可视化全球火山带的分布可视化优化地图可视化实战在地图上打上标记也就在前几天,南太平洋岛国汤加发生火山喷发,有专门的专家学者分析,这可能是30年来全球规模最大的一次海底火
局部变量:在函数中定义的变量,作用域是当前函数,只对当前函数起作用。全局变量:在代码开头定义的变量,作用域是整段代码,对整段代码起
这篇文章主要介绍了Python文件读写open函数详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008