Git 是軟體開發領域中最受歡迎的版本控制系統。它是開源的,自 2005 年以來一直由 Linus Torvalds(著名的 Linux 創始人)積極維護。如今,數量驚人的軟體專案(包括商業專案)都使用 Git 進行版本管理。
Git 採用分散式架構,使其成為 DVCS (Distributed Version Control System) 的完美範例。使用 Git,我們可以同時管理本地和遠端存放庫。在本指南中,我們將示範如何使用 VPS 設定 Git 專案的自動部署.
先決條件
在本指南中,將會有一個本地存放庫和一個位於 VPS 上的遠端存放庫。本地存放庫會將變更推送到遠端存放庫。從遠端存放庫,我們可以將變更推送到 beta 或 live 分支。為了實現這一點,您需要先處理幾個先決條件。
- 一台本地電腦和一台遠端伺服器,兩者均使用 Ubuntu 作為作業系統。本指南展示了 如何設定和安裝 Ubuntu 伺服器.
- 兩台機器均已配置 with Git.
為了建立與 VPS 的安全連線,我們將使用 SSH。幸運的是,Git 也支援將 SSH 作為連接到遠端存放庫的協定。本指南探討了 在 Ubuntu 上設定 SSH 以連接到遠端伺服器.
設定 VPS
在我們的遠端伺服器上,我們將進行以下設定:
- 實際運作目錄: /var/www/dummy-domain.com
- 伺服器存放庫: /var/repo/site.git
從本地電腦,Git 會將更新推送到 VPS 存放庫。從 VPS 存放庫,我們將設定一個指令碼,Git 將使用該指令碼自動將其推送到實際運作目錄。也可以為 beta 版本設定存放庫。
-
建立存放庫
連接到 VPS 並建立存放庫位置:
|
1 2 3 |
cd /var sudo mkdir -pv repo && cd repo sudo mkdir -pv site.git && cd site.git |
接下來,初始化 Git 存放庫:
|
1 |
sudo git init --bare |
在這裡,旗標 --bare 表示不會有來源檔案,只有版本控制組件。
-
掛鉤
接下來,我們將為存放庫設定掛鉤。每個 Git 存放庫都包含一個名為 hooks 的資料夾。它包含範例檔案,可用作掛鉤和各種自訂動作的範本。
根據 Git 的 official documentation,有三種類型的掛鉤:
- pre-receive: 伺服器一收到推送請求就會執行。
- post-receive: 推送請求完成時執行。
- update: 類似於 pre-receive。但是,它在每個分支上執行一次。
在存放庫的位置,執行 ls 指令:
|
1 |
ls -l |
將目前目錄變更為 hooks:
|
1 |
cd hooks/ |
現在,建立 post-receive 指令碼:
|
1 |
sudo nano post-receive |
在指令碼中,輸入以下程式碼。請務必相應地變更目錄位置:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/dummy-domain.com --git-dir=/var/repo/site.git checkout -f |
儲存檔案並關閉編輯器。將檔案設定為可執行檔:
|
1 |
sudo chmod +x post-receive |
現在,每次推送完成時,Git 都會查看 post-receive 指令碼並相應地將檔案放置到位。
設定本地電腦
遠端機器已準備好接收傳入的 Git 專案更新。接下來,我們將設定本地存放庫以將 VPS 用作遠端 Git 伺服器。
讓我們建立一個範例 Git 專案目錄:
現在,初始化存放庫:
|
1 |
sudo git init |
我們必須宣告存放庫的遠端路徑。在這裡,我們將遠端位置稱為 live 分支。然後,執行以下指令:
|
1 |
sudo git remote add live ssh://<remote_username>@<remote_ip_address>/var/repo/site.git |
讓我們測試一下。我們在專案目錄中新增了一個 Shell 指令碼:
接下來,將檔案新增至專案並進行提交:
|
1 2 |
sudo git add . sudo git commit -m "random commit" |
In the next command, we’ll push the project to the live server:
|
1 |
sudo git push live master |
Git 將使用 SSH 連線到 VPS。如果 SSH 連線設定為使用密碼,Git 將會要求輸入驗證密碼。
Beta 版本庫
如果專案不是一步到位部署呢?也許它需要在一個 beta 目錄中進行進一步測試。使用目前為止介紹的方法,我們可以在 VPS 中建立另一個分支,稱為 beta 分支。
-
在 VPS 上設定 Beta 分支
首先,我們需要為 VPS 建立目錄。連線到 VPS 並在 下建立一個目錄/var/www:
|
1 2 |
cd /var/www sudo mkdir beta |
現在,我們需要一個 Git 版本庫來作為 beta 分支:
|
1 2 |
cd /var/repo sudo mkdir -pv beta.git && cd beta.git |
初始化版本庫:
|
1 |
sudo git init --bare |
就像之前一樣,實作一個 post-receive 腳本:
|
1 2 |
cd hooks sudo nano post-receive |
之後,輸入以下程式碼:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/beta --git-dir=/var/repo/beta.git checkout -f |
儲存檔案並關閉編輯器。將 post-receive 標記為可執行檔案:
|
1 |
sudo chmod +x post-receive |
-
在本地電腦上新增 Beta 版本庫
我們現在準備好將 beta 版本庫新增到我們的本地版本庫中。在本地專案目錄內,執行以下 Git 命令:
|
1 |
sudo git remote add beta ssh://<username>@<remote_ip_address>/var/repo/beta.git |
瞧!本地版本庫現在已設定好 beta 遠端版本庫。嘗試推送變更:
|
1 2 3 |
sudo git add . sudo git commit -m "beta version" sudo git push beta master |
-
在 VPS 中從 Beta 移至 Live
假設所有變更都已累積到 beta 版本庫。您要如何將變更推送到 live 版本庫?這非常簡單。在 VPS 上的 beta 版本庫中,我們新增本地的 live 版本庫。然後,我們只需將 beta 版本推送到 live 版本庫。
連線到 VPS,並執行以下命令:
|
1 2 |
cd /var/repo/beta.git sudo git remote add live ../site.git |
然後,您可以將 beta 版本推送到 live:
|
1 |
sudo git push live master |
結語
本指南成功示範了如何設定並將 VPS 用作 Git 專案的遠端版本庫。VPS 可以自動部署最新的程式碼和檔案,無需任何複雜的流程。它還可以作為多個開發團隊之間協作的中心。
在 Git 的幫助下,您可以建立一個簡單的自動部署機制。然而,為了進行妥善的專案管理,建議使用像 GitLab 這樣的工具。以下指南展示了在 VPS 上安裝和部署 GitLab 來管理多個專案。您也可以參考 如何在 Ubuntu 20.04 上設定 GitLab 持續整合 (CI) 管線.
祝您開發愉快!















留言
目前尚無留言。成為第一個留言的人吧。