将静态博客和Waline评论系统从Vercel迁移至Netlify(含Netlify设置重定向和Waline的部署)

这段时间,我开始把整个零神网站的项目从 Vercel 迁移到 Netlify。项目里包含一个静态博客(也就是大家现在访问的这个网站)和一个 Waline 开源评论系统(用于静态博客的文章页面)。

整体来看难度不算大,但实际迁移过程中还是踩了不少坑。比如我上一篇文章里写到的【刚注册就被封禁!?Netlify刚注册就被封禁的解决方法】,上来就给了我框框两拳。TWT

1 Hexo 静态博客的迁移

静态博客的迁移很简单,直接在 Netlify 创建项目,从 GitHub 仓库导入即可。

注意:需要在 Vercel 上将项目与 GitHub 仓库解绑,以免两边同时构建页面,导致项目构建记录乱七八糟。

在创建 Netlify 项目之前,还是需要提前做一些准备。

1-1 迁移前需要做的事情

  • 如果项目中使用了 Vercel 相关的服务,需要先移除
  • 如果有重定向规则,一定要记录下来并保存好,后面配置 Netlify 项目时会用到。
  • 删除 Vercel 相关的配置文件,例如 vercel.json

我这边需要处理的就是这些,想了想也没有其他需要设置的。

1-2 Netlify 设置重定向(根据自己的需要,如果没有重定向需求则跳过)

Netlify 设置重定向的方法和 Vercel 大同小异,也需要在项目根目录创建配置文件。Netlify 需要创建的配置文件是 netlify.toml

最简单的重定向配置可以参考下面这样:

1
2
3
4
5
[[redirects]]
from = "/test/t1"
to = "https://test.com/test/otherpage"
status = 301 # 可以根据需要设置 301、302、200 等状态
force = true

如果想设置多条重定向,直接在下面再写一条就行。

1
2
3
4
5
6
7
8
9
10
11
[[redirects]]
from = "/test/t1"
to = "https://test.com/test/otherpage"
status = 301
force = true

[[redirects]]
from = "/test/*"
to = "https://test.com/testproject/:splat"
status = 302
force = true

更多需求可以参考官方文档:Redirects and rewrites | Netlify Docs

1-3 在 Netlify 中创建项目

进入 Netlify 的 Projects 仪表盘,点击右上角的 Add new project

Connect to Git provider 页面的 Import a Git repository 中,选择 Github,然后根据弹窗登录自己的 GitHub 账户。(如果你的网站仓库用的是其他平台,请在这里选择对应的平台。)

随后进入 Select repository 页面,这里会列出你仓库中的项目,选择你的静态博客项目。

最后会到 Configure project and deploy 页面,这里需要具体设置项目。简单来说,由于这是静态网页项目,我们只需要设置 Project name 即可。

  • 如果你的项目比较特殊,静态页面在仓库的某个文件夹中,可以单独设置 Publish directory

设置完成后,点击页面底部的 Deploy 按钮即可。

1-4 设置 Netlify 项目 - 自定义域名

由于域名和网站是绑定的(不使用 Netlify 提供的域名,是考虑到传播、流量和迁移等问题),我们需要将自己的域名指向这个项目,因此需要设置自定义域名。

项目创建完成后,会默认进入 Project overview 页面,选择 Domain management 进入域名管理页面。

Production domains 区域,选择 Add a domain -> Add a domain you already own,添加自定义域名。

进入 Add your existing custom domain to your project 页面,输入你的域名,点击 Verify 进行验证。

之后需要你在自己的域名记录那里,将网页通过 CNAME 指向 apex-loadbalancer.netlify.com 即可。(你也可以指向Netlify分配的项目域名,只不过大家走的线路不太同,这个对于国内的环境较为友好)至于 SSL 证书什么的,不用担心,Netlify 在验证域名的同时,也会为你申请免费的 SSL 证书并应用到网站上。

至此,静态博客的迁移就结束了。很简单,没什么太大的难点。

2 在Netlify中部署Waline

相比静态网页,Waline的迁移则要麻烦的。这里提醒各位,千万不要按照在Vercel部署的常识走,一定要跟着Waline官方文档走。

官方文档的指引虽然因为时间的推移,参考文档的图片在部分设置的位置与现在的Netlify仪表盘有所不同,但文字描述还是准确的。如果还是需要参考图文,也可以拿我这篇文章当作一个参考。

部署Waline仍然是熟悉的三件套:

  • GitHub(仓库)
  • Netlify(部署)
  • 数据库(存数据)

接下来就开始吧。

2-1 设置Github仓库

从第一步就和Vercel有所不同,需要自己fork Github仓库。

第一步 fork仓库

去fork仓库:https://github.com/walinejs/netlify-starter/fork

在这个页面,只需要根据需要修改Repository name即可。如果没有需求,你们也可以不进行修改,反正我是改了名字的。

第二步 通过重定向设置favicon.ico (这一步可做可不做,不影响正常的使用)

这一步骤不影响正常使用,各位可以跳过。而具体的影响在之前的文章【在Vercel部署Waline 出现favicon.ico 404错误的解决办法】中已经说明,仅会造成网站图标的缺失,在浏览器后台报图标404错误,对于各位并没有任何的影响。

在你fork的仓库中打开netlify.toml,点击右侧小铅笔按钮(Edit this file),在其中添加:

1
2
3
4
[[redirects]]
from = "/favicon.ico"
to = "你的网站favicon.ico地址"
status = 301

至此Github上的配置已经全部完成,现在我们就需要把目光转向Netlify了。

2-2 创建数据库

如果各位是从Vercel迁移过来的,可以不用创建数据库,直接使用Vercel配置的Neon数据库即可。

我这边想要换成其它的数据库,各位可以参考一下。我这里选用的数据库是Nile平台提供的PostgreSQL,和Neon的数据库差不多,但具体的还是有一些问题的。它们的网站:https://www.thenile.dev/

具体内容可以参考这个:【将静态博客和Waline评论系统从Vercel迁移至Netlify(含Netlify设置重定向和Waline的部署)

2-3 创建项目

此处可以参考1-3 在 Netlify 中创建项目的操作创建项目。

设置网站名称

需要注意的是:在3.Configure project and deploy这一步骤中,Project name 需要设置成你网站的名称,不是你评论系统随便取的名称,因为它同时也是环境变量SITE_NAME的值。(SITE_NAME 在 Netlify 中是系统保留变量,无法自定义设置。)

还有它是不支持中文的,只能输入英文和横线。

设置环境变量

接下来就是划到下方,设置环境变量的地方Environment variables。选择Add environment variable - Add key/value pairs。如果你使用的数据库和我一样是PostgreSQL,填写的信息可以参考以下的表格。

环境变量名称 必填 默认值 备注
PG_DB PostgreSQL 数据库库名
PG_USER PostgreSQL 数据库的用户名
PG_PASSWORD PostgreSQL 数据库的密码
PG_HOST 127.0.0.1 PostgreSQL 服务的地址
PG_PORT 3211 PostgreSQL 服务的端口
PG_PREFIX wl_ PostgreSQL 数据表的表前缀
PG_SSL false 是否使用 SSL 连接 PostgreSQL 数据库
POSTGRES_DATABASE 同 PG_DB
POSTGRES_USER 同 PG_USER
POSTGRES_PASSWORD 同 PG_PASSWORD
POSTGRES_HOST 127.0.0.1 同 PG_HOST
POSTGRES_PORT 3211 同 PG_PORT
POSTGRES_PREFIX wl_ 同 PG_PREFIX
POSTGRES_SSL false 同 POSTGRES_SSL

如果使用的是其它的数据库,还请参阅【多数据库服务支持】文档。

配置完数据库,还有网站的基础信息需要设置。由于网站名称在创建项目名称时就已经被设置且为保留变量,如果想要更改网站名称请直接修改项目名称。(会更改Netlify项目的.app链接)最终能配置的信息就剩下SITE_URL,按照你网站的网址填写就行。

环境变量名称 备注
SITE_URL 你网站的URL

配置邮箱的环境变量

想要设置邮箱通知的话可以参考以下表格进行填写,如果不想设置此功能可以跳过这一步骤。

环境变量名称 备注
SMTP_SERVICE SMTP 邮件发送服务提供商
SMTP_HOST SMTP 服务器地址
SMTP_PORT SMTP 服务器端口
SMTP_USER SMTP 用户名
SMTP_PASS SMTP 密码
SMTP_SECURE 是否使用 SSL 连接 SMTP
SENDER_NAME 自定义发送邮件的发件人
SENDER_EMAIL 自定义发送邮件的发件地址
AUTHOR_EMAIL 博主邮箱,接收新评论通知

可以在【services.json】查看支持的服务商。

还有需要注意的是Zoho邮箱是分地域进行设置的,也就是说如果你注册的是日区的Zoho邮箱,那么SMTP_HOST需要设置成日区的域名smtp.zoho.jp。它是不支持跨区使用的,还请注意。

最后设置完变量后直接点击Deploy进行部署。

2-4 访问Waline

等待部署完成,也就是Deploy log下方全都显示绿色的Complete了以后,我们就算成功在Netlify部署了Waline系统。

如果你想要绑定域名什么的操作可以参考文章前面的1-4 设置 Netlify 项目 - 自定义域名

这时候有人可能会发现点击域名后访问会出现Netlify的错误页面,请不用担心,并不是项目没有成功部署,而是需要通过特定的网址进行访问才能进入Waline界面。

在左侧列表中找到Logs & metrics点击下拉找到Functions,点击进入Functions界面。

通常情况下你能在这个界面找到 comment,我们点击进入。

在这个界面就能看到链接了,我们可以通过这个链接来访问项目。

2-5 Waline数据转移

这个其实十分的简单,各位可以参考一下:【Waline评论系统的数据迁移


至此,整体从Vercel迁移至Netlify的方法就完成了。如果各位在迁移过程中遇到了什么问题,可以参考一下,至于文章之外的也可以通过评论来问我或是找AI问问。