nginx从0.8.4开始内建支援uwsgi协议,uwsgi协议非常简单,一个4个位元组header+一个body,body可以是很多协议的
包 , 比如说,cgi等(通过header里面栏位标示),我曾经做个一个小规模的效能对比测试,结果表明 , uwsgi和fastcgi相比,效能
没有太明显的优势,也可能是资料集较小的原因
uwsgi的特点在于自带的程序控制程式.它是用c语言编写,使用natvie函式,其实和spawn-fcgi/php-fpm类似 。所以uwsgi可以支援多种应用框架,包括(python,lua,ruby,erlang,go)等等
uwsgi协议
web server内建支援协议模组
application伺服器协议支援模组
程序控制程式
Gunicorn,和uwsgi类似的工具,从rails的部署工具(Unicorn)移植过来的 。但是它使用的协议是 WSGI,全称是Python Web Server Gateway Interface , 这是python2.5时定义的官方标准(PEP 333 ),根红苗正,而且部署比较简单,:gunicorn./ 上有详细教程
mod_wsgi,apache的一个module , 也是支援WSGI协议,:code.google./p/modwsgi/
如何部署简单python + flask应用
python是一款应用非常广泛的指令码程式语言,谷歌公司的网页就是用python编写 。python在生物资讯、统计、网页制作、计算等多个领域都体现出了强大的功能 。python和其他指令码语言如java、R、Perl 一样,都可以直接在命令列里执行指令码程式 。
所需工具:
python3.4
flask
nginx
gunicorn
supervisor
系统环境:
Ubuntu 14.04LTS
我们先写一个最基本的flask应用:
demo.py
from flask import Flask
app = Flask(**name**)
@app.route('\')
def index():
return 'Hello World.'
if __name__ == __main__:
app.run()
执行这个py档案,开启浏览器访问127.0.0.1:5000就能看到显示Hello World的页面 .
如果让这个flask引用监听来自公网ip的请求,理论上你跑此程式的机器就相当于一个伺服器了,然而这个伺服器并不完美,所以我们需要nginx和gunicorn来增加它的功能,让它真刀真枪上生产环境的时候能按要求执行 。
flask自带的WSGI框架效能很差劲,只能适用于开发环境除错使用 。我们用专业一点的gunicorn(还有很多其他优秀的框架)替代flask自带的WSGI框架 。
配置完后 , 通过命令’/usr/local/bin/gunicorn -b127.0.0.1:5000‘启动应用 。开启浏览器访问127.0.0.1:5000,同样能够得到返回页面
然而gunicorn也仅仅是一个python的WSGI框架而已,要让它真正处理来自网际网路的各类访问功能还是有点欠缺,这时候就需要用到大名鼎鼎的nginx 伺服器来替gunicorn遮风挡雨了 。
Ubuntu下安装nginx可以用命令
sudo apt-get install nginx
安装后需要进行下配置:
cd /etc/nginx/sites-available
sudo vi test (test为配置名称 , 可以根据自己专案进行命名)
test档案的配置为:
server {
listen 80; # 监听80埠
location / {
proxy_pass :127.0.0.1:5000; # 代理本机127.0.0.1:5000的服务
}
location /static {
alias /home/ubuntu/myproject/myblog/app/static; # 负载均衡
}
}
cd ..
cd sites-enable
sudo ln -s ../sites-available/lwhile . (建立软连结 , 别漏掉最后的.)
sudo service nginx reload
sudo service nginx restart
这样nginx的基本配置档案就写好了 接下来我们配置程序管理工具supervisor supervisor可以在后面启动你的python程序,这样很方便
1.cd /etc/supervisor/conf.d
2.sudo vi test.conf (test为档名)
[program:test]
mand = /usr/local/bin/gunicorn -b127.0.0.1:5000 /home/ubuntu/myproject/test.py
3.sudo supervisorctl
4.reload
5.start test
推荐阅读
- tp无线路由器怎么安装,tp的路由器怎么装
- 绘制心形的python代码,用python画心形
- flutter是用js写的吗,flutter sms
- 赚钱最大的直播平台,赚钱最大的直播平台是什么
- python大小写转换函数 python大小写转换程序
- 贝塞尔曲线的python代码,贝塞尔曲线 matlab
- 射击游戏猫猫,4399猫射箭
- 电信宽带访问国外服务器慢,电信访问国外网站慢
- quic协议go语言 quit协议