• 全国 [切换]
  • 二维码
    养老服务网

    手机WAP版

    手机也能找商机,信息同步6大终端平台!

    微信小程序

    微信公众号

    当前位置: 首页 » 行业新闻 » 热点新闻 » 正文

    flask服务器部署全流程

    放大字体  缩小字体 发布日期:2020-01-30 04:29:31   浏览次数:1189  发布人:c958****  IP:117.173.23.***  评论:0
    导读

    开始前的逼逼赖赖: 本人前端,在学校学过点PHP,用原生PHP写过接口,写了很多重复代码。后尝试学习thinkPHP,没学下去。0123CD3B.jpg之后接触了Python,感觉Python语法还挺简洁的,又看了看Python的后端框架,选中了flask,或许flask不是主流,但管他呢,自己用的舒服就行了。flask或许确实有点小众了,网上没多少教程,很多东西还是得靠自己摸索。我为了学习规范

    开始前的逼逼赖赖:

    本人前端,在学校学过点PHP,用原生PHP写过接口,写了很多重复代码。后尝试学习thinkPHP,没学下去。





    0123CD3B.jpg


    之后接触了Python,感觉Python语法还挺简洁的,又看了看Python的后端框架,选中了flask,或许flask不是主流,但管他呢,自己用的舒服就行了。

    flask或许确实有点小众了,网上没多少教程,很多东西还是得靠自己摸索。我为了学习规范一点的代码,跑到Gitee上找一些成熟的项目看源码。

    一路摸索过来踩了无数雷,所以想留下一点教程帮助后来的人吧。


    正文:

    部署flask项目网上其实也有一些教程,我也尝试过很多不同的方法,主要就是两种方法:

    • 常规方法,把项目搬到服务器上,安装环境,使用uWSGI或gunicorn启动项目,这里使用的就是这种方法。
    • 懒人方法,把项目搬到服务器上,生成环境配置清单文件,使用宝塔的Python项目管理器一键部署。

    宝塔的一键部署我也试过(毕竟是懒人,能一键部署谁不想试试呢~)。不过要说的是,体验极差,极不推荐。一键部署虽然简单安逸,但bug极多,而且没有log,宝塔的log只在项目启动的时候有输出,项目运行后就消无声息了,这意味着一旦报错连报错提示都没有。更别说一些莫名其妙的bug,我尝试了很久最后还是放弃了。不过bug只是暂时的,但愿宝塔能越做越好,让每个用户都能真正地一键部署吧。

    所以这里是教大家,使用一种尽可能 简单便捷、少报错、方便管理 的方式部署flask项目。所以各位懒人,如果真的想少花点时间,少花点精力,建议使用以下看起来有点复杂方法,千万不要轻易尝试宝塔一键部署。




    开心

    首先要同步代码到云端,这里使用Pycharm同步代码

    我用的是pycharm2021.3.1,最好使用比较新的版本,老版本不支持一键生成flask项目,SSH也是较新版本才有的功能。

    • 点击tools->Deployment->Configuration



    设置

    • 配置服务器的公网ip,端口号一般是22,可以在宝塔的安全里看到:



    ssh 端口




    image.png

    上面这个框框,点SSH configuration右边的三个点填写ssh配置,需要输入账号密码


    ssh config





    image.png

    • 再配置项目在服务器中的位置,以下配置项目将更新到该指定路径 /tmp/pycharn_project_30



      配置项目路径

    • 配置好后可以点击菜单tools->Deployment->Upload to ...更新当前打开文件的代码
      Upload All Opened Files to ...是更新所有文件



      image.png


    配置云端的Python环境

    将项目上传到服务器后,由于服务器没有Python的环境,所以通过以下方式为服务器安装环境。

    • 点击settings->project



    image.png





    image.png

    • 点击Python版本右边的设置按钮,点add,在弹出来的窗口左边选ssh,填写服务器公网IP和端口,点Next



      image.png




    image.png

    • 配置好后变成这样:



      image.png

    这里可以不应用,在这里为服务器安装Python版本和插件就行了,安装了Python后在服务器也可以使用pip安装插件,但大概率会出现报错,而且无法更新到最新版本(亲身经历)。在这里可以轻松地安装和管理插件。

    • 点击左上角的加号安装插件。




      image.png

    • 上方输入插件名,就会显示插件的最新版本,一键安装




      image.png

    • 这里会显示当前版本和最新版本,三角箭头表示可以升级。




      image.png


    配置好服务器环境后,就要运行项目了

    其实配置好服务器环境后,可以在项目根目录下启动终端,像在本地运行项目一样输入python app.py启动项目,但会打印一个警告:




    image.png


    翻译过来就是这是一个开发服务器。不要在生产部署中使用它。
    百度之后,说说我的理解:
    flask本身的服务器容器性能非常弱,记住是非常,只能在本地开发用用,不推荐在生产环境下使用,注意这只是个警告而不是报错,实际还可以用用。我自己测试过,代码写一点简单的逻辑还可以用,稍微复杂一点,验证了一下token就芭比Q了,直接报超时。所以还是非常有必要使用第三方的容器提升一下性能的。

    目前有两大独立WSGI容器,uWSGI 和 gunicorn

    这里只讲如何使用gunicorn,感兴趣的可以看看这篇文章:https://zhuanlan.zhihu.com/p/50857407


    使用gunicorn运行flask项目

    • 首先打开终端安装gunicorn
      老配方

    pip install gunicorn

    安装完成可以使用-h命令查看帮助

    gunicorn -h

    • 直接运行项目gunicorn 启动文件名:flask实例名
      此处app:app中,第一个app为flask项目实例所在的包(就是启动文件app.py),第二个app为生成的flask项目实例(就是你app.py里定义的flask实例)。
      flask实例:

    app = Flask(__name__)

    所以我这里是:

    gunicorn app:app

    • gunicorn默认的host是127.0.0.1也就是本地,我试了一下运行后,访问不了。也就需要手动改一下配置。有两种方法,个人感觉都挺扯淡的。
    • 一种是直接上命令,使用-b host:port

    gunicorn -b 123.456.7.8:5000 app:app

    这样就直接运行了,下次运行还得重新输入host:port




    无语

    • 还有一种方法,首先手动创建一个配置文件gunicorn_config.py,其实名字随便取,然后在文件内输入私网ip地址加端口,注意端口号要在安全组放行。

    bind = '123.0.2.3:8000'

    更多的配置可以看这篇文章:
    https://blog.csdn.net/u012856866/article/details/119384985

    注意一定要是私网ip,不能使用公网,不知道私网可以看控制台,这里是阿里云的控制台




    image.png

    然后就可以输入命令,让gunicorn根据配置文件启动gunicorn -c 文件名.py 启动文件名:实例名:

    gunicorn -c gunicorn_config.py app:app

    而然,每次启动都还是要敲一遍文件名,(为什么不能让配置永远生效!!!),所以我建议各位,配置文件名越短越好,比如gun.py、conf.py、a.py... 简短的名字能一定程度上少敲一点代码。

    如果运行后一直重复连接,可以换个端口,注意安全组要放行,配置要使用私网ip,访问要使用公网ip,其他应该没什么要注意的了。

    这样就是ip无效或端口未放行导致连接不上:




    image.png

    最终运行成功效果:






    至此项目运行成功,圆满结束

    谢谢大家




    image.png




    05745415.gif

    不推荐电脑端访问(用户少)
    请微信扫一扫,查看完整信息(记得微信收藏)
     
    (文/匿名(若涉版权问题请联系我们核实发布者) / 非法信息举报 / 删稿)
    打赏
    免责声明
    • 
    本文为昵称为 c958**** 发布的作品,本文仅代表发布者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,发布者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们154208694@qq.com删除,我们积极做(权利人与发布者之间的调停者)中立处理。郑重说明:不 违规举报 视为放弃权利,本站不承担任何责任!
    有个别老鼠屎以营利为目的遇到侵权情况但不联系本站或自己发布违规信息然后直接向本站索取高额赔偿等情况,本站一概以诈骗报警处理,曾经有1例诈骗分子已经绳之以法,本站本着公平公正的原则,若遇 违规举报 我们100%在3个工作日内处理!
    0 条相关评论
     

    (c)2008-现在 oy3.com All Rights Reserved.