以前我没得选,现在我只想做个坏人

利用免费云资源部署网站前后端

    编程     网站·部署·netlify·heroku·mongo·mongodb·weibo·白嫖

  1. Netlify - 静态资源
  2. Heroku - 后端接口
  3. MongoDB Cloud - 云数据库
  4. Github Actions - 定时跑程序

写完了一个小项目,想要快速验证,但没有域名、服务器资源怎么办?

好办,有免费的云资源可以利(bai)用(piao)。

上周末快速开发上线了一个小项目:微博历史榜历史,在最后发布的过程中遇到了一些问题。在搜索的过程中我意识到,关于国外的云服务使用/部署相关的文章貌似就没几篇。好在折腾了一番后顺利上线。故今天把这些部署过程记录下来,方便后人。

该项目前后端分离,还包含一个爬虫,并且使用了 Mongo 数据库。这就意味着我需要找地方放这四块东西:

  • 前端项目打包生成静态资源
  • 后端接口
  • 数据库
  • 定时爬虫

我没有 VPS、域名(博客在用,绑定到了 Github Pages,不能动),也不想租,所以我决定利用那些提供免费服务的云资源来部署本项目。

在看下文之前,我假设你已经能够顺利翻墙…

Netlify - 静态资源


我从 17 年起开始用它,知道对于前端资源的部署,用它没啥问题。在国内访问速度也还凑合。后来我也发现 Vercel 家的服务也不错,看官也可用来替代 Netlify。

Netlify 提供静态资源托管服务,有以下几个特点:

  • 可关联 Github 仓库,在仓库更新后自动收重新打包部署。
  • 支持配置命令(yarn,yarn build),自动帮你安装依赖,构建等。
  • 默认使用dist目录下的静态资源。
  • 提供二级域名(https)。
  • (貌似是)仓库数量不限制。(但 Vercel 免费版只能部署你个人的仓库代码,不能部署组织下的。Netlify 没这限制。)

这几个特点貌似流行的静态资源托管商都一样,毕竟连这功能都没的话,简直没得打。

但不仅仅如此,Netlify、Vercel 现在也提供无服务函数/云函数(Serverless)的托管了。我本来打算此项目的后端接口部署成云函数,但我看着他俩的官方示例,都没搞成功…

我后端接口用的是 Go,在用 Vercel 部署云函数时就直接遇到了报错,在官方仓库的 issue 区找不到答案,最后无奈放弃。或许用 Node.js 不会有问题,但我就想用 Go。Netlify 那边遇到啥错我忘记了,总之也没成功。

所以后端代码部署这块,还是找 Heroku…

Heroku - 后端接口


Heroku 貌似是挺老牌的服务商了(搜了下,07 年就有了,最开始只支持 Ruby)。提供的服务也不仅仅是部署后端。

它的特点有:

  • 免费额度:5 个项目。
  • 部署方便,下载 heroku 的命令行工具后,几个命令下来就可以部署了。
  • 支持语言多。
  • 提供二级域名(https)。
  • 支持云函数(但我貌似用 Go 部署时貌似也遇到了问题,忘了具体的错)。
  • 也支持部署静态资源(但不同于 Netlify,你必须把静态资源放到后端代码框框里,等于说 Heroku 那边部署的还是后端程序,只不过你这个程序没额外功能,只是读取静态资源)。

缺点:

  • 国内被墙 🧱

部署完后,会提供一个接口链接,供你访问,比如我这个。直接在前端代码里调用就好了。

具体的部署步骤,自己搜文章吧…

MongoDB Cloud - 云数据库


每个 Project 只有免费额度:500MB(可以创建多个 Project),所幸我的项目每天写入的数据量不大,500MB 够用一年多的了。

在后台创建 Project 没什么好说的,只是提醒一下,连接数据库时的账号密码不是网站的账号密码,而是 Project - Security - Database Access 下面的那个账号密码。

Github Actions - 定时跑程序


GA 是什么东西呢?

GitHub Actions makes it easy to automate all your software workflows, now with world-class CI/CD. Build, test, and deploy your code right from GitHub. Make code reviews, branch management, and issue triaging work the way you want.

官方介绍里都是:自动化工作流,CI/CD (自动集成测试和持续部署) 等对新人来说,不好理解的概念。

其实解释 Github Actions 可以很直观:一台 Github 提供的 VPS(虚拟专用主机),你可以在主机里跑任何程序。

注意不要滥用(挖矿什么的),会被封号。

如果你有什么定时运行的程序,就非常适合用 Github Actions 来完成。比如我这个每小时运行一次的微博热搜备份爬虫

page PV:  ・  site PV:  ・  site UV: