Git

您可以使用 Git 軟體來上傳您的程式碼到 Simple Hosting 上並且啟用您的應用程式,包含相依性套件的安裝。

您的主機控制面板中同樣包含了網頁圖形介面的工具,可以讓您瀏覽 Git 程式庫的內容。

本說明文件將介紹如何使用 Simple Hosting 的 Git 服務。

前提

  • 您需要在您的電腦安裝 Git 與 SSH 用戶端軟體才能使用 Git 服務。

概要

Simple Hosting 中具備 Git 的遠端儲存庫(repo)。並且,您可以使用儲存庫內的程式碼直接建制或佈署您的應用程式,及安裝其他相依套件。

在 PHP 程式語言類型的 Instance 規格中,每個虛擬站台都會擁有自己的儲存庫,並對應站台的名稱 (例如:example.com.git)。其他程式語言類型的 Instance 規格,只會有一個儲存庫,名稱是 default.git

在您設定專案的 git remote 命令之後,您就可以 git push 推送您的程式碼到儲存庫內。預設會使用 master 分支,但您可以指定任何分支或建立標籤。

您也可以使用 git clone 從 Simple Hosting 內複製儲存庫的資料,並且使用所有您想用的 git 命令功能。您可以將它視為一個版本控制伺服器。

在您推送程式碼到主機之後,您就可以使用 deploy {repository}.git 指令來佈署您的程式碼,透過 SSH 命命執行與 Git 相同的路徑即可。

deploy 命令將會建制您的應用程式,並且複製檔案到 Instance 的站台內。應用程式的相依套件可以透過套件管理程式來安裝,將會在佈署的過程中自動使用套件管理程式安裝,各程式語言規格的套件管理程式如下:PHP 為 Composer、Node 為 NPM、Python 為 pip、Ruby 為 Bundler。

詳細的步驟將於下方說明。

Git 遠端位址

在接下來的範例中,我們將會把 Git 遠端位址設定在 $GIT_URL 這個 bash 變數中。您可以在主機的管理介面中找到實際的連結。

在 PHP 規格的主機您將會在 「網站」 管理介面中找到連結。

在其他的規格的主機您將會在 「佈署」 的管理介面中找到連結。

Git 的遠端位址設定如下:

GIT_URL="ssh+git://{instance_id}@git.{datacenter_id}.gpaas.net"

身份認證

您可以使用主機的密碼來使用 Git 的服務,或是你的 SSH 金鑰。

如果您想用密碼來驗證,當您在使用一些 Git 命令 (譬如 git clonegit pushdeploy commands) 的時候,輸入您的密碼。

如果您要使用的是 SSH 金鑰,您需要確認您的電腦可以正確提供公開金鑰給 Git 服務。

我們推薦您使用這種認證方式,因為比較安全、快速,並且您還可以撰寫一些自動化腳本。

建立儲存庫(repository)

此處我們提供了幾個建立儲存庫的範例:PHP 主機,此規格每一個虛擬站台都是一個獨立的儲存庫,但是其他規格的的主機,都只有 default 一個儲存庫。

在建立儲存庫後,您就可以在控制介面看到 gitweb 所呈現的結果 (gitweb 是一個開放原始碼的軟體,提供網頁的視覺化介面),在地一次儲存庫之後,您需要將您的主機重新開機後,才能看到 gitweb 的畫面。

PHP 主機的範例

此範例將會告訴您如何建立本地儲存庫並且上傳程式碼到主機。我們使用的範例域名為 example.com,您可以將範例域名替換成您的實際域名,您就可以執行下列程式。

$ mkdir example.com
$ cd example.com
$ git init
$ git remote add gandi $GIT_URL/example.com.git
$ mkdir htdocs
$ echo "Hello world" > htdocs/index.html
$ git add htdocs
$ git commit -m "first version of index.html"
$ git push gandi master

在 PHP 規格的主機中,儲存庫的根目錄與 Apache 的跟目錄不同。所以,您必須在專案中建立 htdocs/ 目錄,並將應用程式放置於此目錄內,才能讓訪客瀏覽到您的網頁。

其他程式語言規格的主機

此範例為使用一個文字檔案來示範如何建立 Node.js、Python 與 Ruby 的儲存庫。詳細的架構請參閱各語言的說明文件。

$ mkdir myapp
$ cd myapp
$ git init
$ git remote add gandi $GIT_URL/default.git
$ echo "Creating my repository" > test.txt
$ git add test.txt
$ git commit -m "Add a text file"
$ git push gandi master

複製儲存庫

您可以使用 git clone 命令來複製儲存庫到您的電腦:

$ git clone $GIT_URL/{repository}.git

git clone 命令預設會建立與儲存庫相同名子的資料夾 (例如: example.comdefault) 並且複製檔案到目錄內。如果您需要另外建立專案的名稱,您可以在後方指定目錄的名稱即可:

$ git clone $GIT_URL/{repository}.git my_app

佈署您的程式碼

此命令會在主機的目標目錄上執行 `git checkout`__ 。並且會透過套件管理程式安裝相依套件:PHP 為 Composer、Node 為 NPM、Python 為 pip、Ruby 為 Bundler。

$ ssh $GIT_URL 'deploy {repository}.git'

請注意, {repository} 對應到 PHP 主機上的虛擬站台名稱 (例如: example.com),但是在其他語言規格的主機上都是 default

deploy 命令預設的佈署分支是 master,如果您想要佈署其他分支的程式碼,例如 production,您可以在佈署命令後方指定:

$ ssh $GIT_URL 'deploy {repository}.git production'

備註

目前不支援 `Git submodules`__

處理已存在的檔案

在目的目錄中的所有檔案必須具備使用者帳戶能寫入的權限 (即 chmod 644),以便在執行佈署時覆蓋檔案。如果您遇到權限上的錯誤,請執行命令:

error: unable to unlink old 'htdocs/sites/default/settings.php' (Permission denied)

另外,如果您想要清除目錄內的檔案。以下命令會在您的目錄內執行 `git clean`_ 的操作,並且清除所有未被追蹤或未列在 .gitignore 內的檔案:

$ ssh $GIT_URL 'clean {repository}.git'

警告

注意!如果您的應用程式中有儲存未被追蹤的設定檔,或是快取資料夾,您應該在執行 clean 命令之前,先將這些檔案加入 .gitignore 列表中。

刪除儲存庫

若要刪除主機上的儲存庫,請透過 sFTP 或是緊急終端機來刪除。

從 sFTP 登入後,可以在此路徑找到儲存庫:

/lamp0/vcs/git/{repository}.git

若從終端機登入:

/srv/data/vcs/git/{repository}.git

Windows 使用者

Windows 的用戶可以使用 msysgit 軟體,並且可以參考教學:http://guides.beanstalkapp.com/version-control/git-on-windows.html

SSH 金鑰指紋

SSH 的指紋是:

35:e0:5a:a9:54:12:55:6b:ce:41:8c:c1:9e:35:1d:f6

其他資源