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 clone
、git push
、deploy 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.com
或 default
) 並且複製檔案到目錄內。如果您需要另外建立專案的名稱,您可以在後方指定目錄的名稱即可:
$ 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
其他資源¶
Git 官方網址:http://git-scm.com/
Git 官方說明文件:http://git-scm.com/book/en/