[Git]使用Synology NAS建立Git Server(以Synology DS212j為例)

  • 9616
  • 0
  • Git
  • 2016-01-06

[Git]使用Synology NAS建立Git Server(以Synology DS212j為例)
有些專案需隱私不能公開程式碼,又想做Git版本控管的話,那該如何是好?
假若剛好手頭上有一台NAS的話,是否可以自己架設Git Server呢?
出於這樣的想法,剛好手頭上又有一台Synology DS212j,就來實做看看,順便做個紀錄。 

由於最近開始接觸Git、GitHub,進而了解上傳到GitHub,想免費使用是需要公開程式碼 ,而想要不公開程式碼則需付費。
(收費標準:https://github.com/pricing)

對於承接專案的人來說,有許多的不便捷。
剛好手邊有台Synology DS212j,就在想說可不可以運用來架Git Server,讓專案程式碼可以放在自己的伺服器上,以避免程式碼流出的風險。

以下將逐步說明架設方法
(這只是我記錄架設過程的筆記,如有錯誤請糾正)

Step1.
首先,先到「控制台」→「終端機&SNMP」→勾選「啟動SSH功能」

Step2.
下載Git Server套件,到「套件中心」→點選左邊「全部」→右邊尋找「Git Server」並點選安裝套件

Step3.
建立共用資料夾,到「控制台」→點選左邊「共用資料夾」→「新增共用資料夾」(這邊說明命名為GitRepos)

Step4.
設定共用資料夾GitRepos權限(勾選你要給予權限的帳號即可)

Step5.
在共用資料夾GitRepos下,新增版本管理用的資料夾(這邊說明命名為Project)

Step6.
找到剛剛安裝的Git Server,並設定勾選哪些帳號可以使用

Step7.
使用Putty連結到Synology NAS,這邊需要以root才可登入
(Putty:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)

Step8.
初始化Git
移動所在位置到我們創建好的版本管理目錄(/volume1/GitRepos/Project)
指令:cd /volume1/GitRepos/Project
※可使用指令「pwd」來得知目前所在的位置

接著執行Git指令「git --bare init」進行初始化

Step9.
回到上一層目錄
指令:cd ..
此時應該會在/volume1/GitRepos

接著需設定版本管理資料夾的寫入讀取的權限及擁有權限的群組
設定寫入讀取的權限指令:chmod -R 775 Project/
設定擁有權限的群組指令:chgrp -R users Project/
可使用指令「ls -al」查看目前目錄的詳細資料

補充:
drwxrwxrwx  ?  root  users  ????  Dec  15  15:35  Project
最前面10碼為目前檔案屬性
第一碼"d"表示該檔案為一個目錄是dirtectory(目錄)的縮寫,"-"表示這是一個一般檔案
而後九碼表示為不同用戶組的使用權限,將它拆為三組來看,第一組的rwx代表「檔案擁有者」可使用權限,第二組為「群組用戶」可使用權限,第三組為「其他用戶」可使用權限
r:讀取權限
w:寫入/修改權限
x:執行程序的權限
root目前的位置代表檔案擁有者
users目前的位置代表檔案屬於哪個群組(一般預設為檔案擁有者的群組)

其他更詳細的解說請參照以下網址自行研讀:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=434579

Step10.
複製現有的儲存庫,測試連線是否正常
執行Git Shell
使用Git指令「git clone ssh://使用者帳號@IP位置:/volume1/GitRepos/Project/」
執行後會需要輸入使用者的密碼,沒看到任何的Error message代表建置成功

Step11.
測試是否有寫入權限
首先切換目錄到Project內,接著我們在目錄內建立一個OK.txt
執行Git指令「git status」查看看目前Working directory中所有檔案的狀況

可以看到我們新增的OK.txt是未被追蹤的
執行Git指令「git add .」將它加入追蹤
再執行一次「git status」,可以看到OK.txt的狀態已被改變

將檔案送至Git檔案庫
Git指令「git commit -m '這次作業的註解說明'」
(這邊範例指令為「git commit -m 'Test OK'」)

檔案送至本機檔案庫後,嘗試將本機檔案庫的資訊送至遠端檔案庫
Git指令「git push origin master」
在輸入使用者密碼後,無出現Error message就表示執行順利

寫完收工~
歡迎前輩大神們前來傳授心法~