如何在mac下遠端搭建git伺服器?

時間 2021-06-01 21:52:14

1樓:天豬

樓上的方案有點舊了點。

簡單的說,截至到2023年底,你有兩種方式:

- 本機開個ssh即可,僅用於臨時協同。

- 使用gitlab, 高仿版github,,各大公司都在用,值得你擁有。

再看了下問題,糊塗了,你到底是在mac上搭建,還是在伺服器上?

前者的話,何來「遠端」? 後者的話,直接找個終端登入後就跟mac無關了

2樓:

Git支援的協議主要是四種:

本地: 需要檔案共享系統,許可權不好控制

HTTP:速度慢

SSH:同時支援讀寫操作,不支援匿名的讀取(Git預設協議)

GIT:最快

從搭建的難易程度和特點綜合篩選,最合適的還是ssh,並且大部分伺服器上基本都有ssh服務,所以省去了不少麻煩。乙個最基本的思路是給每乙個人乙個ssh帳號,這樣大家就可以通過使用者名稱和口令來訪問了,但是顯然這不是乙個好的選擇,這個做法有些多餘,並且對於repo的許可權很難管理。

在使用Github的時候,會利用rsa.pub公鑰/私鑰的方式,這樣在服務端擁有使用者的公鑰(*.pub)之後就可以,跨過繁瑣的口令,直接認證提交了,而服務端也會根據不同的使用者身份,對其許可權有著更加靈活的管理。

因此我們也採用這種方式。

服務端為了使遠端庫訪問更加直觀,先在伺服器上建立乙個名為git的賬戶,這樣以後clone的時候就如下面的格式了:

git clone git@server:some.git

建立新的使用者,建立repo等目錄

$sudo adduser git

$su git

$cd ~

$mkdir repos

在HOME下的.ssh目錄,如果沒有則建立,建立乙個authorized_keys檔案,這個檔案就是用來管理所有git使用者的公鑰的,也就是這裡面的使用者對於專案有著R+W的許可權。

客戶端對於每乙個客戶端,我們需要生成一對金鑰和公鑰,如果是Github使用者,那麼.ssh目錄下,一定有id_rsa.pub和id_rsa兩個檔案,其中第乙個是系統生成的公鑰,另乙個是自己要儲存好的金鑰。

如果沒有的話,可以在終端執行:ssh-keygen來生成,完成後,將自己的公鑰提交給管理員,這就是乙個註冊的行為。

完成最後一步,管理員將團隊成員的公鑰新增到authorized_keys中,比如將同學susie加入:

$ cat susie.pub >> authorized_keys

至此,大家可以通過git@server:repos/some.git來訪問公共的版本庫了。

問題安全問題,成員可以登入git使用者的shell,細節許可權如分支等不好控制

管理麻煩,新建repo,或者增加成員比較麻煩,尤其是修改的時候

Gitolite 也是基於SSH協議構建的方便管理git repo的應用,可以通過其原始碼安裝.

安裝安裝按照官方給定的文件就可以輕易的實現:

如果執行最後一條命令的時候,gitolite不識別,則可以通過下面兩種方式解決:

將gitolite新增到PATH裡面

通過$HOME/bin/gitolite setup -pk YourName.pub 執行

至此,gitolite在服務端,搭建完畢,會發現此時HOME目錄下增加了乙個檔案projects.list和乙個目錄repositories,後者就是我們的版本倉庫了,每當新建repo的時候,就會在其中建立。

使用是時候說一下gitolite的管理模式了,他會建立乙個gitolite-admin的repo,管理員就是通過像這個repo提交配置檔案而實現對git伺服器的控制的。

首先,將這個repo匯入到我們的workspace:在此之前,需要配置本地的ssh,gitolite要求管理員的本地金鑰和其註冊公鑰的名字一致,比如我們安裝的時候指定 -pk後面為 admin.pub 則管理員本地需要由admin對應的私鑰。

我們可以通過~/.ssh/config來進行配置(注:有些系統可以用conf,Mac OSX 下無效,只能用config).

host gitolite

user git

hostname yourhostname.com

port 22

identityfile ~/.ssh/admin

這樣,當我們訪問gitolite的時候就會自動根據配置檔案執行,配置完成後可以根據下面的命令,將gitolite-admin轉移到本地。

git clone gitolite:gitolite-admin.git

轉殖完成後,可以發現,gitolite-admin下面有兩個目錄,其中conf儲存配置檔案,我們可以通過編輯裡面的gitolite.conf檔案,管理git伺服器,keydir目錄儲存使用者的公鑰pub檔案。

當我們講修改後的repo 提交的時候,gitolite就會自動的應用這些配置,管理過程就方便了很多。

配置規則

開啟gitolite.conf檔案可以看到其中的示例:

To add new users alice, bob, and carol, obtain their public keys and add them to 'keydir' as alice.pub, bob.pub, and carol.

pub respectively.

To add a new repo 'foo' and give different levels of access to these users, edit the file 'conf/gitolite.conf' and add lines like this:

repo fooRW= aliceRW

= bobR

= carol

上面的配置檔案就是新建了乙個repo foo,並且新增了三位專案成員,每乙個人的許可權不同。提交push後,管理便生效了。

我們可能會需要乙個web介面來管理這些專案,我目前知道的有三種方式:

git原始碼中自帶的元件,cgi指令碼實現,使用gitolite服務

gitlab開源框架,基於ROR,新版本不再使用gitolite服務

FB開源PHP框架 phabricator,功能高階上檔次

Mac 下如何搭建 PHP 開發環境?

mac自帶了php和apache,如果預設的是自帶的php5.5的版本樣。可以使用brew安裝自己適合的版本。我之前也用了mac搭建,現在用的是docker。mac搭建php開發環境。這個你可以嘗試參考一下。 從2018年4月開始Homebrew php停止更新了,所以有一些老的homebrew的安...

如何在 SSH 下遠端使用 IDE 編譯和除錯?

小板凳 clion 從2018.3.4之後支援遠端toolchain了。除了cmake載入慢之外,體驗和本地類似。親測好用。 Nextchen 你要想學好,gdb 你是繞不過去,繞過了,其實 vim 不是個事。你這個問題和 vim 一點關係都沒有,也和 idea emacs 沒關係 凱文爸爸 雖然早...

如何在多台低效能計算機上搭建私有雲計算服務?

話說用筆記本做科學計算意義何在。另外開個虛擬機組集群,還不如直接用物理機。如果真想這麼幹,用半虛擬化的工具比如docker吧。 有乙個範例是 Freeshell.ustc.edu.cn可以參考一下,具體的還要 李博傑大神來講解OpenVZ會是乙個好的方案 吳志偉 理想化的把幾台物理機合成乙個虛擬機器...