1. 程式人生 > >在Ubuntu上建立Git Server

在Ubuntu上建立Git Server

在 Ubuntu 系統中部署 Git Server

雖然有很多開源的Git倉庫,不過並非所有都盡人意,譬如Github,Gitlab等,不是伺服器不穩定,就是強制開源,又或者有檔案大小,專案數量等方面的限制,我們認為Git服務提供商設定的這些限制是合理的,是無可指責的,但從實際出發,這些免費倉庫並不一定都符合所有開發者的需求。或許對於個人開發者或者小團隊開發組來說,這些開源倉庫還是非常有用的,至少在減少成本方面有不可取代的地位,但也正如我之前所說,並非每一個開發者都認同這些,幸好作為一個優秀的CVS(control version system),除了具備分散式開發的特點外,還兼具有傳統CVS的功能。

也就是說,我們可以在本地建立Git Server,用於儲存和維護我們自己的程式碼。在您繼續閱讀以下內容前,需要說明的是,這些內容是基於Linux發行版中最流行之一的Ubuntu,當然也可以用於Debian作業系統,不過除此之外的其他Linux系統,甚至是Unix系統或者是Windows系統,作為使用者的您可能需要參考相關文獻及文件,有些命令可能不一樣,不過總體思路應該是一樣的。

準備工作

首先,你需要更新你的包檔案,包括更新你的系統,Git或者某些元件可能需要一些新的特性以支援,不過在Ubuntu系統中,這一步相當簡單,你只需要在Terminal中輸入

sudo apt-get update

完成這一步後,我們就可以安裝 git core 元件,通常情況下,我們安裝在系統中的git 只是一個簡單的客戶端,包括一些最基本的命令以及特性,而作為保管程式碼的倉庫,則還需要其他特性支援,所以我們需要安裝 git core,如果你之前已經安裝了 git,那麼仍然需要安裝 git core

sudo apt-get install git-core

完成這兩步之後,我們就可以開始配置 Git Server 了。

增加 developers 組以及建立儲存專案的倉庫

我們需要建立一個新的使用者組,並且將建立的倉庫都放置在名為 git 的使用者下,當然git 要隸屬於 developers 組,這樣也是為了方便將來的管理需要。

sudo groupadd developers
cd /home/
sudo mkdir git
sudo useradd git -d /home/git

以上四個命令分別為我們建立 developers 使用者組, 並在/home/ 資料夾下為名為 git 的使用者建立工作目錄,建立名為 git 的使用者賬戶並將它的工作目錄指向/home/git。

之後,我們需要將增加的使用者新增到 developers 使用者組中,這一步一般通過修改/etc/group 檔案達成,當然在正式修改 /etc/group 檔案前或許需要先做一個備份。找到你建立的使用者組,譬如這裡的例子中建立的 developers。你或許能在檔案中看到類似的一行:

developers:x:1003:

將剛才建立的使用者 git,新增到developers中,當然你也可以新增其他的“開發者”,就像這樣

developers:x:1003:git,tom,francklin,james

建立程式碼倉庫,並修改許可權。現在,讓我們回到建立好的工作目錄 /home/git/,你可能需要通過命令cd 來完成將工作路徑由 /etc/ 切換為 /home/git/,然後讓我們在 git 下建立一個新的倉庫

sudo mkdir yourproject.git
sudo chgrp developers yourproject.git
sudo chmod g+rws yourproject.git

我們需要將建立的資料夾的所有人由 root 修改為 developers,這樣當我們在本地上傳程式碼至倉庫時就不會遇到許可權不夠的問題。其次我們需要將倉庫的所有權修改,你也可以用“777”修改倉庫的許可權,不過不建議你這樣做。

sudo git init —bare —shared yourproject.git

在正式上傳程式碼至倉庫前,還需要對倉庫進行初始化,請注意這裡和平常使用方式的不同,—bare 指定建立的倉庫為公共倉庫,—shared 將使其他人都有許可權將他們的程式碼提交至這個倉庫中。

SSH

題外話:有朋友@我說這部分說的不夠詳細,有些雲裡霧裡。因此我決定修改本章的內容,力求各位能儘可能的看得懂。

首先,我們使用GIT的原因,是希望能夠分散式的管理程式碼,即便因為主倉庫受損,也不希望影響到本地的程式碼,或者說張三因為電腦中毒了,導致程式碼丟失,依然能夠通過其他人,或者程式碼倉庫恢復程式碼。通常,提交程式碼至程式碼倉庫有四種方法:

  • 本地提交
  • 通過HTTP提交程式碼
  • 通過SSH提交程式碼
  • 通過FTP提交程式碼

本地提交的意思是,你的程式碼倉庫就存放在本地硬碟或某個資料夾,你可以不借助任何其他工具而直接訪問你的倉庫。因此基於這樣一種情況,你可以完全無視本節內容,你只需要在本地硬碟上開闢一塊空間,建立對應的程式碼倉庫即可。

但是當你的程式碼需要聯網才能提交到倉庫的時候,你就需要考慮 HTTP、FTP、SSH 中的其中一種方式提交你的程式碼。這裡,我推薦使用SSH,其一、提交程式碼的時候不需要輸入密碼,其二、適用於絕大多數情況,其三、使用SSH提交程式碼的方式也最為容易實現。

使用SSH進行提交程式碼,你需要在GIT Server上先安裝SSH伺服器,如果你使用的系統是Ubuntu/Debian的話,可以使用 apt-get 安裝 SSH 伺服器。

sudo apt-get install openssh-server

如果是CentOS系統,那麼也可以使用 yum 安裝 SSH 伺服器,不過Linux企業版系統,一般預設有安裝 SSH 伺服器,所以你可以無視這一步。在伺服器上安裝好 ssh 之後,可以使用 ssh localhost 試著登入一下。在你沒做其他配置的情況下,一般會要求輸入使用者名稱和密碼,之後會提示登入成功。你可以在登入成功後,使用 ls -l 或者 ll 命令檢視當前工作路徑下有哪些檔案和目錄,之後,你需要使用 exit 退出 ssh 登入。

在本地客戶端上,你可能需要建立隸屬於 developers 組的使用者,當然這一步並非必須。

$ sudo groupadd developers  # 建立developers使用者組
$ sudo mkdir -p /home/git   # 建立主目錄
$ sudo useradd git -d /home/git -g developers # 建立git使用者,並制定其預設的工作路徑和隸屬的使用者組
$ sudo passwd git  # 為git設定密碼

完成這一步後,我們需要為客戶端設定 ssh 免登入,所謂 ssh 免登入指的是從客戶端登入伺服器端,不需要輸入使用者名稱和密碼,如果你覺得這一步很麻煩的話,那麼大可以無視這一節的內容。首先,將當前的使用者從管理員使用者切換為 git,並使用如下命令:

ssh-keygen -t rsa # 使用RSA協議,生成一對公私鑰,過程中出現的提示,一路回車即可
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] # 將生成的公鑰傳送至位於192.168.1.100的裝置上(GIT 伺服器)

這個過程可能會要求你輸入密碼,如果發現傳送失敗了,那麼請檢查用於登入192.168.1.100的使用者名稱和密碼是否正確。另外需要知道的是,如果建立了使用者而沒有指定密碼,那麼當你試圖登入裝置的時候一般會失敗。如果是後者的原因,那你需要用管理員的賬戶,登入到系統,並使用 passwd username 為使用者指定一個密碼,比如(以Ubuntu系統為例):

$ sudo passwd git # 為使用者git指定密碼為1234

之後你再次嘗試一次,那麼就會成功的把公鑰傳送給 GIT Server 了。你可以使用 ssh [email protected] 試一試,看看能不能免密碼登入至 GIT 伺服器上。​

程式碼倉庫

完成這些後,就可以上傳自己的程式碼、或者從 Git server 上拉取程式碼了。

git remote add origin [email protected]:/home/git/yourproject.git
git push origin master

可能出現的 Error

如果出現了類似的錯誤

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: POSSIBLE DNS SPOOFING DETECTED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
The RSA host key for .net has changed,
and the key for the according IP address xx.xx.xxx.xxx
is unknown. This could either mean that
DNS SPOOFING is happening or the IP address for the host
and its host key have changed at the same time.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Please contact your system administrator.
Add correct host key in /Users/user/.ssh/known_hosts to get rid of this message.
Offending key in /Users/user/.ssh/known_hosts:5
RSA host key for
.net has changed and you have requested strict
checking.
Host key verification failed.

處理方法是,刪除客戶端的 .ssh/known_hosts 檔案。

相關推薦

Ubuntu建立Git Server

在 Ubuntu 系統中部署 Git Server 雖然有很多開源的Git倉庫,不過並非所有都盡人意,譬如Github,Gitlab等,不是伺服器不穩定,就是強制開源,又或者有檔案大小,專案數量等方面的限制,我們認為Git服務提供商設定的這些限制是合理的,是無可指責的,但從實際出發,這些免費倉庫並不一定都

UBUNTUGIT SERVER

Git是一個開源的版本控制系統,由Linus Torvalds主導,用於支援Linux核心開發。每一個Git工作目錄,都是一個完整的程式碼庫,包含所有的提交歷史。有能力跟蹤所有的程式碼版本,而不會去依賴於網路與中央伺服器。 安裝 Git可以通過以下的命令進行安裝 sudo apt-get install gi

centos7建立vnc server

名稱 splay systemctl pla /dev/ 開啟 service pan bsp centos7跟6比設置方法不一樣 yum groupinstall "X Window System" -yyum grouplistyum groupinstall "GNO

Ubuntu git程式碼

第一次上傳步驟如下: 注:上傳成功後再次上傳可省略步驟1、5,步驟6需更改。 假設所傳程式碼為text.cc,所在位置為/home/project,github使用者名稱為:username,上傳的repository名字為:rname 1.在所傳程式碼所在目錄(/home/project)下

在Windows搭建Git Server

Git在版本控制方面,相比與SVN有更多的靈活性,對於開源的專案,我們可以託管到Github上面,非常方便,但是閉源的專案就會收取昂貴的費用。   那麼私有專案,如何用Git進行程式碼版本控制呢?我們可以自己構建Git伺服器。一般來說,在Linux上搭建Git的教程比較多,但是如何

在Windows搭建Git Server (2)

  第一步:下載Java,下載地址:http://www.java.com/zh_CN/   第二步:安裝Java.安裝步驟不再詳述。   第三步:配置Java環境變數.   &nb

ubuntu建立C++工程

一般一個C++工程包含如下東西: 程式入口main()檔案 其他.h和.cpp CMakeLists.txt main()函式裡包含.h檔案 .cpp要做成動態連結庫或者靜態連結庫,通過add_library 程式在執行的時候要連結動態連結庫或者共享連結庫。 target_link_libr

手把手教你在 Ubuntu 搭建 Git 伺服器

最近在寫一些指令碼,為了保持連續性,就在家也抽空趕進度,所以碰到了程式碼同步的問題,目前想到的方法有三個: 使用雲盤,這個拿來即用,但是因為雲盤還存放了其他一些東西,總是實時同步不太妥當; 使用 SVN,傳統的程式碼託管工具,一直在用; 使用

Git學習系列之Debian或Ubuntu安裝Git詳細步驟(圖文詳解)

前言   最早Git是在Linux上開發的,很長一段時間內,Git也只能在Linux和Unix系統上跑。不過,慢慢地有人把它移植到了Windows上。現在,Git可以在Linux、Unix、Mac和Windows這幾大平臺上正常運行了。   要使用Git,第一步當然是安裝Git了。   

Ubuntu下安裝git server

1.更新:防止安裝git依賴包時出錯 sudo apt-get update sudo apt-get upgrade 2.安裝openssh和openssh-client:安裝問題詳見我的其他部落格 3.安裝git sudo apt-get install git-cor

Ubuntu建立代理伺服器

原因 最近用爬蟲爬一些網站,發現有時候網路不太穩定,切換網路之後,就可以爬取到結果。 所以就有了構建代理的想法,通常網上的提供的代理,基本上有效時間很短,很不穩定。 為了能有幾個穩定的代理使用,要麼付費,要麼就自己搭建。所以最後選擇了在伺服器搭建代理。

如何在Ubuntu安裝GIT

<!--oogle_ad_section_star--> 今天花了很長時間才在Ubuntu 上安裝好GIT 1.6.0.2,最開始本不需要1.6,所以只用 1 sudo apt-get install git-core 就把GIT1.5安裝好。可以使用GIT://,SSH等方式。但後

Ubuntu安裝rabbitMq server

下載Server 標準Ubuntu和Debian倉庫 rabbitmq-server被包含在標準Debian和Ubuntu倉庫中。然而,包含的版本經常是過舊的。你可以從rabbitmq.com或者是Package Cloud中的apt倉庫中來安裝最

記錄ubuntu安裝git後,ssh連線不

僅用作記錄: 問題:安裝git後,連線ssh不成功, 已在本機生成私鑰和公鑰, ssh-keygen -t rsa -C "[email protected]"且在Git伺服器上配置了ssh

ubuntu建立程式軟連結

一、具體用法     ln -s 原始檔 目標檔案     當我們需要在不同的目錄,用到相同的檔案時,我們不需要在每一個需要的目錄下都放一個必須相同的檔案,我們只要在某個固定的目錄,放上該檔案,然後在其它的目錄下用ln命令連結(link)它就可以,不必重複的佔用磁碟空間,只生成目標檔案的一個映象。

Windows 2008 R2建立NTP Server及Win10客戶端配置

find banner conf window fin .com 計算機配置 輸入 自啟 你可以用windows2008 r2作為時間服務器,為其它windows機器或非windows機器提供時間同步服務。 關閉本端系統防火墻。 一、服務器端 “

已經在Git Server服務器導入了SSH公鑰,可用TortoiseGit同步代碼時,還是提示輸入密碼?

www 服務器端 com 技術分享 style 訪問 github 情況 ima GitHub雖好,但畢竟在國內訪問不是很穩定,速度也不快,而且推送到上面的源碼等資料必須公開,除非你給他交了保護費;所以有條件的話,建議大家搭建自己的Git Server。本地和局域網服務器都

使用Gitblit 在windows 部署你的Git Server

pos tail local 日誌信息 pac 分支 delete ava ip地址 Gitblit   Gitblit 是一個使用Java來管理Git的軟件,其本身有很多特性分支。關於Gitblit 的詳細情況可以到官網上查看: http://gitblit.com 閑話

linux服務器搭建gitolite實現對git server的版本庫的權限控制

搭建gitolite一、環境介紹: 1.1Git賬戶管理機器manageip:10.0.0.56 [root@manage ~]# cat /etc/redhat-release CentOS release 6.7 (Final) [root@manage ~]# hostname manage [roo

Ubuntu 搭建簡單的git server

簡介 Git 可以使用四種主要的協議來傳輸資料: 本地協議(Local), HTTP 協議, SSH(Secure Shell)協議 Git 協議。 在此,我們將會討論那些協議及哪些情形應該使用(或避免使用)他們。 這裡使用的是ssh協議,採用的是的gitcore搭建的,如果想搭建一個高