2014年2月16日 星期日

Gitblit‏ Server 安裝

Gitblit‏ 是用 Java 開發的 Git Server,所以在 Windows、Linux、Mac OS X 上都可以安裝。
Gitblit‏ 使用 http/https 的方式讓 Client 端的 Git 存取。
以下是在 windows 安裝的過程 (我在 win7、windows 2008 Server R2 都測試過可正常執行)。
  1. 安裝 JRE。
    因為是 Java 開發的,所以電腦要能執行 Java,至少要安裝 JAVA Runtime Environment (JRE)。如果沒有,先到 http://www.java.com/ 下載安裝。
  2. 下載 Gitblit。‏
    http://gitblit.com/ 下載 Gitblit‏ 檔案。我下載時的版本是 1.3.2。
  3. 下載下來的 Gitblit‏,是個壓縮檔(gitblit-1.3.2.zip),不用安裝,解壓縮即可使用。
    我解壓縮到 D:\gitblit-1.3.2
  4. 修改設定檔。
    用文字編輯器開啟 D:\gitblit-1.3.2\data\gitblit.properties 設定檔。裡面有一些設定,可依需要修改。
    server.httpPort 設定使用 http 時的 port,我想用 https,所以設定 0 ,表示不使用。
    server.httpPort = 0
    server.httpsPort 設定使用 https 時的 port,預設是 8443
    server.httpsPort = 8443
    設定要綁定的 interface,可填網域、IP,留空表示綁定所有 interface,填 localhost 將只監聽 localhost。這邊我設定為 server 的 IP。(server.httpBindInterface 是 http 使用,server.httpsBindInterface 是 https 使用)
    server.httpBindInterface = 192.168.56.1
    server.httpsBindInterface = 192.168.56.1
    設定 SSL keystore 的密碼。設定檔有一段說明「If you are using the official JRE or JDK from Oracle you may not have the JCE Unlimited Strength Jurisdiction Policy files bundled with your JVM.  Because of this, your store/key password can not exceed 7 characters」,所以我設定小於 7 個字元。
    server.storePassword = 1234567
    設定 SSL 憑證的位址,填寫 server 的網域或 IP。(與後面產生 Server SSL 憑證時填的 hostname 相同)
    server.certificateAlias = git.example.com
    packedGitLimit 設定比最大的 repository 還大。
    git.packedGitLimit = 20m
    streamFileThreshold 設定比最大提交檔案還大。我保留預設值。
    git.streamFileThreshold = 50m
  5. 建立 SSL CA 憑證綁定 Server 網域。
    執行 D:\gitblit-1.3.2\authority.cmd 開啟產生憑證的視窗

    註:若您的 Java 執行環境不能設定超過 7 個字元的憑證密碼,會出現如下圖的提醒畫面,按「是」繼續執行,按「否」則開啟 java 網站,讓您下載相關檔案安裝。

    我安裝過 4 次,其中一次自動彈出下圖視窗,是用來設定憑證的預設資料。(這個沒設似乎也沒關係,因原本已經有預設值,若之後要設定,也可以在後面的 Certificate Authority 設定視窗再開啟 )


    上圖按確定後,需要輸入在 gitblit.properties 設定檔設定的 server.storePassword 密碼 (當然,如果沒自動跳出前一個畫面,也不會有此步驟,但不影響後面操作) 


    再來,會出現下圖的 Certificate Authority 視窗,用來產生憑證。前面的步驟設定過一次後,以後開啟,都會直接到這個視窗。先產生 server SSL 憑證。在上方工具列,點選第2個用來產生 server SSL 憑證的紅色按鈕。


    在 hostname 欄位,設定主機網域或 IP (與 gitblit.properties 設定檔中的 server.certificateAlias 設定值相同),再按「ok」。


    輸入在 gitblit.properties 設定檔設定的 server.storePassword 密碼,再按「確定」。


    Server SSL 憑證產生成功。
  6. 啟動 Gitblit Server。
    執行 D:\gitblit-1.3.2\gitblit.cmd,啟動網頁伺服器。
  7. 新增使用者帳號。
    開啟網頁管理介面,網址依前面的設定而定,例如我的是 https://git.example.com:8443/。
    (因為是自己發的 SSL 憑證,所以瀏覽器會發出警告,直接忽略警告繼續瀏覽)
    最高管理者預設帳號為 admin,密碼也是 admin,登入後即可新增使用者。
  8. 新增使用者 SSL 憑證。
    重新開啟產生憑證的視窗 D:\gitblit-1.3.2\authority.cmd
    在左邊帳號列表,點選要新增 client 端憑證的帳號,再按右邊的「new certificate」。


    設定有效期限、client 端憑證密碼(隨意設定,不是使用者密碼,也不是設定檔 server.storePassword 密碼)、密碼提示


    輸入在 gitblit.properties 設定檔設定的 server.storePassword 密碼,再按「確定」。


    client 端 SSL 憑證產生成功。產生的憑證會在「D:\gitblit-1.3.2\data\certs\使用名稱」的資料夾中。
    裡面會有「使用名稱.zip」的壓縮檔,將此壓縮檔給該使用者,並告知 client 端憑證密碼,讓使用者安裝 client 端憑證。
  9. 使用者 client 端 Git 設定。
    使用者拿到「使用名稱.zip」後,解壓縮,我解縮縮到 D:/git-cert/xyz/
    裡面的 README.TXT 有安裝說明。以下是在 Git 上的安裝步驟。

    將 http.sslVerify 設成 false
    $ git config --global http.sslVerify false

    設定 client 端憑證
    $ git config --global http.sslCert /D/git-cert/xyz/xyz.pem

    讓執行指令時,不用每次都輸入 client 端憑證密碼 (執行第一行 openssl 指令時,須輸入一次密碼)
    openssl rsa -in /D/git-cert/xyz/xyz.pem -out /D/git-cert/xyz/xyz.key
    git config --global http.sslKey /D/git-cert/xyz/xyz.key

    到這邊就設定完成了,可以 clone 個遠端儲存庫測試看看。
    (假設 test 儲存庫,管理者已另外在網頁管理界面新增,且設定 xyz 帳號能存取 test 儲存庫)
    $ git clone https://xyz@git.example.com:8443/git/test.git
    
  10. 讓 Gitblit‏ 以系統服務啟動,重開機也會自動執行。
    編輯 D:\gitblit-1.3.2\installService.cmd
    裡面的內容為
    @REM Install Gitblit as a Windows service.
    
    @REM gitblitw.exe (prunmgr.exe) is a GUI application for monitoring 
    @REM and configuring the Gitblit procrun service.
    @REM
    @REM By default this tool launches the service properties dialog
    @REM but it also has some other very useful functionality.
    @REM
    @REM http://commons.apache.org/daemon/procrun.html
    
    @REM arch = x86, amd64, or ia32
    SET ARCH=amd64
    
    @REM Be careful not to introduce trailing whitespace after the ^ characters.
    @REM Use ; or # to separate values in the --StartParams parameter.
    "%CD%\%ARCH%\gitblit.exe"  //IS//gitblit ^
       --DisplayName="gitblit" ^
       --Description="a pure Java Git solution" ^
       --Startup=auto ^
       --LogPath="%CD%\logs" ^
       --LogLevel=INFO ^
       --LogPrefix=gitblit ^
       --StdOutput=auto ^
       --StdError=auto ^
       --StartPath="%CD%" ^
       --StartClass=org.moxie.MxLauncher ^
       --StartMethod=main ^
       --StartParams="--storePassword;gitblit;--baseFolder;%CD%\data" ^
       --StartMode=jvm ^
       --StopPath="%CD%" ^
       --StopClass=org.moxie.MxLauncher ^
       --StopMethod=main ^
       --StopParams="--stop;--baseFolder;%CD%\data" ^
       --StopMode=jvm ^
       --Classpath="%CD%\gitblit.jar" ^
       --Jvm=auto ^
       --JvmMx=1024
       
    第 12 行,設定 server CPU 種類,設定錯誤會無法啟動。我用 AMD CPU,就填 amd64
    (雖然第 11 行的說明是說可以填 x86, amd64, ia32,但我看沒有  ia32 資料夾,只有 ia64)
    第 28 行,將 --storePassword;gitblit; 拿掉。這樣啟動時會直接使用設定檔中設定的 server 憑證密碼。
    @REM Install Gitblit as a Windows service.
    
    @REM gitblitw.exe (prunmgr.exe) is a GUI application for monitoring 
    @REM and configuring the Gitblit procrun service.
    @REM
    @REM By default this tool launches the service properties dialog
    @REM but it also has some other very useful functionality.
    @REM
    @REM http://commons.apache.org/daemon/procrun.html
    
    @REM arch = x86, amd64, or ia32
    SET ARCH=amd64
    
    @REM Be careful not to introduce trailing whitespace after the ^ characters.
    @REM Use ; or # to separate values in the --StartParams parameter.
    "%CD%\%ARCH%\gitblit.exe"  //IS//gitblit ^
       --DisplayName="gitblit" ^
       --Description="a pure Java Git solution" ^
       --Startup=auto ^
       --LogPath="%CD%\logs" ^
       --LogLevel=INFO ^
       --LogPrefix=gitblit ^
       --StdOutput=auto ^
       --StdError=auto ^
       --StartPath="%CD%" ^
       --StartClass=org.moxie.MxLauncher ^
       --StartMethod=main ^
       --StartParams="--baseFolder;%CD%\data" ^
       --StartMode=jvm ^
       --StopPath="%CD%" ^
       --StopClass=org.moxie.MxLauncher ^
       --StopMethod=main ^
       --StopParams="--stop;--baseFolder;%CD%\data" ^
       --StopMode=jvm ^
       --Classpath="%CD%\gitblit.jar" ^
       --Jvm=auto ^
       --JvmMx=1024
       
    再來,使用管理員身分開啟命令提示字元,執行 D:\gitblit-1.3.2\installService.cmd


    安裝完成,即可在系統服務看到。


    要移除服務的話,編輯 D:\gitblit-1.3.2\uninstallService.cmd
    修改第 2 行,改成 server CPU 種類,再用管理員身分執行即可。
    @REM arch = x86, amd64, or ia32
    SET ARCH=amd64
    
    @REM Delete the gitblit service
    "%CD%\%ARCH%\gitblit.exe" //DS//gitblit

    註:安裝成服務後,用系統管理員身分開啟 D:\gitblit-1.3.2\gitblitw.exe,可以設定其他啟動選項。

參考:
Gitblit GO Installation & Setup
Client Setup and Configuration
Impossible to make GIT->Remote->PUSH, error cannot connect to HTTPS (Gitblit https 在 netbeans 不能用的解決方法)

沒有留言:

張貼留言