Rennen

Rennen

从注册 Azure B1s 到部署 Halo 教程

651
2023-10-28

Step 1. 注册 Azure 学生账号(AZ100)

以下两种注册 Azure 学生账号的方式可以任选其一:

  1. 注册 Github 学生包,并连接 Azure 账号到 Github 获取学生权益(学生包内还有其他丰富的权益值得体验)

  2. 直接通过教育邮箱注册认证 Azure 账号,速度可能更快一些

Tips:

  • Github 的认证材料可以提交学信网的学籍认证截图,而学信网的学籍认证界面是可以直接使用 Chrome 自带的网页翻译工具翻译成英文的(这样就不用购买学信网的付费翻译服务了)。但是,翻译成英文之后可能会出现排版错乱问题,或者是出现部分翻译错误。可以使用 这个小工具 修改页面内容,删去多余的导致排版错误的内容,或者修改部分内容

  • 更多 Github 认证过程中的注意事项,我在申请过程中也失败了几次,主要都是 Github 的个人信息没有完善好。名字建议使用英文全拼,头像建议使用和学生身份证明上相同的头像,待申请成功后再修改回来

Step 2. 创建 B1s 虚拟机

天真地以为申请通过了 Azure 账号就万事无忧了?Absolutely not!由于 Azure 对免费资源的限制,在创建虚拟机资源时还需要注意以下几点:

  • 大小这里只能选择 B1s 这个选项,其他的选项都不是免费的。

  • 如果不确定创建哪个地区的实例,可以使用这个工具:Azure 在线 Ping 测速工具。一般新加坡和香港的延迟低一些,香港路由可能会绕新加坡(当然如果套 Cloudflare 就一视同仁了)。

  • 磁盘设置中,需将 OS 磁盘大小改为“重设大小为 64 GB(P6)”(如果此处没有 64 GB 的选项,说明所选系统镜像可能不支持修改磁盘大小,需要创建虚拟机后,关闭虚拟机,然后再调整磁盘大小)。

  • 由于机器配置较低,所以在选择系统镜像时, Linux 镜像建议选择带有 Minimal 标签的,Windows 镜像建议选择带有 smalldisk 标签的(否则无法选择 64 GB 硬盘)。

  • IP 地址需要选择动态 IP,静态 IP 是收费的。在“网络”一栏中新建公共 IP 地址可以选择动态 IP。

  • “监视”一栏中关闭“启用诊断”,防止额外扣费。

  • 创建成功后即可使用 SSH 工具登录虚拟机。

  • 使用免费资源之外的项目会造成扣费,可在 https://www.microsoftazuresponsorships.com/Usage 中查看扣费项目,扣费会优先从 100 USD 赠金中扣除

  • 由于 B1s 实例的内存实在太小(说是 1GB 实际上可用只有 900M,新开机还要被 Linux 内核和 Azure 监控程序占用掉 300M),我推荐你稍微折腾一下,DD 一个纯净系统并且添加 Swap 分区。操作过程详见我的这一篇文章:新开机一台 Linux 服务器之后应该做的 N 件事

Azure 本身的管理面板已经够难用了,给学生的免费配额还有这么多限制,只能说想薅大厂羊毛实属不易。😡

Step 3. 部署 Halo

Halo 支持使用 Docker 部署,所以这一部分还是相对简单的。虽然但是,由于我们使用的是配置稀烂的 B1s,所以比起常规的部署流程可能还稍微麻烦一点。

如果条件允许的话,我推荐你使用更高配置的机器部署 Halo,我这里使用 B1s 的原因纯粹是不想浪费资源。

Halo 官网一共提供了 4 种部署方式,分别为:

  1. 创建 Halo + PostgreSQL 的实例

  2. 创建 Halo + MySQL 的实例

  3. 仅创建 Halo 实例(使用默认的 H2 数据库,不推荐用于生产环境,建议体验和测试的时候使用

  4. 仅创建 Halo 实例(使用已有外部数据库)

经过个人实测,仅部署 Halo 实例大概会占用 500M 左右的内存,此时如果再部署一个数据库实例的话,1GB 内存根本不够用的。

但是!别忘了,Azure 还提供了两台免费的数据库实例(这不比 B1s 有用)。

因此,我们采用第四种方式(仅部署 Halo 实例,使用已有外部数据库)。这里推荐给 Halo 用 PostgreSQL 数据库,MySQL 数据库可以留着自己开发用。创建 Azure 数据库时,数据库实例的地区建议和虚拟机实例一个地区。

部署 Halo 的教程可参考官方教程,这里就不再赘述了。

部署需要安装 Docker,可以使用该一键脚本安装。

部署完之后需要配置反向代理,如果懒得配置反向代理,可以向我一样直接在 docker-compose.yml 文件中将端口号改为 80,然后使用 Cloudflare 给网站加上 SSL 证书。

结语

教程就先写到这里吧,当然本教程并不完善,要折腾的还多着呢(比如说自建图床、优化主题、防止恶意攻击等等)。以后再说吧。

最后的最后不要忘了定期备份!(想象一种极端情况,Halo 实例 OOM 了,此时虚拟机内存爆满连 SSH 都连不上,更别提转移数据了)