安装flask和gunicorn,supervisor
pip install flask,gunicorn,supervisor
启动一个简单的flask程序:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'hello world'
if __name__ == '__main__':
app.debug = True
app.run()
运行它。
python3 myapp.py
但 flask 自带的这个服务器功能非常弱,仅供开发调试时候使用,我们需要一个高效能的服务器 Gunicorn 来运行我们的 flask 项目。
用一下命令(使用到gunicorn):
/usr/local/bin/gunicorn -w 4 -b 0.0.0.0:5000 myapp:app
-
/usr/local/bin/gunicorn
: gunicorn 的安装路径,如果是在虚拟环境中运行的话该路径需要适当修改。 -
-w 4
: workers ,是开的进程数量 -
-b 0.0.0.0:5000
: bind,绑定 IP 和端口,0.0.0.0
让公网能够访问。
使用supervisor管理进程
supervisor 默认的配置文件是放在 /etc/supervisor
路径中的,里面会有一个默认配置文件 supervisord.conf
和一个文件夹 conf.d
,该文件夹用来放置单独某个进程的配置文件。
打开 supervisord.conf
我们只看最下面一行:
[include]
files = /etc/supervisor/conf.d/*.conf
这里定义了 supervisor 会读取 /etc/supervisor/conf.d/
路径下的 conf 格式的配置文件。(根据实际的路径查找)
我们进入 conf.d
路径,并新建一个配置文件 myapp.conf
:
cd conf.d
touch myapp.conf
编辑 myapp.conf
写入以下配置:
[program:myapp]
command=/usr/local/bin/gunicorn -w 4 -b 0.0.0.0:5000 myapp:app
directory=/root/myproject
autostart=true
autorestart=true
command
:启动命令,和上例启动 gunicorn 命令是一样的directory
:程序的启动目录,也就是myapp.py
放在哪autostart
:自动开启autorestart
:进程挂了之后自动重启
现在就可以通过 supervisor 来管理 gunicorn 并运行 flask 项目了。
使用 supervisorctl
命令进入 supervisor 管理界面,首先更新配置:
> update
因为我们设置了自动启动,这时候项目已经启动了,hello world 页面能够正常工作了。
supervisor 还有以下常用命令:
> status # 查看程序状态
> stop usercenter # 关闭 usercenter 程序
> start usercenter # 启动 usercenter 程序
> restart usercenter # 重启 usercenter 程序
> reread # 读取有更新(增加)的配置文件,不会启动新添加的程序
> update # 重启配置文件修改过的程序
配置文件修改后也可以重启superviosr,并重读配置文件
supervisorctl stop superset
supervisorctl remove superset
supervisorctl reread
supervisorctl add superset