跳过正文
  1. 文章归档/

笔记·部署flask app

·2162 字·5 分钟·
目录

摘要
#

最近在部署自己的一个项目到服务器端并链接自己的域名的时候出了一些问题,遂记录一下并整理一下。

为什么做这个项目
#

起初只是因为有一位社会学的同学问我有没有什么做词云的工具,想了一下发现自己之前在学python的时候做过一个项目是生成词云故二话没说告诉她我能给她写一个这样的app出来,于是就写了这个项目。(PS:当时的项目和这个不一样,那个只是纯后端python跑起来的,这次部署的时候加上了flask框架做了UI)

项目的简单介绍
#

wCloud
#

这是一个基于jieba和wordcloud制作词云的项目。

具体详见项目的README文档

wCloud-WebApp
#

一个基于flask和wCloud的Web App

具体详见项目的README文档

部署过程
#

本地调试
#

第一次正经自己做一个flask的app,着实是有些难度,不过好在最后还是搞定了。

最开始只是简单想着既然后端的逻辑function和script已经有了,那就直接做呗,于是让ChatGPT做了几个index.html文件,但是这家伙现在笨的要死,好在成功注册了一个Claude的账号,不得不说Claude还是有点东西的,已经开始考虑把ChatGPT的订阅转到Claude了。

本地调试面临的第一个问题就是如何上传文件。虽然说有很多的信息可以参考,但是还是一头雾水,一方面是没有前端开发的经验,另一方面这也是我第一次写flask的app项目,最后的解决还是得看自己呀,也该思考一下是不是应该更多的把思考方式从直接问AI助手到自己去找资料、搜网页来找解决方案了。(或许以后该写一个关于AI出现后我解决问题的方式的变化的文章)

结束了本地调试
#

本地调试搞定了,立刻把项目放到了GitHub上,然后准备第二天开始部署。

部署前
#

Azure&GitHub的"误导"
#

由于把项目存放在了GitHub上,所以第二天在打开项目的时候看到了右侧有一个部署web app到Azure。兴奋,以为这会很简单,但是我错了,这让我更加一头雾水——根本看不懂那一大堆操作,虽然有Azure的Student订阅,但是还是不了解这是怎么个回事,而且我想把项目部署到我自己的域名tools.sepinetam.com上,于是又去搜了一下,发现Azure的Web App和GitHub的Pages是两个不同的东西,学习成本突然高了起来。遂思考部署到我自己的服务器上——我在Azure、AliCloud、Amazon上都拥有一台EC2实例,最后选择了阿里云。

为什么选择阿里云?
#

这几台EC2的位置需要提一嘴,阿里云的服务器我买在了长三角,而Azure我选择的是日本、Amazon的则选择了硅谷,考虑到大多数的用户都是中国人,所以选择了阿里云的服务。(阿里云能不能打钱,给我明年的服务器续费便宜点🥺)

开始部署
#

通过VScode连接上服务器后第一件事是把项目拉取到服务器上(但是我用的clone,不知道以后我要是更新项目的话我是不是要重新部署一下,还是推荐使用pull拉取的方式)

终端执行命令:

git clone https://github.com/sepinetam/wcloud-webapp.git
cd wcloud-webapp

下一步创建虚拟环境并安装依赖:

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

然后就开始到处搜罗该怎么办了,网上最多的方法是nginx、gunicorn、flask三者合体,但是带上这个gunicorn和nginx之后我咋也没部署成功。

省流版————最省事的方案
#

直接打开80端口

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload

然后修改项目的host和port

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=80)

之后直接运行python文件,然后打开浏览器输入服务器ip即可访问。

一个不错的解决方案
#

YouTube上找到的一个视频,解决了我的疑问.

后续会把这个东西总结出来的。 已经做出来了,指北

部署的困难
#

先挖个坑,以后回来填。

小总结
#

关于文件权限问题
#

因为是自己的小项目,希望用的人都很友善,所以在做的时候ChatGPT也好,网上的各种文档也好,大多都让我设置007和666权限,但是wcloud.sock文件总是权限出问题,解决方案是直接使用777权限,但这样会存在安全隐患。

# 假设你在项目的目录下
sudo chmod 777 wcloud.sock

要睡好觉
#

该说不说,有一个好的睡眠才能做好白天的工作。这点我现在深信不疑,但是总是遭不住熬夜。

最开始,这个项目只是wCloud的时候只用了不到三个小时就写好了,但是优化项目的那段时间没睡好用了好几天的时间来写。然后在做wCloud-WebApp的时候,我花了一周的时间来写这个项目,其中大部分时间是在写前端,因为当时没学过前端,所以很多东西都是现学现用。但是那段时间的睡眠还是蛮不错的,所以效率也是很高,但是在部署的头一天因为发现项目存在一个小bug,彻夜难眠(晚上十一点半完成的项目,测试到十二点发现的bug,最后凌晨三点还没睡着,虽然bug现在(@2024.07.14)还没改好)所以第二天部署的时候效率很低,文档都看不进去。

关于开发者社区
#

或许是我对这个领域不是很熟悉吧,不知道是不是幻觉————中文的社区确实不如英文的社区。一些问题在中文搜不到解决方案,但是YouTube上的解决方案随便一个都有思路的扩展,至少让我想到了直接修改app.py文件中app.run(host='0.0.0.0', port=80)的host和port参数。

最后的最后
#

还是多读读书吧,找点书看或许比看视频、问AI来的更有效。

相关文章

笔记·置身事内

·1202 字·3 分钟
置身事内 # 《置身事内》是兰小欢老师的一部重要作品,详细探讨了中国经济体制和政策的实际运作。 1. 概述与背景 # 兰小欢通过对中国经济的深入分析,揭示了政府、市场和企业在经济发展中的相互作用。 书中结合了大量实际案例和数据,展示了中国独特的经济运作模式。 2. 政府与市场的关系 # 本书详细讨论了政府在经济活动中的角色和影响,特别是在政策制定和执行过程中的作用。 分析了市场机制在资源配置中的效率和局限性,以及政府干预的必要性和合理性。 3. 企业的行为与策略 # 兰小欢阐述了中国企业在市场环境下的生存和发展策略,包括如何应对政策变化和市场波动。 书中通过具体案例,展示了企业在不同经济形势下的应对措施和调整策略。 4. 经济政策的影响 # 讨论了各种经济政策(如财政政策、货币政策、产业政策等)对宏观经济和微观经济的影响。 通过实例分析,探讨了政策实施过程中的实际效果和潜在问题。 5. 总结与展望 # 兰小欢总结了中国经济体制的特点和优势,提出了对未来经济发展的展望和建议。 强调了在全球化背景下,中国经济需要不断改革创新,以应对新的挑战和机遇。 置身事内》通过深入的分析和生动的案例,帮助读者更好地理解中国经济的运行机制和政策影响,是一本对学术研究和实际操作均有重要参考价值的书籍。

笔记·乔布斯传

·530 字·2 分钟
摘要 # 第一次接触《乔布斯传》是去年九月份,当时听一期播客节目在讲Elon Musk让乔布斯传的作者沃尔特·艾萨克森(Walter Isaacson)给他写传记,做客的嘉宾是中信出版社翻译《马斯克传》的人,毕竟Musk一直很有意思的,所以去搜了一下这个作者,发现他写过好多大佬的传记,于是当机立断下单这两本传记。因为一个乔布斯,从只有一台iPhone变成现在集齐了Apple的所有产品。