CentOS云服务器部署Python Flask Virtual
2017-07-01 本文已影响0人
stefanJi
使用:
- Python 2.7
- Flask
- nginx
- gunicorn
easy_install python-dev
yum install python-pip
yum install python-virtualenv
yum install nginx
mkdir /var/www/myFlask
sudo chmod 777 /var/www/myFlask
pip install gunicorn
pip install Flask
index.py
1 from flask import Flask
2 from jinja2 import Environment, PackageLoader
3 import time
4
5 env = Environment(loader=PackageLoader('index', 'templates'))
6 app = Flask(__name__)
7
8
9 @app.route('/')
10 def index():
11 template = env.get_template('index.html')
12 t = time.time()
13 f = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
14 return template.render(time=t, format=f)
15
16
17 if __name__ == '__main__':
18 app.run()
/etc/nginx/site-avalidable/default
server{
listen 80;
server_name 119.29.158.145;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
启动gunicorn:
gunicorn index:app -w 4 -b 0.0.0.0:8000
访问:<ip address>:8000
2. 配置super
- 安装supervisor
-
cd /etc
将supervisor的模板写入一个新的配置,执行:
echo_supervisord_conf > my_flask_web.conf
- 编辑新的配置,填写自己的flask web app目录
[program:flask_apps]
command=gunicorn index:app -w 4 -b localhost:8000
directory=/var/www/flask_web
autostart=true
autorestart=true
user=root
这里配置了:
* 程序名
* 执行的命令(启动gunicorn)
* 程序的目录
* 自动启动
* 自动重启
* 启动的用户
- 最后执行
supervisord -c my_flask_web.conf
就已经启动gunicorn进程了
- 当kill掉某个进程时,会自动重启进程。
- 现在部署都是结合
virtualenv
或者zc.buildout
构建一个独立的Python环境。而不是在服务器上直接pip把依赖安装到全局。
当使用这些工具时,supervisor
里的command
命令就需要写上环境的绝对路径。
[program:flask_apps]
command=/home/web/flask_apps/venv/bin/gunicorn run:app -w 4 -b localhost:8000
directory=/home/web/flask_apps
autostart=true
autorestart=true
user=root