介绍
在服务器上配置好 SSH 协议后,可以使用 Git 将仓库推送到服务器并使用钩子执行构建网站操作。rsync 方案要求平台必须支持,但 Windows 上默认并没有,Git for Windows 中也不带。使用 Git 仓库推送可以最小化需要传输的文件大小,并且可以增量传输,较为方便。
环境
- Windows 11 23H2
- Git for Windows 2.41.0
- Hugo 0.84.0
服务器
参考 博客迁移到 Ubuntu 22.04 - 狂飙 搭建好网站。
1
2
3
4
5
6
7
8
9
10
11
|
# 创建远程仓库
git init --bare networm.me.git
# 下载 Hugo 并解压
wget https://github.com/gohugoio/hugo/releases/download/v0.84.0/hugo_0.84.0_Linux-64bit.tar.gz
tar -zxvf hugo_0.84.0_Linux-64bit.tar.gz
# 创建推送钩子
vi networm.me.git/hooks/post-receive
chmod +x networm.me.git/hooks/post-receive
sh networm.me.git/hooks/post-receive
|
在服务器中手动执行以上步骤,其中 networm.me.git/hooks/post-receive
文件内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
|
#!/bin/sh
set -x
SITE=/home/networm/networm.me
HUGO=/home/networm/hugo
DESTINATION=/var/www/networm.me/html/
mkdir -p $SITE
git --work-tree $SITE clean -df
git --work-tree $SITE checkout --force
$HUGO --source $SITE --gc --cleanDestinationDir --destination $DESTINATION
|
本地
setup.sh
1
|
git remote add website networm@networm.me:/home/networm/networm.me.git
|
deploy.sh
1
|
git push --force website
|
将以上内容分别存为对应的文件,方便后续迁移到不同设备重新初始化使用。之后在部署时只需要执行 deploy.sh
即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
$ sh deploy.sh
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 8 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 1.71 KiB | 1.71 MiB/s, done.
Total 6 (delta 2), reused 0 (delta 0), pack-reused 0
remote: + SITE=/home/networm/networm.me
remote: + HUGO=/home/networm/hugo
remote: + mkdir -p /home/networm/networm.me
remote: + git --work-tree /home/networm/networm.me clean -df
remote: + git --work-tree /home/networm/networm.me checkout --force
remote: + /home/networm/hugo --source /home/networm/networm.me --gc --cleanDestinationDir
remote: Start building sites …
remote: hugo v0.84.0-2C4689F7B linux/amd64 BuildDate=2021-06-18T17:14:27Z VendorInfo=gohugoio
remote:
remote: | ZH-CN
remote: -------------------+--------
remote: Pages | 753
remote: Paginator pages | 0
remote: Non-page files | 0
remote: Static files | 63
remote: Processed images | 0
remote: Aliases | 265
remote: Sitemaps | 1
remote: Cleaned | 0
remote:
remote: Total in 2590 ms
To networm.me:/home/networm/networm.me.git
dea739e..7487825 master -> master
|
预览
hugo.sh
1
2
3
|
#!/bin/sh
../hugo_extended_0.84.0_Windows-64bit/hugo.exe server --buildDrafts
|
使用相对路径引用 hugo 并指定构建草稿,方便本地测试。