- 1. 本網站的系統架構
- 2. 安裝git
- 3. 配置git使用者
- 3.1. 為什麼要建立git使用者
- 3.2. 建立git使用者
- 3.3. 設定git使用者的密碼
- 3.4. 建立公鑰-私鑰對
- 3.5. 伺服器配置公鑰
- 4. hexo配置自動化部署
- 4.1. 配置Git倉庫
- 4.2. hexo站點配置
1. 本網站的系統架構
- 網站示例: sunlogging.com
- 伺服器: 阿里雲ECS
- 伺服器系統: Ubuntu 24.04 LTS
- 部落格框架: Hexo
- 網站主題: Volantis
2. 安裝git
執行環境: ECS伺服器 + 本地計算機
- 安裝
sudo apt install -y git
- 驗證
git --version
顯示具體的版本號則說明安裝成功。
3. 配置git使用者
3.1. 為什麼要建立git使用者
為了實現部落格的自動化部署,我們後面要使用公鑰免密登入伺服器。為了安全起見,最好不要使用root使用者免密登入,我們建立一個受限的使用者來進行免密登入。
3.2. 建立git使用者
執行環境: ECS伺服器
- 建立賬戶
adduser git
- 檢視是否建立成功
cat /etc/passwd | grep git
# 或
id git
- 配置sudoers
將git使用者新增到sudo的配置檔案
# 切換到root使用者
su -
# 編輯配置檔案
vim /etc/sudoers
# 增加配置, 在開啟的配置檔案中,找到root ALL=(ALL) ALL, 在下面新增一行
# 其中git是你要加入的使用者名稱稱
git ALL=(ALL) ALL
3.3. 設定git使用者的密碼
執行環境: ECS伺服器
- 設定密碼
sudo passwd git
# shell提示符會提示輸入新密碼兩次,輸入完成後按回車。
設定完密碼後,就可以用git使用者遠端登入ECS伺服器了。
- 驗證
ssh git@伺服器IP
# 伺服器IP是ECS伺服器的公網IP
輸入剛設定的密碼進行登入,如果登入成功,這說明git使用者密碼的設定成功。
3.4. 建立公鑰-私鑰對
執行環境: 在本地計算機
前提條件: 已安裝git和ssh客戶端,如果未安裝,請先安裝。
# 進入~/.ssh,如果不存在該目錄,可以手動建立一個
cd ~/.ssh
# 建立公鑰-私鑰對
ssh-keygen -t ed25519 -C "you_email@example.com"
# 郵箱使用你的git配置的郵箱
接下來,碰見系統詢問就直接按Enter鍵。此時便會在 ~/.ssh 目錄建立兩個檔案,分別為: id_ed25519 (私鑰) 和 id_ed25519.pub (公鑰)。
3.5. 伺服器配置公鑰
執行環境: ECS伺服器
前提條件: 已安裝git,如果未安裝,請先安裝。
- 複製id_ed25519.pub
複製 4.4建立的 id_ed25519.pub 的內容。注意不要在命令列裡選中複製,可以用VSCode等編輯器開啟檔案後,複製內容。
- 用git使用者登入伺服器
ssh git@伺服器IP
- 建立authorized_keys檔案
# 進入git使用者的home目錄
cd ~
# 建立.ssh目錄
mkdir .ssh
cd .ssh/
# 建立id_ed25519.pub檔案,並將已複製的內容貼上進來
vim id_ed25519.pub
# 檢查是否儲存成功
cat ./id_ed25519.pub
# 將公鑰檔案複製一份並命名為:authorized_keys
cp ./id_ed25519.pub ./authorized_keys
- 驗證
退出遠端登入的伺服器。再次透過ssh用git使用者登入,這時應該不需要輸入密碼就能進正常登入了。
ssh git@伺服器IP
4. hexo配置自動化部署
4.1. 配置Git倉庫
執行環境: ECS伺服器
前提條件: 已安裝git,如果未安裝,請先安裝。
- 用git使用者登入伺服器
ssh git@伺服器IP
- 建立git倉庫
cd ~
git init --bare sunlogging_repo
- 建立 post-receive
cd hooks/
# 建立並編輯 post-receive 檔案
vim ./post-receive
# 在vim內輸入以下內容並儲存:
git --work-tree=/home/www/sunlogging --git-dir=/home/git/sunlogging_repo checkout -f
# 給 ./post-receive 新增執行許可權
chmod +x ./post-receive
post-receive檔案內容的功能:
讓鉤子檔案刪除 /home/www/sunlogging 目錄下原有的檔案,然後從 /home/git/sunlogging_repo 倉庫 clone 新的部落格靜態檔案到 /home/www/sunlogging 目錄下。
/home/www/sunlogging
: 靜態部落格網站的根目錄/home/git/sunlogging_repo
: 部落格網站的git倉庫目錄
- 修改 /home/www/sunlogging 目錄許可權
cd /home/www/sunlogging
# 修改 sunlogging 目錄的所屬使用者為git,這樣git使用者才有讀寫許可權
chown -R git:root ./sunlogging/
4.2. hexo站點配置
執行環境: 在本地計算機
前提條件: 已安裝 node.js、hexo、git等軟體,如果未安裝,請先安裝。
- 安裝hexo-deployer-git
hexo-deployer-git是hexo官方提供的部署外掛,可以實現hexo站點自動部署到git倉庫。
npm install hexo-deployer-git --save
- 修改 _config.yml 配置
deploy:
type: git
repo: git@your_pub_ip:/home/git/sunlogging_repo
branch: master
your_pub_ip為ECS伺服器的公網IP,請替換為你的公網IP。倉庫路徑修改為你自己的倉庫路徑。
- 部署網站
# 1.生成靜態頁面
hexo generate
# 或
hexo g
# 2.部署靜態頁面
hexo deploy
# 或
hexo d
# 1+2 簡寫為
hexo g -d
# 或
hexo d -g
- 驗證
透過瀏覽器訪問 http://xxx.xxx.xxx.xxx:80/,就能檢視剛部署的部落格主頁了。
大家好,我是陌塵。
IT從業10年+, 北漂過也深漂過,目前暫定居於杭州,未來不知還會飄向何方。
搞了8年C++,也幹過2年前端;用Python寫過書,也玩過一點PHP,未來還會折騰更多東西,不死不休。
感謝大家的關注,期待與你一起成長。