2024年3月7日发(作者:)

git服务器搭建过程

参考网上资料搭建git服务器过程记录 如下:

硬件需求

一台IBM服务器:四核,CPU(主频 2Ghz以上),内存4G,500G的硬盘(3块,都做了raid0),能够接入网络

软件需求:ubuntu安装盘(Ubuntu10.10服务器版),git-core, gitosis, openssh-server,

openssh-client,samba,gitk,git-gui

一、安装ubuntu系统

安装系统的界面大致如下:

1, 选择语言种类,并选择是试用ubuntu还是安装ubuntu。选择English,并选择安装ubuntu

2, 选择时区:Asia China(Shanghai)

3, 选择键盘模式:USA

4, 分区:选择手动分区,并对其中一块硬盘进行手动分区。/分配30G存储空间,文件系统类型为ext4,/swap分配2G存储空间,文件系统类型为swap,/tmp分配20G存储空间,文件系统类型为ext4,/boot分配10G存储空间,文件系统类型为ext4,剩余的空间都分配给/home,文件系统类型为ext4。

5, 设置用户名和密码。注意:设置的用户名中不能有 . 等特殊字符。假定设置用户名为gitserver。

6, 确认之前输入的信息,确认无误后前进。

7, 开始安装。

安装完成后重启机器,用步骤5中设定的用户名密码登陆系统。

二、安装软件

进入系统后,需要对系统进行更新,否则后面安装其他软件时可能会安装不成功。

1, 更新系统(gitserver账户下进行)

打开终端,先执行sudo apt-get update命令,然后执行sudo apt-get upgrade命令。

sudo apt-get update:与服务器同步软件包列表,这里的服务器是指系统在sourcelist文件中的源。

sudo apt-get upgrade:升级所有可升级的软件包,如果可升级的软件包依赖于新的软件包,那么新的软件包也会被安装。

2, 安装openssh的服务器端(gitserver账户下进行)

本地已经下载了Openssh的deb包,可以直接安装。打开终端,cd到deb包所在的路径,然后执行命令sudo dpkg –i 。完成安装。

如果本地没有提前下载软件的deb包,那么在网络连接正常的情况下,可以直接在终端输入sudo apt-get install openssh-server,按照提示即可完成安装。

Sudo dpkg –I :安装当前目录下的包。

Sudo apt-get install openssh-server:从源中下载openssh-server,并自动安装。

3, 修改ssh的配置文件(gitserver账户下进行)

将配置文件按如下内容修改:

Port 22 #ssh服务的登录端口

PermitRootLogin no

StrictModes yes

RSAAuthentication yes

#禁止root用户登录

#检查密钥的用户和权限是否正确

#启用RSA认证

PubkeyAuthentication yes #启用公钥认证

Password Authentication no #禁止密码认证

ServerKeyBits 1024 #将serverkey强度改为1024比特

PermitEmptyPasswords no #禁止空密码登录

修改了ssh的配置文件后,必须要重启ssh服务,配置才能生效

4, 重启ssh服务(gitserver账户下进行)

打开终端,执行sudo /etc/init.d/ssh restart命令,返回ok,重启ssh成功。

5, 安装git-core,gitk,git-gui(gitserver账户下进行)

这几个软件的安装包都已经下载到本地,安装方式同openssh一样,使用sudo dpkg命令安装。也可以直接从源上下载并安装。sudo apt-get install git-core gitk git-gui

6, 安装gitosis(gitserver账户下进行)

在你喜欢的位置下,新建一个文件夹,用来存放下载的gitosis安装文件,如

mkdir gitosis-setup

cd gitosis-setup

cd gitosis

#创建文件夹用来存放gitosis的安装文件

#转移到gitosis-setup目录下

#gitosis的安装文件克隆到gitosis-setup目录下

#转移到gitosis目录下

#安装gitosis

git clone git:///gitosis

sudo python install

注意:在执行sudo python install前,需要保证已经安装了python和setuptools软件(sudo apt-get install )。在实际操作时,安装setuptools遇到了困难,源中没有此软件包的地址,于是手动在python的官网上下载了一个ez_setup包,cd ez_setup,sudo python ez_ install成功安装setuptools。最后再执行sudo python install成功安装gitosis。

7, 新建账户(gitserver账户下进行)

截止到现在,gitserver账户下的操作已经完成。这时,我们需要在服务器上新建一个账户,用来管理git仓库和gitosis-admin。使用如下命令新建账户:

sudo useradd –m git:创建一个名为git的账户

sudo passwd git:运行此命令后,可设置git账户的密码

8, 生成管理员密钥(此操作在git管理员的PC上进行)

在git管理员的PC上,先安装msysgit(windows系统),安装后,打开git bash,运行如下命令生成管理员的公钥:

ssh-keygen –t rsa #生成rsa密钥

运行以上命令后,可默认根据提示直接回车。回车后即在当前用户的目录下生成了.ssh/id_rsa和.ssh/id_。其中.ssh/id_rsa是私钥,,.ssh/id_是公钥。接下来可以使用如下命令将git管理员的公钥传输到git服务器上,也可以直接拿U盘拷贝到git服务器。

scp /.ssh/id_ gitserver@IP:/tmp/id_

9, 初始化gitosis(gitserver账户下进行)

#将管理员的公钥传到服务器tmp目录下

进入到拷贝过来的id_所在目录:cd /tmp。执行如下命令初始化gitosis:

Sudo chmod 777 id_

Sudo –H –u git gitosis-init < is_,其中git是指在以上第7步中新建账户的账户名。

此时,会在/home/git目录下生成两个文件夹,分别是gitosis和repositories,repositories下存放的是的仓库。为了让别人能够clone ,需要执行以下操作:sudo chmod 755 /home/repositories//hooks/post-update。至此,gitosis的安装工作已经完成。

10, 新建项目的git仓库(git账户下进行)

在任意位置新建一个文件夹(/home/git/git_repo/),cd到该目录下,执行sudo git

--bare init命令,现在就作为一个空的git仓库存在了。注意在初始化时一定要使用--bare选项。

11, 为普通用户配置访问权限(此操作在git管理员的PC上进行)

要配置访问权限,需要修改gitosis的配置文件。Gitosis是通过一个git仓库来管理配置文件的,在git管理员的PC上,在任意你喜欢的目录下新建一个存放gitosis-admin仓库的目录

Mkdir gitosis-admin

Git clone git@IP:

执行完上述命令,将gitosis-admin的仓库clone到本地了,进入gitosis-admin仓库目录,会看到文件和/keydir/,其中xxx的格式为git管理员账户名@git管理员机器名。/keydir目录下是所有用户的公钥,文件用于配置用户和权限,打开文件,内容为:

[group gitosis-admin]

Writable = gitosis-admin

Members = git管理员账户名@git管理员机器名

这个就是管理组的权限,members中的用户名就是之前上传的公钥里面的用户名。

添加git普通用户的公钥添加到keydir目录下,并且将把修改为:

[gitosis]

Gitweb =yes

[group gitosis-admin]

Writable = gitosis-admin

Members = git管理员账户名@git管理员机器名

[group TEST]

Writable = TEST

Members = git管理员账户名@git管理员机器名 git普通用户账户名@git普通用户机器名。

其中gitweb=yes表示启用对gitweb的支持。然后添加了git普通用户对TEST仓库的写权限,并且新建了一个叫TEST的组。

完成修改后,需要执行以下操作将修改push到服务器:

git commit –a –m “add user xxx to modify TEST”

git push

这样,就更新了服务器端的权限设置。

至此,服务器端的配置完成,团队成员可以在客户端进行对仓库的读写操作。