1. 程式人生 > 程式設計 >通過Git將Hexo部落格部署到伺服器

通過Git將Hexo部落格部署到伺服器

本文首發於我的個人部落格 orxing.top 歡迎來訪
伺服器是用的阿里雲ECS CentOS,本來是用來部署WordPress的,後來接觸了Hexo,就把Hexo直接部署到了GitHub pages和Coding Pages上,但是最近發現Coding pages經常抽風,所以我決定將hexo重新部署回伺服器上

基礎

  • 使用hexo生成靜態檔案
  • 在雲主機上搭建git環境,並將靜態檔案通過git上傳到雲主機
  • 使用git-hooks實現自動部署
  • Nginx用做靜態檔案伺服器,實現外界對部落格的訪問

示意圖

環境

  • 本地桌面為Win10,使用的終端為cmder,cmder自帶git,理論上使用bash也一樣

  • 伺服器為 CentOS 7 64bit,預設狀態,不使用寶塔面板


開始


登入伺服器

$ ssh [email protected]   
#這裡假設伺服器外網ip為123.125.114.144(悄悄告訴你一個大祕密,這是百度的ip地址) 
#登陸密碼就是你拿到伺服器一開始設定的密碼
複製程式碼

安裝git和nginx

$ yum install git
$ yum install nginx
複製程式碼

新增一個git使用者

$ adduser git   #新增git使用者
$ chmod 740 /etc/sudoers   #改變sudoers檔案的許可權為檔案所有者可寫
$ vim /etc/sudoers #vim是一個很強大的編輯器,使用方法自行Google 複製程式碼

找到root ALL=(ALL) ALL,在它下方加入一行

git ALL=(ALL) ALL
複製程式碼

$ chmod 400 /etc/sudoers   #將其許可權修改為檔案所有者可讀
$ sudo passwd git  #設定git使用者的密碼
複製程式碼

給git使用者新增ssh金鑰

如果以前使用過給github或者是coding之類的,應該知道這個金鑰指的什麼,這裡我不多說

$ su git	#切換到git使用者
$ mkdir ~/.ssh	#建立.ssh資料夾
$ touch ~/.ssh/authorized_keys	#建立authorized_keys檔案
$ chmod 600 ~/.ssh/authorzied_keys #為authorized_keys檔案賦予檔案所有者可讀可寫的許可權 $ chmod 700 ~/.ssh #為.ssh資料夾賦予資料夾所有者可讀可寫可執行的許可權 $ vim ~/.ssh/authorized_keys #將ssh金鑰貼上進去 複製程式碼

關閉終端,使用ssh [email protected]重新登入伺服器,測試是否能不要密碼登入到git使用者

建立git倉庫並使用git-hooks實現自動部署

$ sudo mkdir /var/repo	  #新建目錄,這是git倉庫的位置
$ sudo mkdir /var/www		  #
$ sudo mkdir /var/www/hexo  #這是部落格原始檔的目錄
複製程式碼
$ cd /var/repo	#轉到git倉庫的資料夾
$ sudo git init --bare blog.git	#建立一個名叫blog的倉庫
$ sudo vim /var/repo/blog.git/hooks/post-update	
複製程式碼

增加下面兩行,當我們從本地push上去時,git-hooks會自動執行下列命令,這是git自帶的的方法,表示在/var/repo/blog.git中對/var/www/hexo執行checkout -f命令,可以在我們每次 push 完之後,把部署目錄更新到部落格的最新狀態,這裡我也有點糊塗,不太懂為什麼checkout的作用是這個

#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f
複製程式碼

然後給許可權

$ cd blog.git/hooks/
$ sudo chown -R git:git /var/repo/   	#進行資料夾及其子檔案所有者變更
$ sudo chown -R git:git /var/www/hexo  #進行資料夾及其子檔案所有者變更,我也不知道為什麼git:git
$ sudo chmod +x post-update  #賦予其可執行許可權
複製程式碼

其實還有一種辦法,即push後,先刪除之前的檔案,再clone倉庫到/var/www/hexo,可以自行嘗試,連結在此

配置nginx

$ sudo nginx -t  #檢視nginx配置路徑,寶塔面板安裝nginx非下列路徑
$ sudo vim /etc/nginx/nginx.conf
複製程式碼

找到server配置塊,主要配置listen,server_name,root三個欄位。listen是埠,server_name是你的域名orxing.top ,root為部落格原始檔路徑 /var/www/hexo

域名沒備案,不允許使用80埠,不能新增server_name,埠可以換為任意埠,如果你的80埠被佔,也可以修改為其他埠,自定義埠的填一個listen即可,另一個可以刪除

域名沒備案

域名備案了,那把域名填上,並且去域名控制檯將域名解析到你的伺服器ip上

域名已備案

由於阿里雲伺服器預設沒有開啟80埠,所以你必須去自行開啟,其他埠也是同理

給git使用者設定許可權

給git使用者設定許可權,使其不能通過ssh [email protected]登入,也不能通過su git切換到git使用者,

git操作不影響

$ sudo vim /etc/passwd
#修改最後一行
#將/bin/bash修改為/usr/bin/git-shell
複製程式碼

參考連結