1. 程式人生 > >ubuntu完美搭建git伺服器

ubuntu完美搭建git伺服器

最近公司專案需要用到Git來管理專案,正好逢週末花了點時間在虛擬機器的unbuntu系統中搭建了下git的伺服器,由於搭建過程中多多少少遇到了一些小問題,再因為個人記性不太好,所以在這裡記錄下來,以備不時之需。開始我已經在虛擬機器的ubuntu12.04系統下已經裝過一次,忘了記錄,這次重新再在虛擬機器的ubuntu13.10系統下一步一步的來搭建,後面介紹包括了在客戶端機器(宿主機器win7)安裝git客戶端,及客戶端git bash的簡單使用。

一、安裝git伺服器所需軟體

開啟終端輸入以下命令:

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. ubuntu:~$ sudo apt-get install git-core openssh-server openssh-client  

git-core是git版本控制核心軟體

安裝openssh-server和openssh-client是由於git需要通過ssh協議來在伺服器與客戶端之間傳輸檔案

然後中間有個確認操作,輸入Y後等待系統自動從映象伺服器中下載軟體安裝,安裝完後會回到使用者當前目錄。如果

安裝提示失敗,可能是因為系統軟體庫的索引檔案太舊了,先更新一下就可以了,更新命令如下:

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. ubuntu:~$ sudo apt-get update  

更新完軟體庫索引後繼續執行上面的安裝命令即可。

安裝python的setuptools和gitosis,由於gitosis的安裝需要依賴於python的一些工具,所以我們需要先安裝python

的setuptools。

執行下面的命令:

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. ubuntu:~$ sudo apt-get install python-setuptools  

這個工具比較小,安裝也比較快,接下來準備安裝gitosis,安裝gitosis之前需要初始化一下伺服器的git使用者資訊,這個

隨便填。

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. ubuntu:~$ git config --global user.name "myname"   
  2. ubuntu:~$ git config --global user.email "******@gmail.com"
      

初始化伺服器使用者資訊後,就可以安裝gitosis了,gitosis主要是用於給使用者授權,設定許可權也算是很方便的。

可以通過以下命令獲取gitosis版本檔案

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. ubuntu:~$ git clone https://github.com/res0nat0r/gitosis.git  

注意:中間有兩個是數字零

獲取gitosis檔案後,進入到檔案目錄下面

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. ubuntu:/tmp$ cd gitosis/  

接著使用python命令安裝目錄下的setup.py的python指令碼進行安裝

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. ubuntu:/tmp/gitosis$ sudo python setup.py install  

到這裡,整個安裝步驟就完成了,下面就開始對git進行一些基本的配置。

二、建立git管理員賬戶、配置git

建立一個賬戶(git)作為git伺服器的管理員,可以管理其他使用者的專案許可權。

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. ubuntu:/tmp/gitosis$ sudo useradd -m git  
  2. ubuntu:/tmp/gitosis$ sudo passwd git  

然後再/home目錄下建立一個專案倉庫儲存點,並設定只有git使用者擁有所有許可權,其他使用者沒有任何許可權。

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. ubuntu:/tmp/gitosis$ sudo mkdir /home/gitrepository  
  2. ubuntu:/tmp/gitosis$ sudo chown git:git /home/gitrepository/  
  3. ubuntu:/tmp/gitosis$ sudo chmod 700 /home/gitrepository/  

由於gitosis預設狀態下會將倉庫放在使用者的repositories目錄下,例如git使用者的倉庫地址預設在

/home/git/repositories/目錄下,這裡我們需要建立一個連結對映。讓他指向我們前面建立的專門用於存放專案

的倉庫目錄/home/gitrepository。

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. ubuntu:/tmp/gitosis$ sudo ln -s /home/gitrepository /home/git/repositories  

這裡我將在伺服器端生成ssh公鑰,如果想在其他機器上管理也可以在其他機器上生成一個ssh的公鑰。

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. ubuntu:/home/git$ ssh-keygen -t rsa  

這裡會提示輸入密碼,我們不輸入直接回車即可。

然後用剛生成公鑰id_rsa.pub來對gitosis進行初始化。


出現如上資訊說明gitosis已經初始化成功。

gitosis主要是通過gitosis-admin.git倉庫來管理一些配置檔案的,如使用者許可權的管理。這裡我們需要對其中的一

個post-update檔案新增可執行的許可權。

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. ubuntu:/home/git$ sudo chmod 755 /home/gitrepository/gitosis-admin.git/hooks/post-update  

三、伺服器上建立專案倉庫

使用git賬戶在伺服器上建立一個目錄(mytestproject.git)並初始化成git專案倉庫。

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. ubuntu:/home/git$ su git  
  2. $ cd /home/gitrepository  
  3. $ mkdir mytestproject.git  
  4. $ git init --bare   
  5. $ exit  

如果出現以下資訊就說明已經成功建立了一個名為mytestproject.git的專案倉庫了,新建的這個倉庫暫時還是空

的,不能被客戶端clone,還需要對gitosis進行一些配置操作。

四、使用gitosis管理使用者操作專案的許可權

首先需要在前面生成ssh公鑰(用來初始化gitosis)的機器上將gitosis-admin.git的倉庫clone下來。

在客戶端機器上新建一個目錄用於存放gitosis-admin.git倉庫

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. ubuntu:~$ mkdir gitadmin  
  2. ubuntu:~$ cd gitadmin/  
  3. ubuntu:~/gitadmin$ git clone [email protected]:gitosis-admin.git  

clone正確會顯示一下資訊


clone下來會有一個gitosis.conf的配置檔案和一個keydir的目錄。gitosis.conf用於配置使用者的許可權資訊,

keydir主要使用者存放ssh公鑰檔案(一般以“使用者名稱.pub”命名,gitosis.conf配置檔案中需使用相同使用者名稱),用

於認證請求的客戶端機器。

現在讓需要授權的使用者使用前面的方式各自在其自己的機器上生成相應的ssh公鑰檔案,管理員把他們分別按使用者名稱

命名好,複製到keydir目錄下。

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. ubuntu:~$ cp /home/aaaaa/Desktop/zhangsan.pub /home/aaaaa/gitadmin/gitosis-admin/keydir/  
  2. ubuntu:~$ cp /home/aaaaa/Desktop/lisi.pub /home/aaaaa/gitadmin/gitosis-admin/keydir/  

繼續編輯gitosis.conf檔案

[gitosis]

[group gitosis-admin]
####管理員組
members = [email protected]
####管理員使用者名稱,需要在keydir目錄下找到相應的.pub檔案,多個可用空格隔開(

下同)
writable = gitosis-admin
####可寫的專案倉庫名,多個可用空格隔開(下同)


[group testwrite]
####可寫許可權組
members =
zhangsan####組使用者
writable = mytestproject
####可寫的專案倉庫名

[group testread]####只讀許可權組members =lisi####組使用者readonly= mytestproject####只讀專案倉庫名

因為這些配置的修改只是在本地修改的,還需要推送到伺服器中才能生效。

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. ubuntu:~/gitadmin/gitosis-admin$ git add .  
  2. ubuntu:~/gitadmin/gitosis-admin$ git commit -am "add a user permission"  
  3. ubuntu:~/gitadmin/gitosis-admin$ git push origin master  

推送成功會顯示下面提示資訊


又是後新增的使用者不能立即生效,這時候需要重新啟動一下sshd服務

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. ubuntu:~/gitadmin/gitosis-admin$ sudo /etc/init.d/ssh restart  

現在,服務端的git就已經安裝和配置完成了,接下來就需要有許可權的組成員在各自的機器上clone伺服器上的相應

專案倉庫進行相應的工作了。

五、客戶端(windows)使用git

安裝完成後右鍵選單會出現幾個git相關的選單選項,我們主要使用其中的git bash通過命令列來進行操作。

在本地新建一個目錄,使用git初始化這個目錄,然後再裡面新建一個文字檔案用於測試,最後關聯到git伺服器倉庫

中的相關專案,最後上傳本地版本到伺服器。

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. $ mkdir testgit  
  2. $ cd testgit  
  3. $ git init  
  4. $ echo "this is a test text file,will push to server" > hello.txt  
  5. $ git add .  
  6. $ git commit -am "init a base version,add a first file for push to server"  
  7. $ git remote add origin [email protected]:mytestproject.git  
  8. $ git push origin master  

這樣服務端就建立好了一個mytestproject.git的倉庫的基礎版本了,現在其他組員只要從服務端進行clone就可以

了。

window下面進入到需要克隆的本地目錄下面右鍵選擇git bash選項,輸入

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. $ git clone [email protected]:mytestproject.git  

就可以把專案clone到本地倉庫了。

下面進行簡單的修改和提交操作

[sql] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. $ cd mytestproject  
  2. $ echo "this is another text file created by other" >another.txt  
  3. $ git add .  
  4. $ git commit -am "add a another file by other"  
  5. $ git push origin master  


最後推送到伺服器成功會顯示如下資訊

相關推薦

ubuntu完美搭建git伺服器-完善版

最近公司專案需要用到Git來管理專案,正好逢週末花了點時間在虛擬機器的unbuntu系統中搭建了下git的伺服器,由於搭建過程中多多少少遇到了一些小問題,再因為個人記性不太好,所以在這裡記錄下來,以備不時之需。開始我已經在虛擬機器的ubuntu12.04系統下已經裝過一次

ubuntu完美搭建git伺服器

最近公司專案需要用到Git來管理專案,正好逢週末花了點時間在虛擬機器的unbuntu系統中搭建了下git的伺服器,由於搭建過程中多多少少遇到了一些小問題,再因為個人記性不太好,所以在這裡記錄下來,以備不時之需。開始我已經在虛擬機器的ubuntu12.04系統下已經裝過一次,

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

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

Ubuntu搭建Git伺服器

下面搭建的git伺服器的簡易網路拓撲圖如下所示: 一、安裝及配置所需軟體[Git伺服器,[email protected]] git-core是git版本控制核心軟體,而且git是通過ssh協議來在伺服器與客戶端之間傳輸檔案,故openssh-server、o

Ubuntu 18.04.1 LTS下搭建git伺服器

sudo apt-get install git 安裝好git sudo adduser git 系統會提示設定密碼,此時請設定好你的密碼,還會要你設定email之類的此時可以按Enter回車預設為空 sudo vim /home/git/.ssh/authorized_keys 此時把你電腦裡

Linux Ubuntu搭建Git伺服器

之前介紹過如何在Windows上搭建Git倉庫伺服器,不過伺服器用的比較多的還是Linux,因為便宜(同一個VPS商一般來說Linux比Windows便宜),沒有圖形介面,低配置VPS的也可以跑動Linux,開源免費,我感覺比較靈活,下載源也方便,手機都可以ss

搭建Git伺服器Ubuntu虛擬機器)和windows客戶端

         一直以來用Git都是用的別人的伺服器, 比如oschina 和github,  今天因為工作需要在自己的ubuntu上搭建了自己Git 伺服器, 以下記錄一些步驟和碰到的問題

ubuntu搭建git伺服器教程及常見問題

最近公司專案需要用到Git來管理專案,正好逢週末花了點時間在虛擬機器的unbuntu系統中搭建了下git的伺服器,由於搭建過程中多多少少遇到了一些小問題,再因為個人記性不太好,所以在這裡記錄下來,以備不時之需。開始我已經在虛擬機器的ubuntu12.04系統下已

Ubuntu 16.x搭建Git伺服器

引言 最近專案準備遷移要git做版本管理,就先學了git的使用,在學會了git的一些基本知識以及搭建git倉庫的方法後,就想如果要讓其他開發的人員也能訪問到自己的倉庫,就需要將倉庫設定為遠端倉庫,那麼就要搭建伺服器來進行訪問。訪問git的伺服器一般是選用SSH

Ubuntu下使用gitosis搭建Git伺服器,並且安裝GitWeb

# 什麼是Gitosis? > ​ Gitosis是一套用來管理authorized_keys檔案和實現簡單連線限制的指令碼。 > > ​ 而且Gitosis管理使用者許可權並不是通過網頁或者某個程式,而是通過一個特殊的Git倉庫來管理。你只需要在這個非常“特殊”的倉庫配置好使用者和許可權,然

linux 使用gitblit搭建git伺服器

linux使用gitblit搭建git伺服器 安裝的過程不是很複雜,首先在官網下載gitblit的安裝包,下載版本為gitblit-1.8.0。 解壓檔案到當前路徑 tar -zxvf gitblit-1.8.0.tar.gz 配置在data下的defaults

【轉】阿里雲Ubuntu系統搭建SVN伺服器

##SVN伺服器相關軟體安裝 1、使用SSH遠端伺服器 (1)對於MAC OS/Liunx的使用者直接開啟終端輸入 ssh  使用者名稱@例項名,例如 ssh [email protected] 執行上面的命令後終端會提示輸入密碼,驗證通過後會出現如下資訊: We

自定義Git ~ 忽略特殊檔案.gitignore、配置別名、搭建Git伺服器(十八)

在 安裝 Git 一節中,我們已經配置了使用者名稱 user.name 和 Email 地址 user.email,實際上,Git還有很多可配置項。比如,讓 Git 顯示顏色,會讓 輸出的命令 看起來更醒目,如下: 這樣,Git 會適當地顯示不同的顏色,比如 git status

Linux下搭建Git伺服器 Jenkins持續整合環境部署

1、安裝Git 見 Jenkins持續整合環境部署 第四節 2、建立Git使用者和使用者組 1 groupadd git 2 useradd git -g git 3、建立證書切換到git使用者建立證書 1 su git 2 cd /home/git 3 mkdir .ssh 4 c

使用gitblit搭建git伺服器

前言 一直在學習新技術,我想都整理到部落格上。公司還在堅持用svn,之前學過git都快要忘記了,此篇部落格記錄搭建基於gitblit的git伺服器。當然直接使用linux也可以,不過我不是很熟悉,考慮到我的主語言是Java,也就用gitblit搭建了一個。 環境 Windows server 2016

在 Linux 下搭建 Git 伺服器後如何新建專案和新增使用者

關於如何在Linux 下搭建 Git 伺服器的問題,大家可以參考這篇文章(https://www.cnblogs.com/dee0912/p/5815267.html)。 我按照上面文章內容操作,確實搭建完成Git伺服器後,但是又出現了一個問題,如何新建專案,並且把參與開發人員加到該專案呢?下面

centos7搭建git伺服器(多使用者版)

建立倉庫並分享到組: git init --shared=group test 建立組: groupadd git 切換專案所屬組: chgrp -R git test 建立使用者1: useradd test1 -g git passwd test1 建立使用者2

cenos7 上搭建git伺服器

安裝git 在官網下載 tar.gz的包 然後放到 Linux(centos7系統)伺服器中 執行 tar -zxvf 檔名 來進行解壓檔案 然後 執行 git -version 來檢視git版本 正常出現版本號 繼續進行下一步 執行 useradd git 命令來建立 git使用者 然後 執行

Ubuntu搭建Nginx伺服器+整合RTMP視訊直播流處理(邊做邊做更新)

簡介: 要求:做一個網頁獲取攝像頭的視訊流,然後將視訊流經過流伺服器推送到後臺視訊處理伺服器,再由後臺視訊處理伺服器推送到流伺服器,最終推送到頁面。如圖: 經過查閱資料,目前有red5以及nginx+nginx-rtmp-module實現,選擇第二種方式來實現。 準備工作:

centos7上搭建git伺服器

目錄 環境: 安裝git和建立使用者 建立證書登入 初始化git倉庫 踩得坑 tortisegit使用 環境: centos7,git 1.8.3,tortisegit 安裝git和建立使用者 注:$代表用root使用者登入 # 安裝Git $ y