CentOS云服务器部署Python Flask VirtualEnv

使用:

  • 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

访问::8000


2. 配置super

  1. 安装supervisor
  2. cd /etc
    将supervisor的模板写入一个新的配置,执行:
echo_supervisord_conf > my_flask_web.conf
  1. 编辑新的配置,填写自己的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)
* 程序的目录
* 自动启动
* 自动重启
* 启动的用户

  1. 最后执行
 supervisord -c my_flask_web.conf

就已经启动gunicorn进程了


  1. 当kill掉某个进程时,会自动重启进程。
  1. 现在部署都是结合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

你可能感兴趣的:(CentOS云服务器部署Python Flask VirtualEnv)