近期在学习python,这里记录一下自己用的一套python web开发的部署环境Flask+Gunicorn+Gevent+Supervisor+Nginx 。
Flask的部署可以选择独立的wsgi,也可以用uWSGI,FastCGI等。独立容器除了Gunicorn还可以选择Tornado、Gevent来部署。
1)Gunicorn是一个Python WSGI UNIX的HTTP服务器。这是一个预先叉工人模式,从Ruby的独角兽(Unicorn)项目移植。该Gunicorn服务器与各种Web框架兼容,我们只要简单配置执行,轻量级的资源消耗,以及相当迅速。它既支持 eventlet ,也支持 greenlet。部署简单、方便是我选择他的主要原因,另外跟gevent结合之后,性能一点不属于tornado。
2)Tornado 是一个开源的可伸缩的、非阻塞式的 web 服务器和工具集,它驱动了FriendFeed 。因为它使用了 epoll 模型且是非阻塞的,它可以处理数以千计的并发固定连接,这意味着它对实时 web 服务是理想的。
3)Gevent 是一个基于协同程序的 Python 网络库,使用 greenlet 来在 libevent 的事件循环上提供高层的同步 API。
每种方式都有自己的优缺点,建议根据个人喜好和应用场景灵活运用。
部署
每个组件的作用:
1). nginx:高性能Web服务器+负责反向代理;
2). gunicorn:高性能WSGI服务器;
3). gevent:把Python同步代码变成异步协程的库;
4). supervisor:监控服务进程的工具;
1、Flask Gunicorn Gevent 可以用'pip'进行安装。
因为supervisor目前只支持python2,而flask项目已经用python3了,为解决这个冲突,我安装了虚拟环境
➜ ~ python3 -m venv venv
➜ ~ source venv/bin/activate
(venv) ➜ ~ pip install gunicorn gevent flask
而centos默认的python上python,虚拟环境却可以用python3,这个很棒。
接下来运行一下试试,先写个最小应用
(venv) ➜ ~ vim manage.py
# -