原文:
https://note.youdao.com/ynoteshare1/index.html?id=c91446020ebd25b05190799c50ede8e6&type=note
(1)应用环境
mkdir myapp
cd myapp
新建run.py 脚本
from flask import Flask
app = Flask(__name__)
app.route('/')
def index():
return 'hello world':q
if __name__ =='__main__':
app.run()
(2)gunicorn配置
pip install gunicorn
gunicorn -D -w 3 -b 0.0.0.0:8000 run:app
D 表示后台运行
w 表示有3 个 工作线程(感觉有些类似 nginx 的 master-worker 模型)
b 指定ip 和端口
这里采用本机访问, 主要是为了使用nginx 进行代理, 方便管理 ,可以用0.0.0.0来让其他主机访问,但是记得要看后面的防火墙端口,记得开启这里的8000
run表存放 写着全局变量 app 的那个工程文件
在我们的这个工程中, 即包含 init.py 的那个文件
(3)supervisor配置
pip install supervisor
- 进到工程目录,在项目目录添加supervisor的配置文件,
echo_supervisord_conf > supervisord.conf
vi supervisord.conf
添加信息:
[program:myapp] directory =/clh/myapps command =/clh/myapps/myenv/bin/gunicorn -w 4 -b 0.0.0.0:8000 run:app
|
myapp 自己起的项目名
directory运行项目所在的工程文件
command ,gunicorn 的启动命令
supervisord -c supervisor.conf
supervisorctl -c supervisor.conf status
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管理的程序进程
|
(4)nginx配置
apt-get install nginx
ps aux|grep nginx
sudo cp /etc/nginx/sites-available/default default.bak
sudo vi /etc/nginx/sites-available/default
Ctrl + O 保存
Ctrl + X 退出
把配置改为
server { listen 80; server_name 115.159.146.108; # 这是HOST机器的外部域名,用地址也行 location / { proxy_pass http://0.0.0.0:8000; # 这里是指向 gunicorn host 的服务地址 } }
这样启动之后80端口就可以转发到8000端口了
nginx -t
若出现
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
则配置成功
杀nginx进程
重启nginx
sudo service nginx restart
在已经运行了Gunicorn的前提下,在浏览器访问115.159.146.108就会出现Hello World!了
https://clayandmore.github.io/2017/03/19/flask+gunicorn+supervisorn+nginx%E9%A1%B9%E7%9B%AE%E9%83%A8%E7%BD%B2/
flask项目部署小结:
https://gist.github.com/binderclip/f6b6f5ed4d71fa64c7c5
Ubuntu下Supervisor安装、配置和使用:
https://my.oschina.net/u/2396236/blog/1594853