用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 [email protected]:
將遠程服務器設成開發節點
cd ~/prod.jesselau.com
git remote add prod [email protected]:jesselau.git
本地機操作告一段落,需要ssh登陸操作遠程主機

設置遠程主機

遠程主機安裝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 國際許可協議進行許可。簡而言之,可隨意轉發轉載,轉載請注明出處。


留点评论吧: