将静态博客和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 | [[redirects]] |
如果想设置多条重定向,直接在下面再写一条就行。
1 | [[redirects]] |
更多需求可以参考官方文档: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 | [[redirects]] |
至此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问问。