当前位置: 首页 > news >正文

python 服务器_我的Python_WEB服务器简单配置

用Python语言配置WEB服务器不多见,但也不是很罕见,必经Python语言太"优美"了。

早期我的WEB服务器配置为Nginx+uWSGI+app.py(bottle)。uWSGI号称比FastCGI还要快,于是我就采用了uWSGI,uWSGI"大而全",从上到下什么都管,功能非常之多。

052acfa211d232bf3f531bd4f0a323a7.png

直到有一天,我突然意识到uWSGI可能"太大"了。早期WEB服务器多以静态服务为主,动态服务是后来加的,所以这动态应用服务器的物理地址可能与静态网页服务器不在一起,所以需要一个功能完备的动态服务器来专门运行Python应用或其他应用。uWSGI即是这样的存在。

但是随着计算机硬件功能的不断增强,实际上现在大多数的网站都是动态网站,也即伪静态网站。所以在确保安全的情况下,"大而全"显得很臃肿。

现在我的WEB服务器配置为Nginx+supervisor+gunicorn+app.py(bottle)。

3b1172ac580eb9c2e9ec2f24cf564f47.png

Supervisor是用Python写的一个进程管理工具,用来控制进程,运行在类Unix系统上,它可以使进程以daemon方式运行,并且一直监控进程,在意外退出时能自动重启进程。

d52e3f2c6585e86ffddec6982c30303f.png

Gunicorn是一个类unix上被广泛使用的高性能的Python WSGI UNIX HTTP Server。和大多数的web框架兼容,并具有实现简单,轻量级,高性能等特点。

我的服务器搭建思路是前后分离耦合。

前端用Nginx/Lighttpd做静态资源网站,同时将需要的url映射到服务器内网,充分发挥静态服务器的负载均衡功能。Nginx服务器自带支持WSGI协议的模块,调用Python_WEB协议非常简单。

8521f840509e1626083f98e0641f3cf1.png
0587e2834e688a730fb2c17418bc03f8.png

以上是nginx.conf内容,至于Virtual Host Configs内配置,我就不粘上来了。

Url映射相比于Apache/IIS的mod_php的api调用模式,耦合度比较低,但是灵活性比较大,因为url映射的对象不一定是Python_web应用,也可以是php_web应用,也可以是Apache服务器等等。

4a5e905bc448f16dbaaa5757287d836c.png
4840a2d2111afa32914b48e100e0bd83.png

后端用supervisor开python应用,这样做的好处是你可能开非常多的python应用,有的是爬虫应用,有的是web应用,有的是定时任务应用。用supervisor开起来非常容易。

我的Python_WEB应用一般都会在外面套一个Bottle框架,自己只需要专心自己的业务即可。

4e849f5e4b27c258b4f21db04661ad75.png

Bottle是一个类Flask的单文件WEB框架,支持WSGI,无论是本地还是远端,复制即安装,省时省心。

58b4cc9f64fc0d67b8262886917ed081.png
0b1f11bfa5cbe771b48a7866968dff85.png

话说Python在Windows本地调试代码可能比PHP小巧来的快,Windows下调试通过的代码在Linux下也行?

相关文章:

  • 7 安装_python3.7安装教程
  • GMail Drive shell --Windows上的GmailFS
  • qt 自定义控件_Qt编写自定义控件47-面板区域控件
  • 成龙《新警察故事》观后
  • springcloud 消息队列_Apache RocketMQ 消息队列部署与可视化界面安装
  • 字符集问题的初步探讨(六)-----乱码的产生
  • 八进制的正则表达式_shell study18day正则表达式一
  • Skype豪赌VoIP 电话革命蓄势待发--Skype通话质量还不错哦!
  • python传递整形数组_python接口自动化(二十九)get请求传array数组
  • python 进程间通信效率_python之并发编程-进程之间的通信
  • 戴尔:召回440万个笔记本电源适配器---看看你的是否在此之列?
  • python 决策树 字符型_[4] python: 决策树
  • 一点感悟
  • python删除过期文件_python删除过期文件的方法
  • swift 组件化_Swift + RxSwift MVVM 模块化项目实践
  • hexo+github搭建个人博客
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 30秒的PHP代码片段(1)数组 - Array
  • C# 免费离线人脸识别 2.0 Demo
  • JavaScript HTML DOM
  • javascript 总结(常用工具类的封装)
  • java多线程
  • node.js
  • oschina
  • PhantomJS 安装
  • PHP 的 SAPI 是个什么东西
  • PHP那些事儿
  • QQ浏览器x5内核的兼容性问题
  • Redis 中的布隆过滤器
  • redis学习笔记(三):列表、集合、有序集合
  • Spring框架之我见(三)——IOC、AOP
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 利用DataURL技术在网页上显示图片
  • 让你的分享飞起来——极光推出社会化分享组件
  • 入口文件开始,分析Vue源码实现
  • 微信开放平台全网发布【失败】的几点排查方法
  • 一个JAVA程序员成长之路分享
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #git 撤消对文件的更改
  • (145)光线追踪距离场柔和阴影
  • (70min)字节暑假实习二面(已挂)
  • (Java数据结构)ArrayList
  • (论文阅读30/100)Convolutional Pose Machines
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (循环依赖问题)学习spring的第九天
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (已解决)什么是vue导航守卫
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)人的集合论——移山之道
  • ***测试-HTTP方法
  • .Net - 类的介绍
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划