最近偶然发现Netlify这个免费提供静态网页托管的网站,简直如获至宝
重新整了下博客,将博客托管至Netlify并采用Serverless代理Disqus

起因

为什么我要将本来部署在腾讯云上的博客花好大的力气搬迁到Netlify上?

  • 免费
  • 支持github的持续集成部署
  • 体验下来比Github Pages访问速度要快

最主要是第二点,这意味着可以把hexo的代码放到github上,每次push都能自动触发编译并更新其网页。这相比于之前自己在本地编译好上传服务器省力太多了。

然后我就赶紧上手试了一下

流程

将hexo文件夹上传至github

以下是我的文件夹结构,可以不上传node_modules

structure
需要注意的是 我用的是自己魔改的maupassant主题
所以我将其也上传至了github maupassant

然后可以看到我的hexo根目录下有一个.gitmodules文件
如果使用自己的主题,.gitmodules需自己新建且写入以下内容,不然Netlify会提示缺少submodule没法编译

1
2
3
[submodule "themes/maupassant"] 	
path = themes/maupassant
url = https://github.com/jacklightChen/maupassant-hexo.git

其中配置可按自己的实际情况修改

部署至Netlify

Step1: 使用github账户登录Netlify

登录成功之后点击使用Git创建新站点按钮
Step2: 选择使用github

Step3: 选择部署了hexo的那个仓库

Step4: 使用默认的命令行(hexo generate)来deploy site
Step5: 部署成功,可查看网页的效果
接着可以将自己的域名cname到netfliy提供的域名并且在netfliy上启用https

可以看到整个过程相当简单,免费的还是香啊!

Serverless+Disqus

这个主要是我之用的多说加了好多广告,于是改用Disqus
可是国内Disqus被墙了,很不方便

hexo有代理的插件,需要自己有一台国外的VPS: disqus-proxy
云服务器总是要钱的,有没有一种免费的方式呐?
有的!我们可以通过 Now 来实现免费搭建Disqus的代理服务

Now 是一个 Global Serverless Deployment 的网站, 可以实现每日 5K 次免费 invoke.
那么想法就很简单了 借鉴disqus-proxy 将本来部署在VPS上的服务端部署到Now上就完事了
代码开源在这: disqus-proxy-serverless

下载server代码并更改配置

打开一个console,输入

1
2
git clone https://github.com/jacklightChen/disqus-proxy-serverless.git
cd disqus-proxy-serverless

配置src目录下的config.js

1
2
3
4
5
6
7
8
9
10
module.exports = {
// 因为要部署在Serverless服务上,端口无所谓,随便填
port: 5050,
// Your Disqus Public Key
api_key: '',
// Your Disqus Secret Key
api_secret: '',
// Your Disqus Name
username: 'jacklightchen',
};

各种 Key 需要在 Disqus 的 API 页面 申请

重要 另外需要到 Settings => Community 里开启访客评论

部署至now

tips:没有安装now 需首先安装now

1
npm i -g now

然后输入以下commands

1
2
3
cd disqus-proxy-serverless
now login 输入邮箱并验证
now --name Disqus-Proxy

此时可在自己的 ZEIT 的 Dashboard 那边: https://zeit.co/dashboard

看到该服务分配的域名: disqus-proxy.1797079433.now.sh 这个域名需填在hexo的配置文件中

修改hexo的配置文件

这里其实就是使用 disqus-proxy
Step1: 在Hexo博客目录执行

1
npm install hexo-disqus-proxy --save

Step2: 在你的Hexo博客目录中修改_config.yml文件 添加如下配置:(注意缩进和空格)

配置文件需要注意port 如果用https就是443 http就是80

1
2
3
4
5
disqus_proxy:
shortname: jacklightchen
username: jacklightchen
host: disqus-proxy.1797079433.now.sh
port: 443

重新部署hexo即可

效果同本站的留言板tufu9441