用git的webhook实现快速更新Hugo网站以及恩爱关

2018-11-08 约 2084 字 预计阅读 5 分钟

本是负重散步时间,一看天公不作美,飘着几丝风雨。
还是更新一下帖子吧
现在用Hugo+git+markdown组合,工作效率大幅增加。
闲话揭过,这次就写一下如何用git的webhook来实现快速更新hugo网页
此次操作参考了Digital Ocean的一个老帖。
但该帖用服务器再装一遍Hugo,效率低,而且我测试过不成功,可能是我的Vultr服务器还是属于非常便宜的一档。装软件太多影响性能。

连接本地git到远程服务器

前帖讲了如何安装git、hugo和建立开发环境目录~/dev.jesselau.com
现在建立一个本地生产发布目录

mkdir -p ~/prod.jesselau.com

建立一个git

cd ~/prod.jesselau.com
git init
生成了一个空的git。将之生成一个git文件夹,上传到远程主机
cd ..
git clone --bare ~/prod.jesselau.com /tmp/jesselau.git
scp -r /tmp/jesselau.git yourusername@yourserver.com:
将远程服务器设成开发节点
cd ~/prod.jesselau.com
git remote add prod yourusername@yourserver.com:jesselau.git
本地机操作告一段落,需要ssh登陆操作远程主机
ssh yourusername@yourserver.com

设置远程主机

远程主机安装git

sudo apt-get update
sudo apt-get install git

设置nginx,更改网站root目录

以前的网站目录是/var/www/jesselau.com,需要改到home目录下,不然自动更新时有用户权限问题

远程主机建立目录

cd ~
mkdir public_html

修改nginx conf

sudo nano /etc/nginx/sites-available/jesselau.com
找到server里面root那句改为
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /home/yourusername/public_html;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name server_domain_or_IP;
存盘退出 重新启动nginx
sudo nginx -t
sudo service nginx restart

设置git hooks

现在设置git hook脚本,只要本地机一有更新到远程主机,则运行脚本

cd ~/jesselau.git/hooks
nano post-receive
脚本文件如下:

post-receive

#!/bin/bash
GIT_REPO=$HOME/jesselau.git
WORKING_DIRECTORY=$HOME/my-website-working
PUBLIC_WWW=$HOME/public_html
BACKUP_WWW=$HOME/backup_html
set -e
rm -rf $WORKING_DIRECTORY
rsync -aqz $PUBLIC_WWW/ $BACKUP_WWW
trap "echo 'A problem occurred.
Reverting to backup.'; rsync -aqz --del $BACKUP_WWW/ $PUBLIC_WWW; rm -rf $WORKING_DIRECTORY" EXIT
git clone $GIT_REPO $WORKING_DIRECTORY
cd $PUBLIC_WWW
find -name "*" -not -path "*google7109*" -not -path "*/images*" -delete #保留一些静态文件和文件夹
cp -r $WORKING_DIRECTORY/* .
rm -rf $WORKING_DIRECTORY
trap - EXIT
将该脚本设置成可执行
chmod +x post-receive
脚本的功能就是本地机一更新push到远程主机,就自动clone内容到一个临时工作目录,然后备份原来的网站,除了一些静态目录和文件外删除原有文件,再将clone的内容全部拷贝到发布目录。
这样网站的更新就全部自动完成了

测试通路

远程主机设置好了,现在回到本地机测试效果 先清空本地机发布目录~/prod.jesselau.com的内容,因为hugo生成站点不会自动清空目标目录,说不定会有乱七八糟的过时内容,然后运行

cd ~/dev.jesselau.com
hugo -d ~/prod.jesselau.com
cd ~/prod.jesselau.com
git add .
git commit -m "just a test"
git push prod master
运行至此,会叫你输入口令,输入后则网站全部自动更新了。
连这麽多命令也可以省掉。建立一个名为deploy的文件,内容是

deploy

#!/bin/bash
cd ~/dev.jesselau.com
hugo -d ~/prod.jesselau.com
cd ~/prod.jesselau.com
git add .
git commit -m "new release"
git push prod master
rm -rf *
调试好后发布就一个命令,网站全部自动更新
bash ./deploy
方便有木有?我是感觉方便之极,重新回到当年学DOS的状态。

Make the web fun again


继续阅读通关文之恩爱关

悟真云:“人生虽有百年期,夭寿穷通莫预知。昨日街头犹走马,今朝棺内已眠尸。妻财抛下非君有,罪孽将行难自欺。大药不求争得遇,遇之不炼是愚痴。”
又云:“为道须要猛烈,无情心刚似铁。直饶男女妻妾,更与他人何别。”
此皆教人看淡世事恩爱,急修性命也。
人生在世,万般皆假,惟有性命是真。
举世之人认假为真,将性命二字置於度外,恩爱牵绊,为衣为食。
百忧感其心,万事劳其形。
昼夜奔忙,千谋百计,损人利己,贪图无厌。
水火刀兵之处也去,虎狼烟瘴之处也去,生死不顾,存亡不管,碌碌一生,无有休歇,为子孙作长久计,及至精神耗散,气血衰败,大病临身,卧床不起。
虽有孝子贤孙,替不得患难,姣妻爱妾,代不的苦楚。
生平恩爱,到此一无所恃。
三寸气断,一灵不返。
彼是谁而我是谁,言念及此,生平恩爱,有何实济?
既无实济,则知恩爱为人生之大苦,须要早早看破。
欲要看破,须先将此恩爱利害,暗中尝探一番。
尝探来,尝探去,尝探出甜中有苦,恩中有害,是实实知的恩爱是假事,晓的恩爱是多事,自然不在泥滩上着脚,火坑中安身。
别有个主见在内,而不为恩爱所牵扯矣。
果能尝探出恩爱中苦味,欲出世,则大解大脱,得以修持性命而无拘无束。
即住世,亦明明朗朗,物来顺应,可无伤无损。
盖悟的恩爱是苦,即能逢场作戏,自由自专,不受恩爱之害矣。
然父子兄弟夫妇既聚会在一本戏中,为父者亦必做出为父的道理,为子者亦必做出为子的道理,为兄者亦必做出为兄的道理,为弟者亦必做出为弟的道理,为夫者亦必做出为夫的道理,为妇者亦必做出为妇的道理。
当知各尽道理,自己本分中应当如是,但不过心中明白是逢场作戏,大家合伙,将这一本戏顺顺序序作个完结,彼此便了事也。
如是应去,既不伤天伦,又不昧本性,便是在家出家,在尘出尘,有多少便宜快活处。
昔厐居士、传大士、葛仙翁、许真君、张天师、三茅真君,皆是在家出家,而能大成其道者。
此住家者当如是。
若是出家者,除事亲养生送死而外,其余恩爱,必须一刀两段,脱卸绳索,绝不可有一毫沾染牵挂。
稍有一毫沾染牵挂,便坏大事。
不但不能修道,而且不能明道。
特以心中有恩爱二字搅扰。
既有恩爱搅扰,便是看不开恩爱。
看不开恩爱,便被恩爱关口挡住,如何奔得前程?
吾劝真心学道者,速将恩爱关口打通,无牵无扯,脱脱洒洒,一心学道,自有进益。
否则,恩爱舍不的,常挂心胸,妄想明道,难矣。

此关要旨在人生如戏如梦,你能确定此时阅读帖子的你不是在梦中吗?
金刚经有六如观法

一 切 有 为 法 ,
梦 幻 泡 影
亦 如
应 作 如 是 观 。

梦、幻、泡、影、露、电六如,可以参之。


author

Jesse Lau

网名遁去的一,简称遁一。2012年定居新西兰至今,自由职业者。
本文采用知识共享署名 4.0 国际许可协议进行许可。简而言之,可随意转发转载,转载请注明出处。


留点评论吧:

本网站使用cookie技术以提高用户体验度。 了解我们的隐私政策 我已了解