1. 程式人生 > >ubuntu 14.04配置git伺服器 小白也可以搭伺服器了

ubuntu 14.04配置git伺服器 小白也可以搭伺服器了

      首先宣告該篇文章主要參考了http://blog.csdn.net/ice520301/article/details/6142503,大部分內容一樣,但是原文章有些許小錯誤,會使小白使用者看不懂或者,有錯誤,是配置沒辦法繼續。但裡面添加了註釋,修改了錯誤,所以算是原創吧,但是為了維護原來作者權益,型別還是選擇了轉載。

     該方法主要參考http://blog.csdn.net/ice520301/article/details/6142503和http://blog.csdn.net/tommy_wxie/article/details/38779667。其實第一篇文章就完全夠用了,只是作者在寫部落格的時候,裡面會有些許錯誤,比如說前面說的是git_repo資料夾下操作,後面作者就寫成了repo資料夾。這對於對git伺服器有了解的人來說不算什麼問題,但是對於git小白,就不知道所以然了。老師讓我搭個git伺服器,原本想按照網上的操作,無腦的照著做,無奈找不到沒有錯誤的,只有自己結合了幾篇文章,然後把原來作者的錯誤改正過來,以供git伺服器小白參考。

git伺服器搭建過程

參考網上資料搭建git伺服器過程記錄 如下:

安裝配置git伺服器

安裝git和openssh: [email protected]:~$ sudo apt-get install git-coreopenssh-server openssh-client 新加使用者git, 該使用者將作為所有程式碼倉庫和使用者許可權的管理者:
[email protected]:~$ sudo useradd -m git 建立一個git倉庫的儲存點:
[email protected]:~$ sudo mkdir /home/repo 讓除了git以外的使用者對此目錄無任何許可權:
[email protected]:~$ sudo chown git:git /home/repo
[email protected]:~$ sudo chmod 700 /home/repo

安裝配置gitosis

初始化一下伺服器的git使用者,這一步其實是為了安裝gitosis做準備。在任何一 臺機器上使用git,第一次必須要初始化一下:
[email protected]:~$ git config –global user.name “myname”
[email protected]:~$ git config –global user.email “[email protected]
安裝一下python的setup tool, 因為gitosis的安裝用到了python的一工具,這個也是為了gitosis做準備:
[email protected]:~$ sudo apt-get install python-setuptools 獲得gitosis包:
[email protected]:~$ cd /tmp
[email protected]:/tmp$ git clone https://github.com/res0nat0r/gitosis.git 
[email protected]:/tmp$ cd gitosis
[email protected]:/tmp/gitosis$ sudo python setup.py install 切換到git使用者下:
這裡先解釋以下su命令,就相當於登出的命令一樣。登出,並登入另一個賬戶
[email protected]:/tmp/gitosis$ su git 預設狀態下,gitosis會將git倉庫放在 git使用者的/home/git/repositories/目錄下,所以我們做一個連結到我們建立的git倉庫/home/repo
$ ln -s /home/repo /home/git/repositories
再次返回到預設使用者
$ exit
如果你將作為git伺服器的管理員,那麼在你的電 腦上(另一臺pc)生成ssh公鑰:
[email protected]:~$ ssh-keygen -t rsa
在得到ssh公鑰時,只需要按回車就行,其中有輸入密碼,可以直接按照回車。然後注意看提示,提示你的ssh公鑰匙已經存放到你當前pc的一個地方。
將公鑰拷貝到伺服器的/tmp下:
[email protected]:~$ scp /路徑/.ssh/id_rsa.pub[email protected]:/tmp 
注意:要把這裡的路徑改為上句命令下,提示你公鑰匙存放的路徑。這裡把上句命令中的IP 改為你自己作為git伺服器的pc的IP地址,例如192.168.1.22(地址我隨便編的,請大家填寫自己的ipv4地址)

回到git伺服器上
[email protected]:/tmp/gitosis$ sudo chmod a+r /tmp/id_rsa.pub 讓gitosis執行起來:
[email protected]:/tmp/gitosis$ sudo -H -u git gitosis-init < /tmp/id_rsa.pub
當出現以下兩句就說明已經成功,當然以下兩句也可能是中文,取決於你ubuntu的語言設定。
Initialized empty Git repository in /home/repo/gitosis-admin.git/
Reinitialized existing Git repository in /home/repo/gitosis-admin.git/


現在我們知道,git伺服器建立了一個存放倉庫的資料夾,在/home/repo,在該資料夾下面,存放的是git的各種倉庫,之前一直不瞭解什麼是倉庫,倉庫是資料夾的別名嗎?其實git把每一個專案或者叫做工程或者是project叫做倉庫,字尾是 .git 都是git的倉庫。

[email protected]:/home/git/repositories/gitosis-admin.git# exit

在伺服器上新建一個測試專案倉庫

我建了一個叫“teamwork”的倉庫。
切換到git使用者:
[email protected]:/home/git$ su  git

$ cd

$ cd home/

$ mkdir prj_git

$ cd prj_git
$ mkdir teamwork.git
$ cd teamwork.git
$ git init --bare
$ exit

但是,到目前為止,這只是一個空倉庫,空倉庫是不能clone下來的。為了能做clone,我們必須先讓某個有許可權的人放一個初始化的版本到倉庫中。 所以,我們必須先修改一下gitosis-admin.

管理gitosis的配置檔案

       一點分析:對於git伺服器來說,整體有三個部分,一部分是你自己的檔案,另外一個是快取區,最後一個就是本地庫。當你修改了自己的檔案後,你會git add xx將修改儲存到快取區,然後再用commit推送修改到本地庫中。注意git push是將本地倉庫的修改推送到伺服器的倉庫中,git commit是將本地修改儲存到本地倉庫中。

       即使是在伺服器上,為了修改git倉庫中的/home/git_repo/gitosis-admin.git這個管理許可權的倉庫,也是要把該倉庫克隆到本地的一個倉庫中的,然後向上面說的,修改本地檔案,儲存本地修改到本地倉庫,然後再將本地倉庫修改推送至伺服器倉庫,這樣就完成了伺服器許可權的修改了,當然,前提是要具有管理員許可權。

剛剛提到,gitosis本身的配置也是通過git來實現的。在你自己的開發機裡,把gitosis-admin.git這個倉庫clone下來,就可以以管理員的身份修改配置了。

注意:這裡仍然是把上句中的IP 改成是你自己作為git伺服器的地址
經過親自實驗,如果上句克隆下來的gitosis-admin倉庫如果不能修改,則把上句改為


該目錄下的keydir目錄是用來存放所有需要訪問git伺服器的使用者的ssh公鑰: 各個使用者按照前面提到的辦法生成各自的ssh公鑰檔案後,把所有人的 ssh公鑰檔案都拿來,按名字命名一下,比如b.pub, lz.pub等,統統拷貝到keydir下: 修改gitosis.conf檔案,我的配置大致如下:
[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members =
[group teamwork]
writable = teamwork
members =
[email protected] b

[group hello_ro]
readonly = teamwork
members = lz
注意:這裡相當於有三個倉庫,分別是gitosis-adminteamwork,hello_ro
這個配置檔案表達瞭如下含義:gitosis-admin組成員有a, usr,相當於這倆是git伺服器的管理員。該組對gitosis-admin倉庫有讀寫許可權;
teamwork組有a,b兩個成員,該組對teamwork倉庫有讀寫許可權;
team_ro組有lz一個成員,對teamwork倉庫有隻讀許可權。
當然目前這些配置檔案的修改只是在你的本地,你必須推送到遠端的gitserver上才能真正生效。
加入新檔案、提交併push到git伺服器:
[email protected]:~/work/gitosis-admin$ git add .
[email protected]:~/work/gitosis-admin$ git commit -am "add teamweok prj and users"
[email protected]:~/work/gitosis-admin$ git push origin master
注意:這裡" "裡面的內容是自己寫的備註之類的東西,可以和上面不同,但是一定要使用英文的雙引號

初始化測試專案

好了,現在伺服器就搭建完了,並且有一個空的專案teamwork在伺服器上。接下來呢?當然是測試一下,空倉庫是不能clone的,所以需要某一個有寫許可權的人初始 化一個版本。就我來做吧,以下是在客戶端完成。 到此為止teamwork已經有了一個版本了,team的其他成員只要先clone一下 teamwork倉庫,就可以任意玩了。 $ cd teamwork
$ vim hello
$ git add .
$ git commit -am "this is b added"
$ git push origin master
$ exit

至此,你的git伺服器已經搭建並測試完成了。

接下來的步驟我還沒有測試,可以根據需要自己搗鼓以下。windows客戶端的使用可以參考http://blog.csdn.net/tommy_wxie/article/details/38779667這篇文章的步驟五。

新增已有git專案

另外:如果你有一個現成的git倉庫,想放到 gitserver上供team使用(比如你clone了一個官方的kernel倉庫,想在內部使用它作為基礎倉庫),怎麼辦呢。
首先需要從你的工作倉庫中得到一個純倉庫, 比如你的工作目錄為~/kernel, 你想匯出純倉庫到你的優盤裡,然後拷貝到gitserver上去。
$ git clone –bare ~/kernel /media/udisk
然後就拿著優盤,交給gitserver的管理員,讓他拷貝到/home/repo/下,同時需要配置 gitosis相關配置檔案哦,這個就不用再說了吧。比如:下載ALSA庫:
git clone git://android.git.kernel.org/platform/external/alsa-lib.git
git clone git://android.git.kernel.org/platform/external/alsa-utils.git
生成bare庫
git clone –bare alsa-lib alsa-lib.git
git clone –bare alsa-utils alsa-utils.git
將bare 庫移動到git伺服器目錄 cp alsa-lib.git /home/repo 注意變更所有者,以獲取提交許可權。 chown -R git alsa-lib.git 然後就O 了,呵呵.

配置gitweb

1. 安裝gitweb 

sudo apt-get install gitweb

2. 安裝apache2

  sudo apt-get install apache2

3. 配置gitweb
(1)預設沒有 css 載入,把 gitweb 要用的靜態檔案連線到 DocumentRoot 下:   cd /var/ www/    sudo ln -s / usr/ share/ gitweb/* .

   (注意後面的點)

(2)修改配置:

sudo vi /etc/ gitweb.conf

   將 $projectroot 改為gitosis-admin.git所在目錄: /home/git/repositories

 (3)修改 /home/git/repositories許可權,預設情況下,gitosis將repositories許可權設定為不可讀的

    sudo chmod 777 -R /home/git/repositories

11.編輯apache2配置檔案,建立web站點 (預設情況下可以忽略此步驟)

(1) 編輯apache2配置檔案

    ubuntu中預設的web目錄是/var/www,預設的cgi目錄是 /usr/lib/cgi-bin/,安裝完成gitweb後,gitweb的gitweb.cgi會自動放置

到該目錄下。如果你的cgi路徑不是預設的/usr/lib/cgi-bin/,需要將gitweb安裝在/usr/lib/cgi-bin中的gitweb.cgi複製到原來配置

的cgi-bin路徑,並修改apache的配置檔案/etc/apache2/apache.conf:

    SetEnv  GITWEB_CONFIG   /etc/gitweb.conf
    gitweb.conf配置檔案形如:(可自行修改,這裡不做詳細介紹)
<Directory "/srv/www/cgi-bin/gitweb">          
      Options FollowSymlinks ExecCGI         
      Allow from all                         
      AllowOverride all                      
      Order allow,deny                       

      <Files gitweb.cgi>
           SetHandler cgi-script
      </Files>                   
      RewriteEngine on
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^.* /gitweb.cgi/$0 [L,PT]
</Directory>

<以下未經測試>

配 置web訪問方式: Apache常用命令:
a2dissite gitserver 禁用
a2ensite gitserver  使能
/etc/init.d/apache2 restart 重啟
1.apt-get install apache2 2.手動安 裝gitweb
git clone git://git.kernel.org/pub/scm/git/git.git
cd git
make GITWEB_PROJECTROOT=”/home/repo” prefix=/usr gitweb/gitweb.cgi
cd gitweb
cp -av git* /home/repo/
3.vim /etc/apache2/sites-available/gitserver
<VirtualHost 172.20.146.39:80>
ServerName 172.20.146.39
DocumentRoot /home/repo
ScriptAlias /cgi-bin/ /home/repo
<Directory /home/repo>
Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
AllowOverride All
order allow,deny
Allow from all
AddHandler cgi-script cgi
DirectoryIndex gitweb.cgi
</Directory>
</VirtualHost>
4.賦予許可權,很重要: chgrp -R www-data /home/repo
chmod a+r repo
chmod a+x repo
mv hooks/post-update.sample hooks/post-update 5.a2ensite gitserver
6./etc/init.d/apache2 restart
遇到的問題:
1.windows檔案命名不區分大小 寫,而linux支援。這樣android原始碼下載時會出現一下問題。大約有15個檔案存在這個問題。
2.庫的描述檔案在.git資料夾的description檔案中。編輯該檔案,在gitweb頁中就會有 description。
3.gitosis庫hooks下的post- update不是由post-update.sample重新命名過來的,它們不一樣。post-update可以更新工作目錄,保持與庫一致。沒有它配置 檔案是不會更新的。
4.(1)[email protected]:/home/git$ git add .
error: readlink(“external/openssl/apps/md4.c”): No such file or directory
error: unable to index file external/openssl/apps/md4.c
fatal: adding files failed
(2)[email protected]/external/openssl# git init
Initialized empty Git repository in /external/openssl/.git/
[email protected]/external/openssl# git add .
error: readlink(“apps/md4.c”): No such file or directory
error: unable to index file apps/md4.c
fatal: adding files failed
(3)
[email protected]_r2$ rm -Rf .repo
[email protected]_r2$ find . -name “.git” | xargs rm -Rf

相關推薦

ubuntu 14.04配置git伺服器 可以伺服器

      首先宣告該篇文章主要參考了http://blog.csdn.net/ice520301/article/details/6142503,大部分內容一樣,但是原文章有些許小錯誤,會使小白使用者看不懂或者,有錯誤,是配置沒辦法繼續。但裡面添加了註釋,修改了錯誤,所以

Ubuntu 14.04 配置OpenCv 2.4.9

-1 org sent release nbsp build echo opencv 2 時間 安裝工具 g++ 鏈接:http://www.cnblogs.com/LQLin168/p/6844593.html 下載OpenCv 2.4.9(官網地址):http://

Ubuntu 14.04 配置confluence破解

ges turn mar this pac ssi rec iss reference 1. 配置java環境,請參展我的另一篇博客 http://www.cnblogs.com/youran-he/p/8607155.html 2. 下載文件 https://pan.ba

ubuntu 14.04配置lamp粗略

html中 gic erl led tomat rdp ati client AS 1.1 安裝Apache2sudo apt-get install apache2 1.2 安裝MySQL5sudo apt-get install mysql-server mysql-c

Ubuntu 14.04配置nfs服務

網上許多nfs的配置說明所使用ubuntu版本過老或者存在其他問題 本文使用ubuntu14.04 預設安裝了rpcbing 1. 下載nfs套件 apt-get install nfs-kernel-server nfs-clinet nfs-common 2. 開啟相關服務(

vmware workstation ubuntu 14.04 配置靜態IP

背景: 用VMware 安裝好ubuntu 14.04後,有些應用是需要固定IP的,而預設情況下,每次重啟電腦或者重啟虛擬機器,虛擬機器的IP地址可能變化。 目的:重啟虛擬機器後,虛擬機器的IP地址不再變化。 方法:為虛擬機器繫結IP。 步驟:經過幾次實踐,將自己設定的過程總結如下(

Ubuntu 14.04 配置vim外掛教程

比如游標“header.h”上按下<C-_>i,也就是查詢包含“header.h“的檔案。但是按照這個對映規則,則是將<C-_>i對映為cs find i ^header.h$,也就是查詢包含“^header.h$“的檔案,這顯然不是我們想要的結果。該對映規則應該改成nmap <

ubuntu 14.04配置Jenkins

1,最新版本的jenkins需要Java8,所以第一步是安裝 open jdk 8sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-8-jdk

ubuntu 14.04 配置android adb 環境

1、sudo apt-get install android-tools-adb sudo apt-get install adnroid-tools-adbd 如果~/.android/adb_usb.ini檔案不存在,那麼需要安裝android-tools-adbd,a

Git使用:Linux(Ubuntu 14.04 x64)下安裝GIt配置連接GitHub

成功 ger 版本 style sts via xxxxxxxx apt 安裝 github是一個非常好的網絡代碼托管倉庫,知曉許久,但是一直沒有用起來,最近才開始使用git管理自己的文檔和代碼。 Git是非常強大的版本管理工具,今天就告訴大家,如何在Linux下安裝GIt

Ubuntu 14.04 Web伺服器--Apache的安裝和配置

命令列安裝Apache 開啟"終端視窗",輸入"sudo apt-get install apache2"-->回車-->輸入"root使用者的密碼"-->回車-->輸入"y"-->回車,安裝完成

Ubuntu 14.04 簡單配置 web伺服器 nginx

2018年10月20日19點59分 tar zxvf nginx-1.14.0.tar.gz    //解壓 cd nginx-1.14.0/ sudu -i    //進入管理員 返回nginx目錄 ./configure --prefix=/usr/loca

ubuntu 14.04伺服器環境下apache2.4配置SSL

最近因為開發微信小程式,需要在服務端搭建https,在網上找了幾篇配置SSL的部落格,感覺都不是特別滿意,感覺這一篇寫的還挺好的。1.查詢apache的SSL模組ubuntu下,apache的預設模組目錄是/usr/lib/apache2/modules/$ cd /usr/

Ubuntu 14.04上用BIND配置一個私有網路DNS伺服器

系列教程 本教程為7篇系列中的第6篇:DNS管理簡介 前言 伺服器管理中很重要的一部分就是設定一個有效的域名系統(DNS),這樣可以方便的通過網路名稱連線到指定的IP地址和埠。使用有效域名(FQDN)相比IP的好處是,它們簡化了服務和應用的網路配置,提

從零開始配置Ubuntu 14.04&SSH&curl&Git&MongoDB&Node.js

從零開始配置Ubuntu 14.04 從零開始配置Ubuntu 14.04,記錄配置服務的過程,安裝元件如下: SSH curl Git MongoDB Node.js ... ​ Ubuntu 安裝配置SSH sudo apt-get install openssh-server 參考:http://w

ubuntu 14.04 + GPU(CUDA7.5+CuDNN7.5)+ opencv2.4.10 + caffe手記

盼星星盼月亮終於有了GPU啦,師姐讓我把環境搭建寫一下以後作參考,哈哈哈~ 1.檢查硬體環境 $ lspci | grep -i nvidia;//檢查是否有GPU對應版本,https://developer.nvidia.com/cuda-gpus

Ubuntu 14.04 64bit下Caffe + Cuda6.5/Cuda7.0 安裝配置教程

-a att html mode .net share surface art cores http://www.embeddedlinux.org.cn/emb-linux/entry-level/201612/21-6005.html 隨著深度學習快速發展的浪潮,許多有

Ubuntu 14.04 FTP服務器--vsftpd的安裝和配置

sudo -m 軟件 rest 查看 新建用戶 14.04 class 列表 更新源列表 打開"終端窗口",輸入"sudo apt-get update"-->回車-->"輸入當前登錄用戶的管理員密碼"-->回車,就可以了。如果不運行該命令,直接安裝

OpenStack之安裝4網卡ubuntu-14.04及網絡詳細配置

安裝ubuntu14.04 網絡配置 virtualbox openstack 四個網卡:網絡1:物理機與虛擬機連接,為host-only類型,主要用來管理網絡,它的dhcp off。網絡2:Open vSwitch占用網絡,也是Host-only類型網絡3:OpenStack中有一些存儲組件

ubuntu 14.04: caffe2 的安裝,pycharm的配置, anaconda的使用

package cto build 通過 fin 有意 source include python caffe2的安裝的使用過程中出現了一些有意思的問題,現在將遇到的問題及其解決方法簡單記錄一下。 1. 首先caffe2 在安裝過程中需要使用 git clone, 其中的-