Python flask网站部署总结

先开一贴,有空来总结下前段时间的网站部署情况。此次部署采用Gunicorn + Nginx + supervisor的组合在VPS环境中部署flask网站应用。

Ubuntu环境准备##

准备python环境

$ sudo apt-get update
$ sudo apt-get install python-dev python-pip python-virtualenv

然后安装nginx

$ sudo apt-get install nginx

本网站在/home/jack/目录下建立一个me的文件夹(我是直接git clone,此处说明下,克隆到哪,直接切换到相应的目录Clone即可

Gunicorn##

Gunicorn 绿色独角兽 是一个Python WSGI UNIX的HTTP服务器。这是一个pre-fork worker的模型,从Ruby的独角兽(Unicorn )项目移植。该Gunicorn服务器大致与各种Web框架兼容,只需非常简单的执行,轻量级的资源消耗,以及相当迅速。

安装Gunicorn
Gunicorn需要安装在相应的virtualenv环境下,安装前需要激活venv(在me文件夹下,执行 source venv/bin/actiavte)。

(venv) $ pip install gunicorn

运行Gunicorn
cd到你的项目根目录下,此处为/me文件夹下:
(venv) $ gunicorn -w 4 -b 0.0.0.0:8000 wsgi:application
这使得服务器可以被公网IP访问
注意:此处wsgi是一个flask实例引导的py文件,appliancation即创建的flask实例。此处和 Flask 项目中常用的 manage.py 引导脚本是没有半点毛关系,需要做的是引入manage.py的flask实例。
拿本网站举个例子吧, 很简单的说:

#wsgi.py

from index import application

if __name__ == '__main__':
    application.run()

Nginx 的配置##

关于Nginx后续再补充,直接编辑Nginx的默认配置文件。(/etc/nginx/site-avalidable/default)

建议先备份default文件
sudo cp /etc/nginx/site-avalidable/default /etc/nginx/sites-available/default.bak

server {
    listen 80;
    server_name example.org; # 这是HOST机器的外部域名,用地址也行(我直接填的IP地址)

    location / {
        proxy_pass http://127.0.0.1:8000; # 这里是指向 gunicorn host 的服务地址
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

  }

完成配置Ngnix后需要重启ngnix服务!

sudo service nginx restart

Gunicorn作为服务运行##

这里有两种方法实现

  1. 配置成linux服务随机启动
  2. 使用supervisor管理gunicorn
    目前使用supervisor配置成功,后面有时间继续更新

这已经是我第一次补充了......................
首先安装supervisor

pip install supervisor

配置supervisor
/etc/supervisor/下有两个文件:文件夹,conf.d;文件supervisord.conf
supersord.conf文件保持不动,尤其include内的内容,这引导接下来的配置的内容。

conf.d内创建项目的配置文件:me.conf

重新载入配置文件,并启动me

$ sudo supervisorctl reload  
$ sudo supervisorctl start me

查看运行状态

$ sudo supervisorctl status 

参考####

  1. http://edward.io/blog/flask-gunicorn-nginx.html
  2. http://www.cnblogs.com/Ray-liang/p/4837850.html
  3. http://www.jianshu.com/p/be9dd421fb8d
  4. http://www.lxway.com/49621091.htm
  5. https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-14-04
  6. http://beiyuu.com/vps-config-python-vitrualenv-flask-gunicorn-supervisor-nginx/
  7. http://defshine.github.io/deploy-flask-app-on-do.html
  8. http://www.onurguzel.com/how-to-run-flask-applications-with-nginx-using-gunicorn/
  9. https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-14-04
posted @ 2016-04-16 18:37  Chris*Chen  阅读(3301)  评论(0编辑  收藏  举报