個人博客
原本我的博客是通過github pages搭建的,但由於一些眾所周知的原因,即使套上了CDN依舊是訪問狀態令人堪憂,經常會造成各種各樣的問題,並且由於不存在服務器也不好進行進一步的管理,更不好完成公安備案。因此現在嘗試在不影響博客更新部署體驗的前提下,利用git搭建一個私人的代碼托管平台,並自動化更新新提交的博客更新內容。
整體思路:
1 在雲服務器上建立私人git服務器並配置本地倉庫
2 在配置文件中設置push到雲服務器上的私人倉庫。
3 倉庫中設置git鈎子將已上傳的靜態資源拷貝到自定義目錄下
4 通過nginx部署web服務,配置靜態資源訪問目錄到自定義目錄。
5 打包上傳hexo靜態文件並上傳到服務器上的私人倉庫
演示vps:CentOS 7
步驟一:建立私人git服務器
連接上vps,我這里就在/home下做演示。
$ yum install git # 如果沒有安裝過git的話需要進行這一步
$ mkdir /home/blog.git
$ cd blog.git
$ git init --bare # 完成初始化
到此已經完成git的初始化。我們打開本機的終端,測試一下是否能連接上。
$ git clone root@server_ip:/home/blog.git
root為vps的用戶名
server_ip為vps的ip
/home/blog.git為初始化的git遠程倉庫
如果能連接上則繼續,不行的話將本機的ssh公鑰粘貼到服務器的.ssh目錄中的authorized_keys文件里。
步驟二:設置hexo的配置文件
打開hexo根目錄下的_config.xml_,修改下列字段
deploy:
type: git
repo: root@server_ip:/home/blog.git
branch: master
步驟三:設置git鈎子
首先還是要安裝Nginx,具體看我這篇博客:點我。
假設我們就把博客文件放到nginx的默認網站目錄(/usr/share/nginx/html)
$ cd /home/blog.git
$ cd hooks
$ vi post-receive
鍵入以下代碼
#!/bin/bash -l
GIT_REPO=/home/blog.git # git倉庫地址
TMP_GIT_CLONE=/home/tmp/blog # 存放網頁臨時文件
PUBLIC_WWW=/usr/share/nginx/html # web服務的網頁文件
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}
cp -rf ${TMP_GIT_CLONE} ${PUBLIC_WWW}
其中2~4行是需要修改的。並且臨時目錄/home/tmp需要自行創建。
然后需要給post-receive增加可執行權限
$ chmod +x /home/blog.git/hooks/post-receive
第四步:修改nginx配置文件
$ nginx -t # 查看配置文件所在目錄
$ vi /etc/nginx/nginx.conf
最后重啟nginx服務即可完成自動化部署
$ nginx -s reload
第五步:打包上傳hexo靜態文件
進入hexo目錄打開終端
hexo cl
hexo g
hexo d
會提示讓你輸入ssh的密碼,輸入即可上傳成功。