`

ubuntu上配置git服务器

 
阅读更多
1       需求

硬件需求:一台Ubuntu或者debian电脑(虚拟机),能通过网络访问到。

软件需求:git-core, gitosis, openssh-server, openssh-client
2       安装配置git服务器

安装git和openssh:

a@server:~$ sudo apt-get install git-core openssh-server openssh-client

新加用户git, 该用户将作为所有代码仓库和用户权限的管理者:

a@server:~$ sudo useradd -m git

a@server:~$ sudo passwd git

建立一个git仓库的存储点:

a@server:~$ sudo mkdir /home/repo

让除了git以外的用户对此目录无任何权限:

a@server:~$ sudo chown git:git /home/repo

a@server:~$ sudo chmod 755 /home/repo   注:此处要把git仓库repo的属性设置成755,不然在gitweb中一直无法找到工程
3       安装配置gitosis

初始化一下服务器的git用户,这一步其实是为了安装gitosis做准备。在任何一 台机器上使用git,第一次必须要初始化一下:

a@server:~$ git config –global user.name “myname”

a@server:~$ git config –global user.email “myname@server“

安装一下python的setup tool, 这个也是为了gitosis做准备:

a@server:~$ sudo apt-get install python-setuptools

获得gitosis包:

a@server:~$ cd /tmp

a@server:/tmp$ git clone git://eagain.net/gitosis.git

a@server:/tmp$ cd gitosis

a@server:/tmp/gitosis$ sudo python setup.py install

切换到git用户下:

a@server:/tmp/gitosis$ su git

默认状态下,gitosis会将git仓库放在 git用户的home下,所以我们做一个链接到/home/repo

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

再次返回到默认用户

$ exit

如果你将作为git服务器的管理员,那么在你的电 脑上(另一台pc)生成ssh公钥:

usr@pc1:~$ ssh-keygen -t rsa

将公钥拷贝到服务器的/tmp下:

usr@pc1:~$ scp .ssh/id_rsa.pub git@<server>:/tmp

回到git服务器上

a@server:/tmp/gitosis$ sudo chmod a+r /tmp/id_rsa.pub

让gitosis运行起来:

a@server:/tmp/gitosis$ sudo -H -u git gitosis-init < /tmp/id_rsa.pub

Initialized empty Git repository in /home/repo/gitosis-admin.git/

Reinitialized existing Git repository in /home/repo/gitosis-admin.git/

gitosis的有趣之处在于,它通过一个git仓库来管理配置文件,仓库就放在了/home/repo/gitosis- admin.git。我们需要为一个文件加上可执行权限:

a@server:/home/git$ sudo passwd root

a@server:/home/git$ su

root@server:/home/git# cd repositories

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

root@server:/home/git/repositories/gitosis-admin.git# sudo chmod 755 /home/repo/gitosis-admin.git/hooks/post-update

root@server:/home/git/repositories/gitosis-admin.git# exit
4       在服务器上新建一个测试项目仓库

我们在服务器上新建一个空的项目仓库,叫“teamwork”。

切换到git用户:

a@server:/home/git$ su – git

$ cd /home/repo

$ mkdir teamwork.git

$ cd teamwork.git

$ git init - -bare      注:这是在服务器上运行的,是为了初始化一个根级的git仓库

$ exit

但是,到目前为止,这只是一个空仓库,空仓库是不能clone下来的。为了能做clone,我们必须先让某个有权限的人放一个初始化的版本到仓库中。

所以,我们必须先修改一下gitosis-admin.
5       管理gitosis的配置文件

刚刚提到,gitosis本身的配置也是通过git来实现的。在你自己的开发机里,把gitosis-admin.git这个仓库clone下来,就可以以管理员的身份修改配置了。

在你的电脑里:

usr@pc1:~/work$ git clone git@<server>:gitosis-admin.git

usr@pc1:~/work$ cd gitosis-admin/

该目录下的keydir目录是用来存放所有需要访问git服务器的用户的ssh公钥:

各个用户按照前面提到的办法生成各自的ssh公钥文件后,把所有人的 ssh公钥文件都拿来,按名字命名一下,比如b.pub, lz.pub等,统统拷贝到keydir下:

usr@pc1:~/work/gitosis-admin$ su root

root@pc1:/home/a/work/gitosis-admin# cp /path/to/.ssh/id_rsa.pub ./keydir/b.pub

root@pc1:/home/a/work/gitosis-admin# exit

修改gitosis.conf文件,我的配置大致如下:

[gitosis]

[group gitosis-admin]

writable = gitosis-admin

members = a@server usr@pc1

[group hello]

writable = teamwork

members = a@server b

[group hello_ro]

readonly = teamwork

members = lz

这个配置文件表达了如下含义:gitosis-admin组成员有a, usr,该组对gitosis-admin仓库有读写权限;

team组有a,b两个成员,该组对teamwork仓库有读写权限;

team_ro组有lz一个成员,对teamwork仓库有只读权限。

当然目前这些配置文件的修改只是在你的本地,你必须推送到远程的gitserver上才能真正生效。

加入新文件、提交并push到git服务器:

usr@pc1:~/work/gitosis-admin$ git add .

usr@pc1:~/work/gitosis-admin$ git commit -am “add teamweok prj and users”

usr@pc1:~/work/gitosis-admin$ git push origin master
6       初始化测试项目

好了,现在服务器就搭建完了,并且有一个空的项目teamwork在服务器上。接下来呢?当然是测试一下,空仓库是不能clone的,所以需要某一个有写权限的人初始 化一个版本。就我来做吧,以下是在客户端完成。

usr@pc1:~/work$ mkdir teamwork-ori

usr@pc1:~/work$ cd teamwork-ori/

usr@pc1:~/work/teamwork-ori$ git init           注:这是在用户端的PC上执行的,为的是初始化一个本地的版本库

usr@pc1:~/work/teamwork-ori$ echo “/*add something*/” > hello

usr@pc1:~/work/teamwork-ori$ git add .

usr@pc1:~/work/teamwork-ori$ git commit -am “initial version”

usr@pc1:~/work/teamwork-ori$ git remote add origin git@<server>:teamwork.git

usr@pc1:~/work/teamwork-ori$ git push origin master

到此为止teamwork已经有了一个版本了,team的其他成员只要先clone一下 teamwork仓库,就可以任意玩了。

usr@pc1:~/work/teamwork-ori$ su b

$ cd /home/b

$ git clone git@<server>:teamwork.git

$ cd teamwork

$ vim hello

$ git add .

$ git commit -am “b add”

$ git push origin master

$ exit
7       添加已有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 了,呵呵.
8       创建gitweb

sudo apt-get install gitweb
8.1 配置 gitweb

默认没有 css 加载,把 gitweb 要用的静态文件连接到 DocumentRoot 下:

cd /var/www/

sudo ln -s /usr/share/gitweb/* .
8.2 修改配置

sudo vi /etc/gitweb.conf

将 $projectroot 改为git仓库存储目录(例如:/home/git/repositories),保存后刷新浏览器。

如果没有找到项目,你需要将$projectroot/*.git 的属性改为755,让apache用户有可读权限。可以只改你需要让别人通过web访问的那个git。http://localhost/cgi-bin/gitweb.cgi
8.3 修改/etc/gitweb.conf 内容

# path to git projects (<project>.git)

#$projectroot = "/var/cache/git";

$projectroot = "/home/git/repositories";

# directory to use for temp files

$git_temp = "/tmp";

# target of the home link on top of all pages

$home_link = $my_uri || "/";

# html text to include at home page

$home_text = "indextext.html";

# file with project list; by default, simply scan the projectroot dir.

$projects_list = $projectroot;

# stylesheet to use

@stylesheets = ("/gitweb/static/gitweb.css");

# javascript code for gitweb

$javascript = "gitweb/static/gitweb.js";

# logo to use

$logo = "/gitweb/static/git-logo.png";

# the 'favicon'

$favicon = "/gitweb/static/git-favicon.png";

# git-diff-tree(1) options to use for generated patches

#@diff_opts = ("-M");

@diff_opts = ();
8.4 配置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

<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>
8.5 重新启动apache

sudo /etc/init.d/apache2 restart

访问http://localhost/cgi-bin/gitweb.cgi
分享到:
评论

相关推荐

    ubuntu 完整安装git服务器

    通过以上步骤, 我们已经完成了 Ubuntu 系统下 Git 服务器的完整安装配置。该配置不仅包括了 Git 服务器的基础环境搭建, 还涉及到了用户权限管理和 SSH 密钥认证等关键环节。这对于初学者来说是一份非常实用且详尽的...

    虚拟机ubuntu14.04配置git及gitweb服务器.docx

    【描述】:本文档将指导你如何在Ubuntu 14.04虚拟机上配置Git服务器以及安装Gitweb,以便进行代码版本控制和协作。我们将解决虚拟机网络配置、固定IP地址、Git服务器搭建以及Gitweb的安装和配置等问题。 【标签】:...

    Ubuntu下git服务器的搭建和基本使用[参考].pdf

    Ubuntu下git服务器的搭建和基本使用 Git是当前最流行的版本控制系统,广泛应用于软件开发领域。在Ubuntu系统下搭建Git服务器可以满足团队协作和版本控制的需求。本文将详细介绍如何在Ubuntu系统下搭建和使用Git...

    ubuntu 安装git 服务器.docx

    在运行 Gitosis 之前,我们需要将管理员生成的公钥上传或拷贝到服务器上。我们可以使用以下命令来初始化 Gitosis: `sudo -H -u git gitosis-init 在初始化完成后,我们就可以使用 Gitosis 来管理 Git 仓库的访问...

    搭建git服务器

    3. **Gitolite简介**:Gitolite是一个轻量级的、易于配置的Git服务器管理系统,支持多用户、多仓库、权限管理等功能。 #### 四、搭建步骤 1. **安装Git和SSH** - 在Ubuntu服务器上安装Git和SSH两个核心软件。 ```...

    ubuntu 安装git 服务器.pdf

    首先,需要将管理员生成的公钥上传或拷贝到服务器上,然后使用 `gitosis-init` 命令来初始化 Gitosis。在初始化 Gitosis 时,需要将公钥文件传递给 `gitosis-init` 命令,例如 `sudo -H -u git gitosis-init 。 ...

    git服务器的搭建

    - 如果之前尝试搭建Git服务器时出现了问题,需要先清除之前的配置。使用命令:`sudo rm -rf /home/git` 来删除先前创建的Git用户及其目录。 2. **创建Git用户**: - 使用 `adduser` 命令创建一个名为 `git` 的新...

    git基础(git服务器搭建+git教程+git廖雪峰)

    1. **安装Git服务器**:在服务器上安装Git,通常使用`sudo apt-get install git`(Ubuntu/Debian)或`yum install git`(CentOS/RHEL)。 2. **初始化仓库**:在服务器上选择合适的位置创建空仓库,使用`git init --...

    git+ssh ubuntu 安装配置笔记

    **步骤3:设置Git服务器** 1. **创建Git用户:** 使用`adduser`命令创建一个专门的“git”用户用于管理仓库: ```bash sudo adduser git ``` 2. **切换到git用户并创建.ssh目录:** 切换到git用户后,在其...

    liunx下搭建git服务器

    本篇将详细介绍如何在Linux环境下设置一个本地Git服务器,以便团队成员能够安全地推送和拉取代码。 首先,确保你的Linux系统已经安装了Git。如果没有,可以通过包管理器进行安装。对于基于Debian的系统(如Ubuntu)...

    搭建git服务器.docx

    1. 安装 Git 工具:在服务器上安装 Git 工具,Ubuntu 使用 apt install git,Centos 使用 yum install git。 2. 创建 Git 用户和组:使用 useradd git 和 passwd git 命令创建 Git 用户和组,以便与其他用户隔离。 3...

    在 Ubuntu 下搭建 git gitosis.docx

    在Ubuntu系统中搭建Git服务器,特别是使用gitosis作为版本控制系统管理工具,是一个常见的需求,尤其对于软件开发团队来说。Gitosis允许你集中管理和控制多个Git仓库,并为不同的用户或用户组设置权限。以下是一个...

    虚拟机ubuntu14.04配置git及gitweb服务器.pdf

    。。。

    在 Ubuntu 下搭建 git gitosis.pdf

    在Ubuntu系统中搭建Git服务器,特别是使用gitosis作为版本控制系统管理工具,是...通过以上步骤,我们就成功地在Ubuntu系统上搭建了一个基于gitosis的Git服务器,可以为不同的用户和团队分配不同的权限,方便协作开发。

    git服务器安装指南V0.1.pdf_Gerrit_

    Git服务器安装指南主要聚焦于如何在本地环境中搭建一个用于版本控制的Git服务器,并且结合了Gerrit这一代码审查工具的配置与使用。Gerrit是Google开发的一个开源项目,它提供了一个强大的代码审查和协作平台,适用于...

    GIT服务器配置

    总结,Git服务器配置涉及Git和Gitosis的安装与设置,主要目的是实现代码版本控制和团队协作。通过理解这些基础知识,你可以成功地搭建起一个安全的Git服务器,为项目提供高效且可控的代码管理环境。

    git+ubuntu+ssh服务器搭建过程.pdf

    整个搭建过程可以分为七个步骤:安装 Ubuntu 系统、更新系统、安装 OpenSSH 服务器端、修改 SSH 配置文件、重启 SSH 服务、安装 Git 相关工具、安装 Gitosis。 详细来说,第一步是安装 Ubuntu 系统。在安装过程中,...

    gitblit-1.8.0.zip下载

    3. **Git服务器**: Git服务器是一个托管Git仓库的地方,用户可以通过推送(push)和拉取(pull)操作与服务器交换代码。 4. **Gitblit**: Gitblit是基于Java的Git服务器,它提供Web界面,支持多种身份验证方式(如...

    Linux系统安装git服务器.zip

    本教程将详述如何在Linux系统上安装并配置Git服务器。 首先,我们需要确保Linux系统已经安装了必要的基础软件包。通常,这包括SSH(Secure Shell)服务,因为Git通常通过SSH协议进行安全通信。大多数Linux发行版在...

    gitblit-1.2.1

    在1.2.1版本中,它提供了在Windows平台上快速搭建和管理Git服务器的功能,使开发者能够更加便捷地进行版本控制和协作。 1. Gitblit的特性: - **易安装**:Gitblit-1.2.1提供了一套简单的安装脚本(如install...

Global site tag (gtag.js) - Google Analytics