用到的系统和软件
- 云服务器: debian, 用于搭建网站。后面简称服务器。
- windows系统: windows 11 22H2, 用于本地撰写博客。后面简称本地。
- 争渡读屏: 整个操作流程都是使用争渡读屏完成的。
- winscp: 在本地连接 云服务器,上传、下载和修改服务器文件。
- ssh: 本地系统内置的 ssh工具,用于连接服务器。跟 winscp 配合使用。
- akelpad: 用于本地编辑和修改文件。
- github 账号: 用于托管博客文章的源代码。
- caddy: 服务器上用于搭建网站的软件。
- hugo: 生成静态网站的工具,在本地和服务器都需要安装。
- git: 用于拉取和提交代码到 github 仓库。本地和服务器都需要安装。
基本原理
- 本地撰写博客文章。
- 利用 github 仓库保存博客内容。
- 提交到远程仓库后,触发 webhook。
- 云服务器收到 github 的 webhook 请求后,调用 git pull 拉取仓库代码,然后调用 hugo 生成网站。
本地环境配置
本地是在 windows 系统下,需要安装 git/hugo/winscp/akelpad, 具体步骤不在说明。
AkelPad 可以用其他编辑器代替。
服务器配置
安装 caddy 可参看我之前的文章,关于如何在腾讯云搭建网站服务器,地址是: https://www.qt06.com/post/417/ 如果你只要搭建博客,不需要其他网站的话,那么只需要安装 caddy 部分即可,数据库和 php 都不需要。
安装 hugo
|
|
修改配置允许以 caddy 用户登录
找到 /etc/passwd
文件,用喜欢的编辑器打开。
找到包含 caddy
的一行,将末尾的 /sbin/nologin
替换位 /bin/bash
, 然后保存。
这样就可以使用 su caddy
命令进入 caddy 用户了。
后面的所有操作都是要在 caddy 用户下操作的。
在 bash 下输入下面命令进入 caddy 用户环境下:
|
|
服务器上搭建网站
输入下面命令进入 /data/www
目录下:
``bash cd /data/www
创建网站目录:
`bash
mkdir qt06.com
进入新建的网站目录:
|
|
克隆 github 仓库:
|
|
这样会将仓库克隆到 qt06.github.io 目录下。
创建一个用于存放自动拉取代码和生成网站脚本的目录:
|
|
进入新建的 scripts 目录:
|
|
新建一个名为 build.sh
的文件,并且填入下面内容:
#!/usr/bin/bash
echo "begin at: $(date)" >> /data/www/qt06.com/build.log
cd /data/www/qt06.com/qt06.github.io
git pull >> /data/www/qt06.com/build.log
hugo >> /data/www/qt06.com/build.log
echo "end at: $(date)" >> /data/www/qt06.com/build.log
修改网站配置,加入 github 仓库的 webhook 地址
找到 /data/caddy/conf/vhost/qt06.com.conf
文件,打开后, 在 file_server
前面一行加入如下内容:
exec /asdfqwer123498732424 {
command /data/www/qt06.com/scripts/build.sh
directory /data/www/qt06.com/qt06.github.io
timeout 0
}
完整的网站配置如下,提供给大家做参考:
qt06.com {
redir https://www.{host}{uri}
header -Server
}
www.qt06.com {
root * /data/www/qt06.com/qt06.github.io/public
encode gzip
header -Server
exec /asdfqwer123498732424 {
command /data/www/qt06.com/scripts/hugo_build.sh
directory /data/www/qt06.com/qt06.github.io
timeout 0
}
file_server {
index index.htm, index.html
}
log {
format json {
time_format "iso8601"
}
output file /data/caddy/log/qt06.com.log
}
}
然后刷新 caddy 配置:
|
|
在github 仓库添加 webhook
进入 qt06.github.io 仓库的 settings 里的 webhook 界面,填写刚才的回调地址,也就是: https://qt06.com/asdfqwer123498732424
口令自己填写。
之后,就在本地编写好文章,push到仓库,就等待网站自动同步更新吧。