在开发时,我们使用flask run
命令启动的开发服务器是werkzeug
提供的,但是这种方式目的是为了开发,不能很好的扩展,不适合生产部署。
生产部署时,我们需要一个更强健,性能更高的WSGI
服务器(关于WSGI,可参考WSGI到底是什么 )
这里我是使用uWSGI
+ Nginx
进行部署,系统为centos7。
创建虚拟环境
安装python虚拟环境包
1 | pip install virtualenv |
创建虚拟环境
1 | virtualenv /root/.virtualenvs/flask_test |
激活环境
1 | source /root/.virtualenvs/flask_test/bin/activate |
之后就可以正常pip安装需要的库
退出环境
1 | deactivate |
删除环境(直接删除虚拟环境文件夹)
1 | rm -rf /root/.virtualenvs/flask_test |
uWSGI
uWSGI
是一个软件应用程序,“旨在开发用于构建托管服务的完整堆栈”。它以 Web 服务器网关接口的名称命名,这是该项目支持的第一个插件。uWSGI
通常用于与诸如 Cherokee
和 Nginx
之类的 Web 服务器一起为 Python Web
应用程序提供服务,后者直接支持 uWSGI
的本机 uwsgi
协议。
安装uwsgi
1 | pip install uwsgi |
在项目的目录创建一个uwsgi的配置文件uwsgi.ini
1 | [uwsgi] |
使用配置文件运行
1 | uwsgi --ini uwsgi.ini |
停止和重启
一般会设置多个进程,那么可以在配置文件中添加 master
选项:
1 | master = true |
这样一来,除了配置中设置的进程数,还将另外启动一个 master
进程,用来管理其他进程。
这时,
再添加一个pidfile
选项,使用pidfile来操作uwsgi
1 | pidfile = /root/flask_test/uwsgi/uwsgi.pid |
之后可以:
1 | uwsgi --stop /root/flask_test/uwsgi/uwsgi.pid #停止uwsgi |
配置nginx
一个简单的配置:
1 | server { |
可以将其命名为.conf
的文件放到/etc/nginx/conf/
目录下,方便管理。
之后重启 nginx 即可