實戰 Win 7下安裝 Gitosis (Windows下的 git 伺服器)

來源:互聯網
上載者:User

Gitosis 是一個使用SSH管理Git倉庫的服務端工具,有意思的是,該軟體用來添加使用者和設定許可權的介面不是網頁,而是一個特殊的 Git 倉庫。你只需要設定好某個項目,然後推送,Gitosis 就會隨之改變伺服器設定,酷!

        在Linux下的安裝方法已經非常成熟,上網Google一下就有很多,而在Windows下的安裝則花了我不少功夫,只要是有時候碰到問題無從入手,以下將整個安裝過程詳細記錄下來。

總體分為如下幾大步驟:

  • 下載安裝Cygwin
  • 修改安裝後相關目錄的存取權限
  • 安裝 ssh 守護進程服務
  • 在Windows防火牆內開放上述 ssh 服務需要的22連接埠
  • 安裝配置python-setuptools
  • 安裝配置Gitosis
  • 使用Gitosis

一)下載安裝Cygwin

1)到http://www.cygwin.com/官方網站下載 Cygwin 的線上安裝程式 setup.exe。

2)以管理員身份運行setup.exe開始安裝Cygwin

3)Cygwin安裝過程

點擊下一步繼續

選擇“Install from Internet”

設定Cygwin的安裝路徑Root Directory,選擇“All Users(RECOMMENDED)”

設定Cygwin線上下載的資料包的儲存路徑Local Package Directory

選擇“Direct Connection”

選擇下載檔案的鏡像地址後點擊下一步(選擇不同的地址會影響下載速度)

開始下載相關資料包

如果是首次安裝Cygwin,將會彈出如下介面,點擊確定繼續即可

選擇預設並沒有包含的相應包,包括:

  • devel 分類下的 git
  • net 分類下的 openssh
  • Python 分類下的 python(這裡順便記錄一下python的版本號碼,後面會用到,如2.6)

點擊下一步繼續 

到了漫長的下載等待介面了 

點擊完成後Cygwin就安裝完畢了 

二)修改安裝後相關目錄的存取權限

進入“開始/所有程式/Cygwin/Cygwin Bash Shell”,右鍵以管理員身份運行“Cygwin Bash Shell”,在命令列中分別運行如下命令:

$ chmod +r /etc/passwd 
$ chmod u+w /etc/passwd
$ chmod +r /etc/group
$ chmod u+w /etc/group

啟動並執行如下:

三)安裝 ssh 守護進程服務

繼續執行如下命令:

$ ssh-host-config

根據命令的提示分別回答:yes、yes、yes、ntsec tty、no、yes、[密碼]、[重複密碼],參考如下:

(注意圖中圈住部分的回答)

至此ssh服務安裝完畢!

開啟Windows的命令列,運行“> net start sshd”啟動ssh服務(也可以到Windows服務中啟動)。

四)在Windows防火牆內開放上述 ssh 服務需要的22連接埠

進入“控制台/系統與安全/Windows防火牆/進階設定(在左側邊欄)”,添加新的入站規則:

名稱可以根據自己的喜好相應修改。

五)安裝python setuptools

先設定python路徑的存取權限,保證所有使用者都可以訪問:

$ chmod +r /lib/python2.6/ -R

2.6是所安裝python的版本號碼,要對上你安裝的版本號碼才行,我裝的時候是2.6,如果忘記了,可以在Cygwin的命令終端輸入“$ python -v”查看一下。

到 Python Package Index 首頁下載對應版本的python setuptools,如2.6版對應要下載 setuptools-0.6c11-py2.6.egg。

將setuptools-0.6c11-py2.6.egg複製到/home/your_user_name目錄下(也可以按自己的需要複製到其它地方,注意下面的運行路徑正確即可),然後在該目錄的Cygwin終端下運行如下命令安裝:

$ ./setuptools-0.6c11-py2.6.egg 

看到輸出類似如下的資訊就表示安裝成功了:

Processing setuptools-0.6c11-py2.6.egg 
Copying setuptools-0.6c11-py2.6.egg to /usr/lib/python2.6/site-packages
Adding setuptools 0.6c11 to easy-install.pth file
Installing easy_install script to /usr/bin
Installing easy_install-2.6 script to /usr/bin

Installed /usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg
Processing dependencies for setuptools==0.6c11
Finished processing dependencies for setuptools==0.6c11

六)安裝配置Gitosis

1) 運行如下命令將Gitosis管理端的git倉庫下載下來:

$ mkdir sources 
$ cd sources
$ git clone git://eagain.net/gitosis.git

2) 下載成功後再運行如下命令進行初始化:

$ cd gitosis  
$ python setup.py install

這將會輸出一大堆的資訊,如果沒有出現問題,最後那一行輸出的資訊類似於“Finished processing dependencies for gitosis==0.2”。

3) 到“控制台/使用者帳戶和家長監護服務”添加一個賬戶名稱為“git”的帳號,密碼自定,類型選標準使用者即可。

4) 繼續在Cygwin終端運行如下命令,將剛添加的git帳號添加到Cygwin的passwd檔案:

$ mkpasswd -l -u git >> /etc/passwd 

再使用你喜歡的任何方式查看一下passwd檔案(檔案的最後那一行),確認git帳號已經添加進去。

5) 拷貝你的公開金鑰檔案到目錄“/tmp/id_rsa.pub”,再在終端運行“$ chmod 755 /tmp/id_rsa.pub”修改檔案的許可權

    如果你還沒有相應的公開金鑰,就自己產生一個,參考GitHub Guide上的“Set Up SSH Keys”指引或參考基於互連網的Git開發環境搭建(Windows系統)中第3點“ 產生 Git 要使用的 ssh key”的相關指引。

6)以git使用者開啟一個新的Cygwin終端(如所示,位置在開始/所有程式/Cygwin)

在該終端內運行如下命令初始化公開金鑰的配置:

$ gitosis-init 

如果你運氣好的話,成功後你將會看到如下資訊:

如果出現錯誤,參考下面第7步的處理

7)如果第6步出現類似如下錯誤資訊:

0 [main] python 4268 D:/cygwin/bin/python.exe: *** fatal error - unable to remap //?/D:/cygwin/lib/python2.6/lib-dynload/select.dll to same address as parent: 0x3E0000 != 0x410000

按如下說明處理:

    關閉所有當前開啟的所有Cygwin終端視窗,停止sshd服務,然後開啟Windows的CMD命令列視窗,切換到cygwin/bin目錄,運行ash命令,會出現$命令列,繼續輸入“$ /bin/rebaseall”,如果沒有任何錯誤資訊就OK了,參考如下:

錯誤處理完畢後,重新啟動sshd服務,再按上面第6步重新操作一遍即可。

8)切換回以管理員身份開啟的那個Cygwin終端視窗(如果因第7步已經關閉則重新開啟一個),運行如下命令

$ chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update 

至此Gitosis成功安裝完畢!

七)使用Gitosis

1)將Gitosis管理端的git倉庫檢出來,位置隨意

$ git clone git@your-server-name:gitosis-admin.git

以下嘗試建立一個test倉庫,並配置存取權限。

2)進入剛剛檢出的目錄gitosis-admin,編輯gitosis.conf檔案,增加如下資訊:

[group test]
writable = test
members = your_email_from_ssh_key

儲存,並提交、push到gitosis-admin.git倉庫。

3)在你喜歡的地方建立一個空目錄test,裡面放個readme.txt檔案,然後開啟Git Bash終端,進入到test目錄內運行如下命令,test.git倉庫就會在服務端自動建立了(注意經過第2步後是不能直接"$ git clone"出來的,會報錯,必須自己有個非空的git倉庫然後push上去才行)。

$ git add .
$ git init
$ git commit -m init
$ git remote add origin git@your-server:test.git
$ git push origin master

現在你到“cygwin/home/git/repositories”目錄下看看,test.git倉庫已經穩放在那裡了!

test倉庫只是一個原理示範,任何其他的git倉庫操作是類似的。

參考資料:

Setting up Gitosis on Windows 7

python.exe: *** fatal error - unable to remap

Git 伺服器軟體 gitosis 的改進

Pro Git:伺服器上的Git 許可權管理器Gitosis

Gitosis自身的Readme

還有個git倉庫管理工具叫gitolite,用perl寫的,聽說可以控制到分支的許可權等更多功能,有興趣的可以參考一下下面的連結:

Gitolite 構建 Git 伺服器

原帖:http://rongjih.blog.163.com/blog/static/33574461201121611154627/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.