上一篇 用Hugo搭建个人博客之Hugo快速入门在本地主机上安装了 Hugo 并生成了静态的 Web 资源文件,现在需要将这些资源文件同步到 Web 服务器以便发布资源。这里使用 git 同步这些资源,在 Web 服务器上创建 git 仓库,然后在本地主机上 git clone
克隆仓库、git push
推送 Hugo 生成的 Web 资源文件到 Web 服务器,就可以完成网站资源的同步。
1、服务器上创建 git 仓库
登录 ECS 服务器,创建 git 仓库。这里使用 hook 钩子实现 Git 仓库与项目文件分离,Git 仓库在/u01/data/hugo/public.git/
目录,不存放资源文件,只做版本控制;HTML 资源文件在/u01/data/hugo/html
目录,完全公开,同时也是 Web 服务器的根目录:
[admin@ityoudao ~]$ cd /u01/data/hugo/
[admin@ityoudao hugo]$ git init --bare public.git
初始化空的 Git 版本库于 /u01/data/hugo/public.git/
[admin@ityoudao hugo]$ mkdir html
[admin@ityoudao hugo]$ ll
总用量 8
drwxrwxr-x 7 admin admin 4096 5月 17 22:42 public.git
drwxrwxr-x 2 admin admin 4096 5月 17 22:43 html
[admin@ityoudao hugo]$ cd public.git/
[admin@ityoudao public.git]$ ll
总用量 32
drwxrwxr-x 2 admin admin 4096 5月 17 22:42 branches
-rw-rw-r-- 1 admin admin 66 5月 17 22:42 config
-rw-rw-r-- 1 admin admin 73 5月 17 22:42 description
-rw-rw-r-- 1 admin admin 23 5月 17 22:42 HEAD
drwxrwxr-x 2 admin admin 4096 5月 17 22:42 hooks
drwxrwxr-x 2 admin admin 4096 5月 17 22:42 info
drwxrwxr-x 4 admin admin 4096 5月 17 22:42 objects
drwxrwxr-x 4 admin admin 4096 5月 17 22:42 refs
[admin@ityoudao public.git]$ cat hooks/post-receive
#!/bin/sh
git --work-tree=/u01/data/hugo/html --git-dir=/u01/data/hugo/public.git checkout -f
EOF
[admin@ityoudao public.git]$ chmod +x hooks/post-receive
- 使用 hook 钩子实现 Git 仓库与项目源码分离参考git仓库与项目源码分离。
2、本地 git clone 和 git push
在安装 Hugo 静态网站生成器的本地主机上使用 git clone
克隆仓库:
ityoudao:~ wxy$ cd blog/
ityoudao:blog wxy$ rm -rf public/
ityoudao:blog wxy$ git clone ssh://admin@www.ityoudao.cn:666/u01/data/hugo/public.git
正克隆到 'public'...
warning: 您似乎克隆了一个空仓库。
- 这里服务器使用了自定义的 SSHD 端口,详见LNMP之安装CentOS7之后需要做的几件事配置 sshd 服务器部分,所以Git 的地址也必须加上自定义的端口号。
写入一个测试文件,然后使用git push
推送到服务器上的 Git 仓库:
ityoudao:blog wxy$ cd public/
ityoudao:public wxy$ ll
total 0
drwxr-xr-x 3 wxy staff 96 5 17 22:48 ./
drwxr-xr-x 15 wxy staff 480 5 17 22:48 ../
drwxr-xr-x 9 wxy staff 288 5 17 22:48 .git/
ityoudao:public wxy$ echo "Hello hugo~~~" > hello.html
ityoudao:public wxy$ git add -A
ityoudao:public wxy$ git commit -m "init"
[master 4e97e89] init
1 file changed, 1 insertion(+)
create mode 100644 hello.html
ityoudao:public wxy$ git push
枚举对象: 4, 完成.
对象计数中: 100% (4/4), 完成.
写入对象中: 100% (3/3), 243 bytes | 243.00 KiB/s, 完成.
总共 3 (差异 0),复用 0 (差异 0)
To ssh://www.ityoudao.cn:666/u01/data/hugo/public.git
babf3a5..4e97e89 master -> master
3、检查 git 服务器是否 git push 成功
push 推送的 HTML 资源文件在/u01/data/hugo/html
目录:
[admin@ityoudao hugo]$ ll public.git/
总用量 36
drwxrwxr-x 2 admin admin 4096 5月 17 22:42 branches
-rw-rw-r-- 1 admin admin 66 5月 17 22:42 config
-rw-rw-r-- 1 admin admin 73 5月 17 22:42 description
-rw-rw-r-- 1 admin admin 23 5月 17 22:42 HEAD
drwxrwxr-x 2 admin admin 4096 5月 17 22:57 hooks
-rw-rw-r-- 1 admin admin 112 5月 17 22:59 index
drwxrwxr-x 2 admin admin 4096 5月 17 22:42 info
drwxrwxr-x 12 admin admin 4096 5月 17 22:59 objects
drwxrwxr-x 4 admin admin 4096 5月 17 22:42 refs
[admin@ityoudao hugo]$ ll html/
总用量 4
-rw-rw-r-- 1 admin admin 14 5月 17 22:59 hello.html
4、使用 hugo 生成静态文件并 git push
使用 hugo 生成静态文件:
ityoudao:blog wxy$ hugo
| ZH-CN
+------------------+-------+
Pages | 23
Paginator pages | 0
Non-page files | 0
Static files | 21
Processed images | 0
Aliases | 1
Sitemaps | 1
Cleaned | 0
Total in 424 ms
ityoudao:blog wxy$ cd public/
ityoudao:public wxy$ ll
total 72
drwxr-xr-x 18 wxy staff 576 5 12 07:54 ./
drwxr-xr-x 15 wxy staff 480 5 17 22:48 ../
-rw-r--r-- 1 wxy staff 6148 5 12 07:54 .DS_Store
drwxr-xr-x 12 wxy staff 384 5 17 22:59 .git/
-rw-r--r-- 1 wxy staff 4344 5 17 23:03 404.html
drwxr-xr-x 3 wxy staff 96 5 17 23:03 about/
drwxr-xr-x 5 wxy staff 160 5 17 23:03 categories/
drwxr-xr-x 9 wxy staff 288 5 12 08:32 css/
drwxr-xr-x 7 wxy staff 224 5 12 08:32 fonts/
-rw-r--r-- 1 wxy staff 14 5 17 22:59 hello.html
drwxr-xr-x 6 wxy staff 192 5 12 07:54 images/
-rw-r--r-- 1 wxy staff 7751 5 17 23:03 index.html
-rw-r--r-- 1 wxy staff 2716 5 17 23:03 index.xml
drwxr-xr-x 6 wxy staff 192 5 12 08:32 js/
drwxr-xr-x 3 wxy staff 96 5 17 23:03 page/
drwxr-xr-x 7 wxy staff 224 5 17 23:03 posts/
-rw-r--r-- 1 wxy staff 2000 5 17 23:03 sitemap.xml
drwxr-xr-x 8 wxy staff 256 5 17 23:03 tags/
使用git push
同步 HTML 文件到 Web 服务器:
ityoudao:public wxy$ pwd
/Users/wxy/blog/public
ityoudao:public wxy$ git push
Everything up-to-date
ityoudao:public wxy$ git add -A
ityoudao:public wxy$ git commit -m "2019年05月17日"
[master 5fa1292] 2019年05月17日
46 files changed, 10978 insertions(+)
create mode 100644 .DS_Store
...
create mode 100644 tags/python/index.xml
ityoudao:public wxy$ git push
枚举对象: 67, 完成.
对象计数中: 100% (67/67), 完成.
使用 4 个线程进行压缩
压缩对象中: 100% (60/60), 完成.
写入对象中: 100% (66/66), 826.43 KiB | 7.25 MiB/s, 完成.
总共 66 (差异 19),复用 0 (差异 0)
To ssh://47.93.238.61:520/u01/data/hugo/public.git
4e97e89..5fa1292 master -> master
- 注意,在
public
目录下执行git
命令。
5、检查 git 服务器
[admin@ityoudao hugo]$ ll html/
总用量 64
-rw-rw-r-- 1 admin admin 4344 5月 17 23:04 404.html
drwxrwxr-x 2 admin admin 4096 5月 17 23:04 about
drwxrwxr-x 3 admin admin 4096 5月 17 23:04 categories
drwxrwxr-x 2 admin admin 4096 5月 17 23:04 css
drwxrwxr-x 2 admin admin 4096 5月 17 23:04 fonts
-rw-rw-r-- 1 admin admin 14 5月 17 22:59 hello.html
drwxrwxr-x 2 admin admin 4096 5月 17 23:04 images
-rw-rw-r-- 1 admin admin 7751 5月 17 23:04 index.html
-rw-rw-r-- 1 admin admin 2716 5月 17 23:04 index.xml
drwxrwxr-x 2 admin admin 4096 5月 17 23:04 js
drwxrwxr-x 3 admin admin 4096 5月 17 23:04 page
drwxrwxr-x 5 admin admin 4096 5月 17 23:04 posts
-rw-rw-r-- 1 admin admin 2000 5月 17 23:04 sitemap.xml
drwxrwxr-x 6 admin admin 4096 5月 17 23:04 tags
6、一个命令实现 hugo 生成静态文件和 Git 同步
可以使用 alias 别名做到一个命令即可实现 hugo 生成静态文件和 Git 同步,MacOS 修改 ~/.bash_profile 文件:
ityoudao:blog wxy$ cat >> ~/.bash_profile <<EOF
alias blog='cd /Users/wxy/blog/ && hugo && cd public/ && git add -A && git commit -m "$(date)" && git push && echo "博客发布完成!"'
EOF
ityoudao:blog wxy$ source ~/.bash_profile
- 第一个
cd
命令后面的目录是 Hugo 网站根目录; git commit
使用当前时间作为备注。
blog
命令的效果:
ityoudao:public wxy$ blog
| ZH-CN
+------------------+-------+
Pages | 82
Paginator pages | 1
Non-page files | 0
Static files | 41
Processed images | 0
Aliases | 1
Sitemaps | 1
Cleaned | 0
Total in 186 ms
[master 1a223e2] 2019年 5月19日 星期日 15时57分23秒 CST
1 file changed, 8 insertions(+), 8 deletions(-)
枚举对象: 5, 完成.
对象计数中: 100% (5/5), 完成.
使用 4 个线程进行压缩
压缩对象中: 100% (3/3), 完成.
写入对象中: 100% (3/3), 405 bytes | 405.00 KiB/s, 完成.
总共 3 (差异 2),复用 0 (差异 0)
To ssh://www.ityoudao.cn:666/u01/data/hugo/public.git
0959304..1a223e2 master -> master
博客发布完成
这里使用 Git 轻松的实现了 Hugo 生成的静态 HTML 文件同步到 Web 服务器,下一步在 ECS 服务器上部署 Nginx 服务器,访问用Hugo搭建个人博客之部署Nginx网页服务器。