http://flask.pocoo.org/docs/0.12/deploying/wsgi-standalone/

Gunicorn

Gunicorn Green Unicorn 是一个 UNIX 下的 WSGI HTTP 服务器,它是一个 移植自 Ruby 的 Unicorn 项目的 pre-fork worker 模型。它既支持 eventlet , 也支持 greenlet 。在 Gunicorn 上运行 Flask 应用非常简单:

gunicorn myproject:app

Gunicorn 提供许多命令行参数,可以使用 gunicorn -h 来获得帮助。下面的例子 使用 4 worker 进程( -w 4 )来运行 Flask 应用,绑定到 localhost 的 4000 端口( -b 127.0.0.1:4000 ):

$ gunicorn -w 4 -b 127.0.0.1:4000 myproject:app

想要结束 gunicorn 只需执行 pkill gunicorn,有时候还的 ps 找到 pid 进程号才能 kill。可是这对于一个开发来说,太过于繁琐,因此出现了另外一个神器—supervisor,一个专门用来管理进程的工具,还可以管理系统的工具进程。

$ pip install gunicorn 				# 安装gunicorn
$ pip install supervisor 			# 安装supervisor
$ echo_supervisord_conf > supervisor.conf 	# 生成 supervisor 默认配置文件
$ vim supervisor.conf 				# 修改 supervisor 配置文件,添加 gunicorn 进程管理
; 在最后面添加
[program:edoorai]
command=/home/iosdevlog/.virtualenvs/xxx/bin/gunicorn -w 4 -b 0.0.0.0:4000 edoorai:app 	; supervisor启动命令
directory=/home/iosdevlog/code/xxx/xxx							; 项目的文件夹路径
startsecs=0                                                                             ; 启动时间
stopwaitsecs=0                                                                          ; 终止等待时间
autostart=true                                    					; 是否自动启动
autorestart=false                                                                       ; 是否自动重启
stdout_logfile=/home/iosdevlog/code/edoorai/log/gunicorn.log                           	; log 日志
stderr_logfile=/home/iosdevlog/code/edoorai/log/gunicorn.err                           	; 错误日志

[inet_http_server]         								; inet (TCP) server disabled by default / 启用supervisor web的管理界面
port=*:9001        									; ip_address:port specifier, *:port for all iface / 公网访问
username=setting_username									; default is no username (open server)
password=setting_password									; default is no password (open server)

supervisor的基本使用命令

$ supervisord -c supervisor.conf                             # 通过配置文件启动supervisor
$ supervisorctl -c supervisor.conf status                    # 察看supervisor的状态
$ supervisorctl -c supervisor.conf reload                    # 重新载入 配置文件
$ supervisorctl -c supervisor.conf start [all]|[appname]     # 启动指定/所有 supervisor管理的程序进程
$ supervisorctl -c supervisor.conf stop [all]|[appname]      # 关闭指定/所有 supervisor管理的程序进程

把启动supervisor 放入脚本文件中。

$ cat start.sh
#!/bin/bash

supervisord -c supervisor.conf

启动脚本后就可以通过ip:port ip地址加上端口访问了。