前言

搭建个人博客有很多方式,如wordpress,jekii, hexo,个人DIY;

本文主要介绍另一种方案: hugo+caddy

建一个网站要要做哪些事情

这里分解如下:

  1. 网站前端
  2. 网站后端
  3. 域名
  4. 主机
  5. 部署
  6. 维护

下面就这些方面以自己搭建ipds.top网站为例说明。

网站前端

对于前端,个人能力与经历有限,缺少DIY能力,那就是找主题模板,经济有效。 就IPDS 由于对golang的热爱,后端选择hugo。那么主题有以下选择:

  1. 直接从gohugo 中查找
  2. github中查找

个人采用的主题是icarus

网站后端

如上面所说,后端选择hugo。

这里讲一下主要碰到问题。

版本问题

  1. hugo版本不要使用apt-get命令直接的,防止hugo版本过低
  2. 个人使用版本如下
1
2
root@BC:~# hugo version
Hugo Static Site Generator v0.31.1 linux/amd64 BuildDate: 2017-10-14T22:10:38+08:00

参数

常见的参数配置如下:

1
hugo server --baseUrl=https://blog.ipds.top/ --appendPort=false

小结

这里要宣传一下hugo,采用hugo具有如下优点:

  1. 有不错可用的主题
  2. 简单好用
  3. 社区不断更新与发展
  4. 内容可以保存到内存,访问速度快

域名

从阿里云注册一个top域名。 这里要吐槽一下阿里云,注册域名不提示域名一定要认证后才能用。(因为我的ECS买的是香港的,买完测试后也确认可用,过几天一看居然不能用)

主机

主机采用阿里云ECS,地点在香港。 在香港最大的好处就是解决了墙的问题。

部署

反向代理

方案1: 大家熟知的nginx

方案2: caddy

这里选择了caddy,理由参考后面提到的caddy的优点。

如何支持https

方案1: Let’s Encrypt

方案2:caddy

由于反向代理选择了caddy,这里也就天然支持https

caddy配置

首先说一下caddy的优点:

  • 部署方便,由于是Go开发的,所以,只需要一个可执行文件,就可以运行Caddy Server了
  • 跨平台,也是因为是由Go开发的,好处不言而喻,可以交叉编译并运行在多个平台
  • Graceful Reload: 修改配置文件后,支持无downtime的配置文件重新加载和读取,不影响现有业务的运行
  • 配置简单,这也是感觉比较方便的,比起Nginx,配置文件真的是非常简洁
  • 丰富的插件系统,支持多种扩展插件,通过不同的插件,实现相当多的扩展功能
  • 多核支持,分利用多核性能,这其实也就是golang的优势
  • 天生的HTTPS支持,能把证书申请和配置一系列繁琐的事情简化到极致,用caddy即可支持https

以excellent123网站为例,具体的配置如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
excellent123.com  {
   tls your.email@address.com
   proxy / localhost:1314 {
        transparent   
   }
   gzip
}

blog.excellent123.com {
   proxy / localhost:1313 {
        transparent
   }
   gzip
}


监控

利用pm2来实现进程监控,提高可用性。

更新

有以下方案,具体如下:

rync

通过sync同步本地内容到云主机,实现更新。

github

通过将内容保存到github,github再更新到ECS方式进行。好处就是git流操作,同时也实现了对文章与内容的备份,历史记录等功能。

本人采用是这种方式,推荐使用这种方式。

github page

配置repo

myself659.github.io配置下设置source分支,打开https。

设置cname

在根目录,新增CNAME文件。添加内容如下:

1
blog.excellent123.com

cloudflare加速

添加域名

配置域名解析

设置page rule

设置域名dns服务商

具体参考 将您的域名服务器更改为 Cloudflare

1
2
3
Type  Value
NS  jonah.ns.cloudflare.com
NS  vera.ns.cloudflare.com

其他

底层技术出身,在web技术方面个人水平有限,如有不足,敬请指正。

参考

  1. Caddy、 SSLDocker、Nginx 性能比较及使用体验
  2. 如何免费的让网站启用HTTPS
  3. Everything You Ever Wanted to Know About Making a Freelance Website