← 返回蜂巢洞察

学习如何部署、保护以及自动化全栈Web应用程序的开发过程。

云基础设施 配置Ubuntu服务器,启用安全的SSH密钥认证机制,并完全禁用密码登录和root账户登录。 安全与防火墙设置 使用UFW阻止未经授权的端口访问,同时配置Fail2Ban来自动拦截暴力攻击。 应用运行环境搭建 安装Python和Node.js,为资源有限的服务器配置交换内存,并使用Gunicorn和Supervisor来管理后台进程。 数据存储与搜索功能 自行搭建轻量级的Meilisearch实例,为其分配专用的系统用户账户,并实现数据库快照的自动化生成。 全球部署方案 通过DNS将自定义域名映射到服务器上,使用Let’s Encrypt证书确保连接安全,配置Nginx作为反向代理

<如果你从未深入了解过Web应用的开发流程,那么将一个本地开发完成的Web应用部署到正式的生产环境中可能会让人感到非常棘手。我们刚刚在freeCodeCamp.org的YouTube频道上发布了一门全面的课程,这门课程会从基础开始系统地讲解全栈应用的部署过程。

<这门课程由Imad Saddik编写,采用实践为导向的教学方法。在介绍CI/CD自动化工具之前,你会先亲自完成所有的操作步骤,这样就能深入理解复杂系统是如何被托管、保护以及维护的。

<以下是这门课程所涵盖的内容:

  • 云基础设施
    配置Ubuntu服务器,启用安全的SSH密钥认证机制,并完全禁用密码登录和root账户登录。

  • 安全与防火墙设置
    使用UFW阻止未经授权的端口访问,同时配置Fail2Ban来自动拦截暴力攻击。

  • 应用运行环境搭建


    安装Python和Node.js,为资源有限的服务器配置交换内存,并使用Gunicorn和Supervisor来管理后台进程。

  • 数据存储与搜索功能
    自行搭建轻量级的Meilisearch实例,为其分配专用的系统用户账户,并实现数据库快照的自动化生成。

  • 全球部署方案
    通过DNS将自定义域名映射到服务器上,使用Let’s Encrypt证书确保连接安全,配置Nginx作为反向代理服务器,同时利用Cloudflare的CDN技术进行内容缓存。

  • CI/CD自动化流程
    构建GitHub Actions流水线,实现代码检查、格式化、单元测试以及自动部署功能,并确保在出现问题时能够及时回滚到之前的版本。

  • 持续安全保障
    集成Software Composition Analysis和Static Application Security Testing技术进行安全检测,同时使用Bandit和OWASP ZAP进行动态安全测试。

  • 系统监控与故障排查
    利用Btop工具监控CPU、内存使用情况以及异常进程,同时使用GoAccess实时解析Nginx访问日志,以便及时发现并阻止恶意流量。

<完成这门课程后,你将能够成功地将一个基于Vue.js和FastAPI开发的Web应用从手动部署模式转变为完全自动化的生产环境部署流程。

<你现在就可以在freeCodeCamp.org的YouTube频道上观看这门课程的全部内容,课程时长为11小时。


<我还在继续听呢……等你们讲完告诉我吧!>

相关文章

技术实践

文章:在Cloudflare Workers平台上实现的多租户SaaS规模下的模块化边缘计算技术

在多租户SaaS环境中,采用单体架构设计的边缘计算节点会导致部署过程中的耦合性问题,并使影响范围变得非常广泛。本文介绍了一种基于Cloudflare Workers的模块化架构设计方案,该方案通过服务绑定机制来实现各功能模块之间的解耦;同时,以图像优化为例详细说明了如何根据不同租户的需求进行配置调整,以及如何确保系统性能能够适应各种设备环境。文章还涵盖了多CDN部署方案的差异、分阶段发布策略、配置流程以及测试方法等内容。 作者:Chintan Tank

阅读全文
技术实践

如何将Jekyll博客主题移植到Python环境中:实际操作中的经验与教训

几年来,我一直在使用一个采用 tufte-jekyll 样式设计的博客,正是这个经历让我发现了Edward Tufte所提出的布局理念。 Edward Tufte 因在数据可视化与信息设计领域的贡献而闻名,他是高数据密度设计的坚定支持者,同时也极力反对使用那些毫无意义的视觉元素。 tufte-css (以及它的许多衍生版本)为网页设计带来了诸多优势:充足的空白空间、适合阅读的排版格式,还有用于提供补充信息的 侧边注释 (而非干扰用户体验的弹出窗口)。 除了那些与写作无关的部分外,我对 tufe-jekyll 博客的设计几乎毫无意见。这个基于 Jekyll 框架、使用 Ruby 语言开发的版本,

阅读全文
技术实践

为什么绝不应该在客户端代码中嵌入Gemini API密钥(以及Firebase AI逻辑是如何解决这个问题的)

生成式人工智能的快速发展促使成千上万的网页开发者在他们的应用程序中添加智能功能。 人们的第一反应通常是从浏览器直接调用Gemini API的SDK。然而,这种做法存在严重的安全风险:会将你的API密钥暴露给外界。 在本文中,你将了解到为什么将原始的Gemini API密钥提供给客户端是危险的,Firebase AI Logic的代理架构是如何解决这一问题的,以及Firebase App Check又是如何弥补单独使用代理所无法解决的问题。 阅读完本文后,你将能够搭建出一个可正常使用的生产环境配置:一个受到保护的AI Logic客户端、一个配置正确的App Check流程(其中包含调试令牌),以

阅读全文
技术实践

iOS NFC使用指南:如何使用React Native读取、写入NFC标签以及锁定这些标签

将iPhone靠近贴纸,就会发生一些奇妙的事情:名片会自动添加到联系人列表中,某个聚焦操作会结束,或者某扇门会自动打开。这种芯片的成本大约为20便士,其存储容量约为130字节。 读取一条NFC信息需要执行两次函数调用;而要获得执行这些调用的权限,则需要花费更长的时间。之后,CoreNFC还会要求你再次完成这个流程。 第一个障碍来自苹果公司:你需要拥有一个付费开发者账户,在某个网站平台上注册应用ID,勾选相关选项,并重新生成配置文件。如果其中任何一步出错,构建过程就会因为代码签名错误而失败,而这些错误信息中根本不会提到“NFC”这个词。 第二个障碍则来自CoreNFC本身,而且没有人会提醒你注意

阅读全文