Ubuntu下 git 伺服器的搭建。

2021-07-04 21:15:02 字數 3986 閱讀 3161

ubuntu下  git  伺服器的搭建。

前幾天老師分配了乙個任務 就是配置git伺服器,來管理專案,搞弄了好幾天,在網上搜教程   搜案例的  但是寫的都很籠統,有的寫的很好  但是按照他們說的做又會出現各種各樣的問題。今天我抽空把我配置git伺服器的詳細過程記錄下來,希望能幫助到大家。

搭建git伺服器的4個步驟

1   配置伺服器前的準備工作

首先ubuntu系統要聯網 安裝了git,openssh-server和openssh-client軟體,並檢測是否開啟。

rpm -qa | grep -i git (檢視是否安裝git)

sudo apt-get install git

sudo apt-get install openssh-server

sudo apt-get install openssh-client

2   新增git 使用者

新加使用者git,該使用者將作為所有**倉庫和使用者許可權的管理者:

geiao@ubuntu:~$ sudo useradd -m git

geiao@ubuntu:~$ sudo passwd git

建立乙個git倉庫的儲存點,並且設定許可權使除了git以外的使用者對此目錄無任何訪問許可權。

geiao@ubuntu:~$ sudo mkdir /home/pro_j

(建立個目錄,作為儲存點。)

geiao@ubuntu:~$ sudo chown git:git /home/pro_j

(把pro_j的許可權給 git)

geiao@ubuntu:~$ sudo chmod 755 /home/pro_j (將檔案pro_j設定為 rwxr_xr_x 除了git以外的使用者對此目錄無任何訪問許可權)

3   安裝配置gitosis

初始化伺服器的git使用者 可以用cat ~/.gitconfig 檢視

geiao@ubuntu:~$ git config --global user.name "your name"

geiao@ubuntu:~$ git config --global user.email your email

geiao@ubuntu:~$ cat ~/.gitconfig

[user] name = zhang mingjie

email = [email protected]

安裝一下python的setuptool,也是為gitosis做準備:

geiao@ubuntu:~$ sudo apt-get install python-setuptools

獲得gitosis包:

geiao@ubuntu:~$ mkdir osis

geiao@ubuntu:~$ cd osis

geiao@ubuntu:~/osis$ git clone git:

geiao@ubuntu:~/osis$ cd gitosis

$ ln -s /home/pro_j /home/git/repositories

$ exit

成為管理員:無論是不是本機都可以通過生成ssh公鑰的方法成為管理員

geiao@ubuntu:~$ ssh-keygen -t rsa 生成的金鑰可以通過在~/.ssh 檔案中找到。

在伺服器上建管理員:

geiao@ubuntu:~/osis/gitosis$ sudo chmod a+r ~/.ssh/id_rsa.pub

[sudo] password for geiao:

讓gitosis執行起來:

geiao@ubuntu:~/osis/gitosis$ sudo -h -u git gitosis-init< ~/.ssh/id_rsa.pub

initialized empty git repository in /home/pro_j/gitosis-admin.git/

reinitialized existing git repository in /home/pro_j/gitosis-admin.git/

如果在另外的一台機子上建管理員,必須把那台機子的公鑰(改名)拷到伺服器上 然後修改上面劃線操作的位址就行了。

gitosis 通過乙個git倉庫管理配置檔案,倉庫就放在/home/pro_j/gitosis-admin.git。因此要為乙個檔案加上可執行許可權:

geiao@ubuntu:/home/git$ sudo passwd root

geiao@ubuntu:/home/git$ su

root@ubuntu:/home/git# cd repositories

root@ubuntu:/home/git/repositories# cd gitosis-admin.git

root@ubuntu:/home/git/repositories/gitosis-admin.git# sudo chmod 755 /home/pro_j/gitosis-admin.git/hooks/post-update root@ubuntu:/home/git/repositories/gitosis-admin.git# exit

4   管理gitosis的配置檔案

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

geiao@ubuntu:~$ cd osis

geiao@ubuntu:~/osis$ mkdir pro

geiao@ubuntu:~/osis$ cd pro

geiao@ubuntu:~/osis/pro$ git clone git@伺服器ip:gitosis-admin.git

geiao@ubuntu:~/osis/pro$ cd gitosis-admin

geiao@ubuntu:~/osis/pro/gitosis-admin$ ls

gitosis.conf keydir

gitosis.conf檔案和keydir資料夾

gitosi.conf檔案主要的作用是管理員可以編寫其他人的許可權,可以編寫對gitosis-admin的成員,也可以編寫對倉庫的許可權 :writable和 readonly . 這裡設定許可權 可以建立group設定。

keydir 資料夾是存放其他人公鑰的地方。而且必須注意 誰的公鑰誰的名字的要求來存放。

geiao@ubuntu:~/osis/pro/gitosis-admin/keydir$ ls [email protected] jghost.pub 否則在會出現:

error:gitosis.serve.main:repository read access denied

配置好後一定要做的操作事提交gitosis-admin的改動,並commit 然後 git push 一下; 而且你不需要在伺服器上建好乙個空倉庫,再匯入專案。 gitosis會在你建好專案推送到伺服器上時自動建立。 然後就可以建立個專案 如proj.git(這點比較重要)

geiao@ubuntu:~/osis/pro$ mkdir proj

geiao@ubuntu:~/osis/pro$ cd proj

geiao@ubuntu:~/osis/pro/proj$ git init

initialized empty git repository in /home/geiao/osis/pro/proj/.git/

geiao@ubuntu:~/osis/pro/proj$ touch readme

geiao@ubuntu:~/osis/pro/proj$ git add readme

geiao@ubuntu:~/osis/pro/proj$ git commit -a -m "add readme"

geiao@ubuntu:~/osis/pro/proj$ git remote add origin [email protected]:proj.git

geiao@ubuntu:~/osis/pro/proj$ git push origin master

到此, 在ubuntu上建立git伺服器基本上完成。

Ubuntu下 git 伺服器的搭建。

ubuntu下 git 伺服器的搭建。前幾天老師分配了乙個任務 就是配置git伺服器,來管理專案,搞弄了好幾天,在網上搜教程 搜案例的 但是寫的都很籠統,有的寫的很好 但是按照他們說的做又會出現各種各樣的問題。今天我抽空把我配置git伺服器的詳細過程記錄下來,希望能幫助到大家。搭建git伺服器的4個...

CentOs下LinuxWeb伺服器的搭建

注意細節,祝大家都能避坑 一 安裝web伺服器所需軟體,設定伺服器的ip為192.168.1.2 1 安裝apache服務程式 apache服務的軟體包名稱叫做httpd yum install httpd y2 將apache服務新增到 開機自啟中 3 設定ip ifconfig ens33 19...

Ubuntu下搭建git伺服器步驟

由svn切換到git可是沒少花功夫啊,雖然都是版本管理工具,本質上都差不多,但是git還是太靈活了一些,靈活的東西往往不好掌握,所以還是費了些工夫才基本上會用git了,要想成為git高手估計的下大功夫。由於自己乙隻是用公司的git伺服器,每天就是pull和push 自己的 又是放在了github上,...