如何部署简单python + flask应用

 我来答
从空去听8
2017-12-09 · TA获得超过7439个赞
知道大有可为答主
回答量:6907
采纳率:93%
帮助的人:5500万
展开全部

这是一篇教使用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

安装后需要进行下配置:

  • cd /etc/nginx/sites-available

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

  • 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; # 负载均衡
    }
    }

  • cd ..

  • cd sites-enable

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

  • sudo service nginx reload

  • 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应用了



推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式