热点新闻
flask服务器部署全流程
2023-07-28 04:29  浏览:513  搜索引擎搜索“养老服务网”
温馨提示:信息一旦丢失不一定找得到,请务必收藏信息以备急用!本站所有信息均是注册会员发布如遇到侵权请联系文章中的联系方式或客服删除!
联系我时,请说明是在养老服务网看到的信息,谢谢。
展会发布 展会网站大全 报名观展合作 软文发布

开始前的逼逼赖赖

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





0123CD3B.jpg


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

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

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


正文:

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

  • 常规方法,把项目搬到服务器上,安装环境,使用uWSGIgunicorn启动项目,这里使用的就是这种方法。
  • 懒人方法,把项目搬到服务器上,生成环境配置清单文件,使用宝塔的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容器,uWSGIgunicorn

这里只讲如何使用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.pyconf.pya.py... 简短的名字能一定程度上少敲一点代码。

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

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




image.png

最终运行成功效果:






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

谢谢大家




image.png




05745415.gif

发布人:c958****    IP:117.173.23.***     举报/删稿
展会推荐
让朕来说2句
评论
收藏
点赞
转发