如何部署简单python + flask应用

96
lwhome
0.1 2016.03.12 22:43* 字数 717

这是一篇教使用python和flask框架来部署最基本的后端服务的文章,适用于想用python开发后台程序的同学。阅读这篇文章需要python和flask的基本知识,以及构建后台程序所需要的网络常识。
文章中出现的概念可以看另一篇入门文章。
所需工具:
python3.4
flask
nginx
gunicorn
supervisor

系统环境:
Ubuntu 14.04LTS

我们先写一个最基本的flask应用:

demo.py

from flask import Flask app = Flask(**name**) @app.route('\') def index(): return 'Hello World.'
if __name__ == __main__: app.run()
运行这个py文件,打开浏览器访问127.0.0.1:5000就能看到显示Hello World的页面 .
如果让这个flask引用监听来自公网ip的请求,理论上你跑此程序的机器就相当于一个服务器了,然而这个服务器并不完美,所以我们需要nginx和gunicorn来增加它的功能,让它真刀真枪上生产环境的时候能按要求运行。

flask自带的WSGI框架性能很差劲,只能适用于开发环境调试使用。我们用专业一点的gunicorn(还有很多其他优秀的框架)替代flask自带的WSGI框架。

配置完后,通过命令’/usr/local/bin/gunicorn -b127.0.0.1:5000‘启动应用。打开浏览器访问127.0.0.1:5000,同样能够得到返回页面

然而gunicorn也仅仅是一个python的WSGI框架而已,要让它真正处理来自互联网的各类访问功能还是有点欠缺,这时候就需要用到大名鼎鼎的nginx 服务器来替gunicorn遮风挡雨了。

Ubuntu下安装nginx可以用命令

sudo apt-get install nginx

安装后需要进行下配置:

  1. cd /etc/nginx/sites-available

  2. sudo vi test (test为配置名称,可以根据自己项目进行命名)

  3. test文件的配置为:
    server {
    listen 80; # 监听80端口
    location / {
    proxy_pass http://127.0.0.1:5000; # 代理本机127.0.0.1:5000的服务
    }
    location /static {
    alias /home/ubuntu/myproject/myblog/app/static; # 负载均衡
    }
    }

  4. cd ..

  5. cd sites-enable

  6. sudo ln -s ../sites-available/lwhile . (创建软链接,别漏掉最后的.)

  7. sudo service nginx reload

  8. sudo service nginx restart

这样nginx的基本配置文件就写好了 接下来我们配置进程管理工具supervisor supervisor可以在后面启动你的python进程,这样很方便
1.cd /etc/supervisor/conf.d

2.sudo vi test.conf (test为文件名)

[program:test]
command = /usr/local/bin/gunicorn -b127.0.0.1:5000 /home/ubuntu/myproject/test.py

3.sudo supervisorctl

4.reload

5.start test

如果一切正常,做完这所有步骤之后,现在公网的ip访问你的主机,就可以打开你的flask应用了

python
Web note ad 1