實戰(zhàn):用 git 搭建靜態(tài)網(wǎng)站

轉(zhuǎn)載自[http://typeof.net/m/static-website-using-git-in-actions.html]

在 Github Pages 火起來之后,很多人寫博客都開始用全靜態(tài)了。(什么?評論?disqus ?。。┻@種靜態(tài)站使用 git 管理網(wǎng)站內(nèi)容,在本地(或者在服務(wù)器端使用 Jekyll)生成頁面內(nèi)容后,用 git 推送到服務(wù)器上完成部署。這種設(shè)計讓我等死 Nerd 感覺很舒服,畢竟一切盡在掌握。搭建一個這樣的服務(wù)器并不困難,趁著最近入手 42qu 的服務(wù)器,就在這里放個教程給和我一樣的神奇生物好了。

裝 git 這個工作不復(fù)雜,我的服務(wù)器使用 Centos 6.2,yum install git 就搞定了。

接下來是安裝 git 的權(quán)限管理系統(tǒng) gitosis 使服務(wù)器支持推送。這個步驟不在贅述,網(wǎng)上內(nèi)容多得是。我假定你放網(wǎng)站的 repo 位于 /home/git/repositories/site.git。

然后是把 git 用戶和網(wǎng)頁服務(wù)器的用戶(我這里是 nginx)加入同一個組里。這對之后 git 和網(wǎng)站目錄同步至關(guān)重要,否則會有非常麻煩的權(quán)限問題。

sudo groupadd web
    sudo usermod -a -G web git
    sudo usermod -a -G web nginx

首先我們需要建立一個目錄來放置網(wǎng)站,接下來把它的從屬組改成上面建立的 web 組并且設(shè)置組的寫權(quán)限:

sudo mkdir /var/www/site
    sudo chmod g+w /var/www/site
    sudo chgrp web /var/www/site

接著找到你的網(wǎng)站對應(yīng)的 repo(比如 /home/git/repositories/site.git),編輯里面的 hooks/post-receive 文件:

#!/bin/bash
    

    
while read oldrev newrev ref
    
do
    
    branch=`echo $ref | cut -d/ -f3`
    

    
    if [ "master" == "$branch" ]; then
    
        git --work-tree=/var/www/site checkout -f $branch
    
        echo 'Changes pushed live.'
    
    fi
    

    
done

這一段腳本是用 git 用戶運行的,所以上面才需要給 /var/www/site 設(shè)置權(quán)限還要把 git 加組。

好了,現(xiàn)在可以推更新了:

git push origin master

如果看到“Changes pushed live.”,你就成功了。把 nginx 的目錄設(shè)置成 /var/www/site,看看效果如何?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容