Synology DS213J 群暉NAS git server架設方法!


最近單位購入一台Synology  DS213J用作數據存儲。

本人打算將一些項目的源代碼也放在上面,他本身的套件中心提供了SVN SERVER和GIT SERVER。

設置SVN SERVER非常簡單,基本上安裝成功,設定賬號,即可使用。

但是GIT SERVER的架設遇到了麻煩,按照他的幫助說明,是無法成功的,經過嘗試,發現其實就是寫幫助的人少寫了一點內容(也就是目錄權限的修改),即可解決。

現將解決方法記錄如下,作為自己的備忘錄,如果能幫助到有同樣需求和同樣麻煩的人,那么也是很開心的事情。

1.首先,進入DSM,然后在套件中心中找到GIT SERVER,下載安裝即可。

2.看看DSM幫助中心對GIT SERVER使用的幫助:

若要允許用戶使用 Git:

請使用擁有管理權限的帳戶登錄 DSM。進入控制面板 > 終端機並啟用 SSH 服務。
請啟動 Git 套件,並選擇用戶以向其提供從資料庫簽入與簽出文件的能力。
注:

通過稱為 git-shell 的殼工具,Git 用戶將被限制僅可進行 Git 相關活動。此登錄殼將應用於 Git 用戶可進行確保這些帳戶僅用於 Git 操作。因此,Git 用戶只能使用 SSH 連接來推拉 Git 存儲庫,而沒有 DSM 完全的訪問權限。

若要創建 Git 存儲庫:

請通過 SSH 服務以 root 或 admin 身份登錄 Synology 服務器。
將目錄更改為 /volumeX(X 為卷編號)以創建文件夾。例如,“git_repos”。該文件夾將擁有與 Linux 相同的權限。
請在該文件夾中運行 git init 來創建空存儲庫。
創建存儲庫后,Git 客戶端用戶可輸入以下命令來訪問該存儲庫:
git clone ssh://[Git 用戶]@[您的 Synology 服務器 IP 地址或主機名]/[Git 存儲庫路徑]

  這里鄙視一下寫幫助的這個人,我嚴重懷疑群暉的工作人員是沒有真的在他們機器上測試過GIT SERVER的。因為按照他幫助說的方法,你是不可能成功的。

遇到這個問題的時候我搜遍了網絡,也沒有第二個人有這個問題的描述,只是查找到不少從頭安裝GIT SERVER的文章,而且其中還充斥着很多無用的步驟。

3.正確的方法如下:

安裝成功之后,在DSM中創建一個GIT用戶,比如我創建的用戶為jackwong,然后進入DSM左上的功能菜單,打開GIT SERVER窗口,將允許訪問GIT庫的用戶打上勾。比如我就將jackwong這個用戶打上了勾。

然后進入控制面板 > 終端機並啟用 SSH 服務。

到這一步,DSM的設置任務就完成了。

接着通過SSH連接到你的這個DS213J上。登陸的時候當然采用root登陸,密碼就是admin的密碼。

登陸進去之后,就是Linux命令行操作了。

首先進入你的磁盤卷,一般名字是volumeX,X表示你創建的磁盤空間數量,一般這個機器就兩個硬盤,一般就是volume1了

cd /volume1

接着創建一個git庫目錄

mkdir git_repos

然后再里面創建一個測試項目

cd git_repos

mkdir gittest

然后進入這個測試項目目錄

cd gittest

進行GIT初始化

git init --bare

由於是root用戶執行的操作,所以有一個最最重要的步驟,就是將這個寶庫的整個目錄的主人要修改為你的git用戶

chown -R jackwong:users  git_repos

如果你還想讓其他用戶也一起共享的話,

還需要將其他用戶的權限設置為可寫

chmod -R 775 git_repos

當然,這里的git_repos是整個庫目錄,我是為了省事情,如果不同項目需要區別對待,那就對里面的項目目錄進行設置就可以了。

總的原則就是某個用戶要想能推送文件到服務器,必須打開這個用戶對整個項目目錄,包括子目錄的寫權限,否則就會失敗。

 

到這里,服務器就設置完畢了。

在客戶端進入git 命令行,測試一下是否可以下載和上傳。

git clone ssh://jackwong@192.168.0.1/volume1/git_repos/gittest

然后再本地添加一個文件並提交到本地版本庫中

echo "t1.txt" >t1.txt

git add t1.txt

git commit -m "add t1.txt"

最后測試一下推送到GIT SERVER上

git push origin master

顯示成功!

 

如果要添加其他用戶,只需要在DSM中創建賬號,並且在GIT SERVER界面中允許訪問的勾打上。並保證這個用戶在git_repos下的對應項目文件夾中具有寫權限就可以了。

 

PS :GIT的使用和SVN這類中心式的架構有很大不同。要把本地項目創建到GIT SERVER上,需要費點周折。

簡單的說可以按照如下步驟:

1.先在本地創建項目,有個項目目錄

2.然后在本地的這個項目目錄中執行git --bare init進行初始化。

3.然后將需要提交的文件提交到本地

4.然后將項目目錄COPY到服務器上,只COPY  .git 目錄就行,其他工作目錄不用COPY的。

5.在本地就可以推送到遠程服務器上了。

還有一種方法:

如果本地初始化的時候使用的是git init,那么推送就會出現問題。

解決方法是將本地的目錄全部COPY到服務器上。

然后再服務器對應目錄下面執行:

git config --bool core.bare true
接着刪除掉除.git目錄之外的所有文件和目錄即可。
這樣本地就能順利推送了。

當然直接使用

git clone --bare hello hello.git
這樣直接導出裸庫,然后將hello.git 這個目錄直接上傳到服務器上也可以。不過地址需要加上hello.git這個的目錄。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM