Caddy+Hugo双GO组合并实现github的webhook钩子推送
原因
一. 首先,为什么要用这么复杂的标题?
为什么标题会这么复杂呢?原因很简单。我自己被搞昏了,为了体现我的眩晕程度,所以用了这个复杂的名字。
另外,还有一个最重要的原因:本博内容本来就容易让人昏,并且本博也不是给别人看的,只是为了怕自己忘记而写的教程笔记而已。
目的
这么容易让人发昏的目的是什么呢?
目的很简单,一个字”懒”
在本地计算机上写博客,然后推送到GITHUB上,让Github Webhook push 给VPS Caddy.server,然后Caddy.git pull Github内容修改,最后Caddy.hugo自动生成静态页面.
这样说有点绕,还是上个思维导图吧
二. 为什么要用Hugo
原因是建立了一个VPS小鸡,但是内存只有512M. 另外博主也使用过几个不同的博客系统,最终还是决定选用hugo作为博客系统.
- 用过wordpress系统,放弃.原因很简单,博主的VPS小鸡经常更换(至少是经常更换IP,经常被墙啊)用这种动态博客,耗费资源不说,起码要LAMP或者LNMP组合。换主机就要涉及到迁移,又是数据库,又是文章,又是IP,太麻烦了。还是静态的方便。
- typecho ,放弃,虽然轻量,但放弃原因同上
- hexo,优点是部署方便,教程资料多,但编译速度太让人绝望了,放弃
- jekyll,ruby编写,不想装ruby,就这么简单
三. 为什么用Caddy
原因很简单啊.Caddy简单,开源.GO编写,只需要一个文件搞定,以后迁移方便。这个优点就够了。
并且插件也很多,比如.git, .hugo, .minify…这些都是本博中会用到的插件.
教程
本教程以Vultr作为VPS主机,本地系统为windows10 x64(安装Git bash,hugo),Github地址为github.com/mile3033
循序渐进法
1. 安装Caddy
Caddy的安装详见本人博客 [Centos7上安装和配置Caddy]
Caddy的安装详见本人博客 [Centos7上安装和配置Caddy]
里面有些坑,我后面去填.
2.安装Hugo
Hugo可以安装在几乎所有的主流平台上。对于CentOS,您只需要将最新的程序文件下载到.tar.gz
档案中,并将其解压缩到一个方便的位置。在撰写本文时,最新版本是0.15。
1 | sudo yum update -y |
使用以下命令测试您的安装:
1 | hugo version |
到这里就完成hugo的安装了,至于很多教程里关于如何建立新站点,如何设置主题…这里不作教程,原因是我们的目的是方便以后网站的整体迁移.So,关于Hugo的安装就到这里足够了
建立本地电脑生产系统
Windows上面建立Hugo系统很简单,一个二进制文件搞定.这就是Go的优越性
假设
- 您将
C:\Hugo\Sites
用作新项目的起点。 - 您将使用
C:\Hugo\bin
存储可执行文件。
设置您的目录
您需要一个地方来存储Hugo可执行文件,您的内容以及生成的Hugo网站:
- 打开Windows资源管理器
- 创建一个新文件夹:
C:\Hugo
,假设你想在你的C盘上使用Hugo,尽管这可以放在任何地方 - 在Hugo文件夹中创建一个子文件夹:
C:\Hugo\bin
- 在Hugo中创建另一个子文件夹:
C:\Hugo\Sites
技术用户
- 从Hugo发布下载最新的压缩Hugo可执行文件。
- 将所有内容提取到您的
..\Hugo\bin
文件夹。 - 该
hugo
可执行文件将被命名为hugo_hugo-version_platform_arch.exe
。重命名可执行文件以便hugo.exe
于使用。 - 在PowerShell或您的首选CLI中,
hugo.exe
通过导航到C:\Hugo\bin
(或您的hugo.exe文件的位置)并使用该命令将可执行文件添加到PATHset PATH=%PATH%;C:\Hugo\bin
。如果该hugo
命令在重新启动后不起作用,则可能必须以管理员身份运行命令提示符。
技术含量较低的用户
- 转到Hugo发布页面。
- 最新发布的版本在上面公布。滚动到发布公告的底部查看下载。他们都是ZIP文件。
- 找到靠近底部的Windows文件(它们按字母顺序排列,因此Windows是最后一个) - 根据您是32位还是64位Windows,下载32位或64位文件。(如果你不知道,请看这里。)
- 将ZIP文件移动到您的
C:\Hugo\bin
文件夹中。 - 双击ZIP文件并提取其内容。一定要将内容解压缩到同一个
C:\Hugo\bin
文件夹中 - Windows将默认执行此操作,除非您将其解压到其他位置。 - 你现在应该有三个新文件:hugo可执行文件(eg
hugo_0.18_windows_amd64.exe
)license.md
,和readme.md
。(您现在可以删除ZIP下载。)重命名该hugo可执行文件(hugo_hugo-version_platform_arch.exe
)以便hugo.exe
于使用。
现在您需要将Hugo添加到您的Windows PATH设置中:
对于Windows 10用户:
- 右键单击开始按钮。
- 点击系统。
- 点击左边的高级系统设置。
- 点击底部的**环境变量…**按钮。
- 在用户变量部分,找到以PATH开头的行(PATH将全部大写)。
- 双击PATH。
- 点击**新建…**按钮。
- 键入
hugo.exe
提取的文件夹,这是C:\Hugo\bin
如果您按照上述说明操作的。PATH条目应该是Hugo所在的文件夹,而不是二进制文件。按Enter完成键入后按。 - 在每个窗口中单击确定以退出。
Windows 10中的路径编辑器已添加到2015年11月的更新中。您需要安装该更新或更高版本的更新才能运行上述步骤。您可以通过单击来查看Windows 10的构建 开始按钮→设置→系统→关于。请参阅这里了解更多。)
创建Github项目
1、在任意的页面右上角点击 +**,然后点击新建仓库 **New repository。
2、为你的仓库创建一个简短便于记忆的名字。例如 “hello-world”。
3、为你的仓库添加一个描述(非必须的)。例如 “My first repository on GitHub”。
4、选择你的仓库类型为公有或者私有:
- Public:公有仓库对于一个刚入门的新手来说是一个不错的选择。这些仓库在 GitHub 上对于每个人是可见,你可以从协作型社区中受益。
- Private:私有仓库需要更多地步骤。它们只对于你来说是可用的,这个仓库的所有者属于你和你所指定要分享的合作者。私有仓库仅仅对付费账户可用。更多的信息请参照 “What plan should I choose?“。
5、选择Initialize this repository with a README。
6、点击Create repository。
恭喜!你已经成功地创建你的第一个仓库,并且通过 README 文件初始化了它。
push到githug
现在我们已经建立了http://github.com/mile3033/hugo项目,所以我们要把**本地计算机**的项目推送到Github上面了.
因为现在是做测试,所以只需要在本地的G:\hugo\hugo下面建立一个index.html的文件就可以了
1 | git init |
本地计算机推送到github的hugo项目后,回到Vultr 虚拟主机
在/var/www 下面建立hugo目录
1 | mkdir /var/www/hugo |
为什么要进入/var/www目录下面呢,是因为我们现在暂时不用Linux的服务运行Caddy.测试嘛,现在暂时用的Root账号,方便查找出错的原因
生成Caddyfile文件
1 | nano /var/www/Caddyfile |
文件内容如下:
1 |
|
然后运行Caddy进行测试,
1 | Caddy |
如果没有报错的话,可以打开浏览器
可以看到刚才我们做的index.html的内容了
测试Webhook
继续编辑Caddyfile文件
1 |
|
然后打开Github页面,进入项目->设置->webhook->Add Webhook
添加webhook,PayloadURL填写你域名/webhook比如我的
1 |
|
content-type选json
secret填写和Caddyfile中的口令保持一致(some-keys)
其他保持默认即可。
当你看到这个画面时,成功了
然后,在本地计算机的index.html上随便修改一下,然后推送到Github
1 | git add . |
推送完成之后,观察putty里面Caddy的提示,有变化了吧.那就成功了
打开
看到页面变化了吧.哈哈
各位可自备梯子查看 YouTube 上的视频教程
然后重点来了,重点来了
现在我们要以服务的方式后台运行,并且建立一个名为caddy用户组和用户,增加网站和VPS的安全性
- 现在先结束caddy进程
重新温习一遍 Centos7上安装和配置Caddy
重新温习一遍 Centos7上安装和配置Caddy
首先停用caddy.server服务,不然不知道会不会出错
sudo systemctl stop caddy.service sudo systemctl disable caddy.service
#tls mile3@gmail.com git github.com/mile3033/hugo . { repo github.com/mile3033/hugo path /var/www/hugo-blog hook /webhooks some-keys hook_type github then hugo --destination=/var/www/blog.3mile.top interval 600 } root /var/www/blog.3mile.top then hugo --destination=/var/www/3mile.top interval 600 } root /var/www/3mile.top1
2
3
4
5
6
7
8
9
5. 然后修改/etc/caddy/Caddyfile文件
6. ```yaml
blog.3mile.top {
3mile.top {
}
1 |
|
这时先不打开Caddy服务,或都是先不要运行Caddy
在本地计算机设置Hugo页面,主题,反正一句话,你的Hugo要正常工作.我这里只是为了方便网站整体迁移,所以Hugo是完整的,所以只需要把相关文件复制过来就可以了
如果Hugo是正常的,那么就Push到Github吧
先删除刚才生成的测试文件index.html
```
git add .
git commit -m “modify index.html”
git push origin master1
2
3
4
5
6
7
8
9
14. 然后打开Caddy服务
15. ```
sudo systemctl daemon-reload
sudo systemctl start caddy.service
sudo systemctl enable caddy.service运行
sudo systemctl status caddy.service -l
看Caddy服务是否正常运行了