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, 更新系统(6月份节日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 opensshxxx.deb。完成安装。
如果本地没有提前下载软件的deb包,那么在网络连接正常的情况下,可以直接在终端输入sudo apt-get install openssh-server,按照提示即可完成安装。
Sudo dpkg –I opensshxxx.deb:安装当前目录下的opensshxxx.deb包。
Sudo apt-get install openssh-server:从源中下载openssh-server,并自动安装。
3, 修改ssh的配置文件(gitserver账户下进行
将配置文件按如下内容修改:
Port 22                  #ssh服务的登录端口
PermitRootLogin no            #禁止root用户登录
StrictModes yes            #检查密钥的用户和权限是否正确
RSAAuthentication yes        #启用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                #创建文件夹用来存放gitosis的安装文件
cd gitosis-setup                    #转移到gitosis-setup目录下
git clone git://eagain/gitosis        #gitosis的安装文件克隆到gitosis-setup目录下
cd gitosis                        #转移到gitosis目录下
sudo python setup.py install            #安装gitosis
注意:在执行sudo python setup.py install前,需要保证已经安装了python和setuptools软件(sudo apt-get install python-setuptools.py)。在实际操作时,安装setuptools遇到了困难,源中没有此软件包的地址,于是手动在python的上下载了一个ez_setup包,cd ez_setup,sudo python ez_setup.py install成功安装setuptools。最后再执行sudo python setup.py 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_rsa.pub。其中.ssh/id_rsa是私钥,,.ssh/id_rsa.pub是公钥。接下来可以使用如下命令将git管理员的公钥传输到git服务器上,也可以直接拿U盘拷贝到git服务器。
scp /.ssh/id_rsa.pub gitserver@IP:/tmp/id_rsa.pub    #将管理员的公钥传到服务器tmp目录下
9, 初始化gitosis(gitserver账户下进行
进入到拷贝过来的id_rsa.pub所在目录:cd /tmp。执行如下命令初始化gitosis:
Sudo chmod 777 id_rsa.pub
Sudo –H –u git gitosis-init < is_rsa.pub,其中git是指在以上第7步中新建账户的账户名。
    此时,会在/home/git目录下生成两个文件夹,分别是gitosis和repositories,repositories下存放的是gitosis-admin.git的仓库。为了让别人能够clone gitosis-admin.git,需要执行以下操作:sudo chmod 755 /home/repositories/gitosis-admin.git/hooks/post-update。至此,gitosis的安装工作已经完成。
10, 新建项目的git仓库(git账户下进行
在任意位置新建一个文件夹(/home/git/git_repo/TEST.git),cd到该目录下,执行sudo git --bare init命令,现在TEST.git就作为一个空的git仓库存在了。注意在初始化时一定要使用--bare选项。在rt三角形abc
11, 为普通用户配置访问权限(此操作在git管理员的PC上进行
要配置访问权限,需要修改gitosis的配置文件。Gitosis是通过一个git仓库来管理配置文件的,在git管理员的PC上,在任意你喜欢的目录下新建一个存放gitosis-admin仓库的目录
Mkdir gitosis-admin
Git clone git@IP:gitosis-admin.git
执行完上述命令,将gitosis-admin的仓库clone到本地了,进入gitosis-admin仓库目录,会看到f珍惜时间的故事文件和/keydir/xxx.pub,其中xxx的格式为git管理员账户名@git管理员机器名。/keydir目录下是所有用户的公钥,f文件用于配置用户和权限,打开f文件,内容为:
[group gitosis-admin]
Writable = gitosis-admin
Members = git管理员账户名@git管理员机器名
这个就是管理组的权限,members中的用户名就是之前上传的公钥里面的用户名。
添加git普通用户的公钥添加到keydir目录下,并且将f修改为:
[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
这样,就更新了服务器端的权限设置。
至此,服务器端的配置完成,团队成员可以在客户端进行对仓库的读写操作。