1、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, 选择时区:
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
3、中设定的用户名密码登陆系统。 二、 安装软件 进入系统后,需要对系统进行更新,否则后面安装其他软件时可能会安装不成功。 1, 更新系统(gitserver账户下进行) 打开终端,先执行sudo apt-get update命令,然后执行sudo apt-get upgrade命令。 sudo apt-get update:与服务器同步软件包列表,这里的服务器是指系统在sourcelist文件中的源。 sudo apt-get upgrade:升级所有可升级的软件包,如果可升级的软件包依赖于新的软件包,那么新的软件包也会被安装。 2, 安装openssh的服务器端(gitser
4、ver账户下进行) 本地已经下载了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,并自动
5、安装。 3, 修改ssh的配置文件(gitserver账户下进行) 将配置文件按如下内容修改: Port 22 #ssh服务的登录端口 PermitRootLogin no #禁止root用户登录 StrictModes yes #检查密钥的用户和权限是否正确 RSAAuthentication yes #启用RSA认证 PubkeyAuthentication yes #启用公钥认证 Password Authentication no #禁止密码认证 ServerKeyBits 1024 #将serverkey强度改为1024比特 Permit
6、EmptyPasswords 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, 安装git
7、osis(gitserver账户下进行) 在你喜欢的位置下,新建一个文件夹,用来存放下载的gitosis安装文件,如 mkdir gitosis-setup #创建文件夹用来存放gitosis的安装文件 cd gitosis-setup #转移到gitosis-setup目录下 git clone git:// #gitosis的安装文件克隆到gitosis-setup目录下 cd gitosis #转移到gitosis目录下 sudo python setup.py install #安装gitosis 注意:在执行sudo python setu
8、p.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账户
9、下的操作已经完成。这时,我们需要在服务器上新建一个账户,用来管理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密钥 运行以上命令后,可默认根据提示直接回车。回车后即在当前用户的目录下生成了.ss
10、h/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
11、 –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账户下
12、进行) 在任意位置新建一个文件夹(/home/git/git_repo/TEST.git),cd到该目录下,执行sudo git --bare init命令,现在TEST.git就作为一个空的git仓库存在了。注意在初始化时一定要使用--bare选项。 11, 为普通用户配置访问权限(此操作在git管理员的PC上进行) 要配置访问权限,需要修改gitosis的配置文件。Gitosis是通过一个git仓库来管理配置文件的,在git管理员的PC上,在任意你喜欢的目录下新建一个存放gitosis-admin仓库的目录 Mkdir gitosis-admin Git clone git@IP
13、gitosis-admin.git 执行完上述命令,将gitosis-admin的仓库clone到本地了,进入gitosis-admin仓库目录,会看到gitosis.conf文件和/keydir/xxx.pub,其中xxx的格式为git管理员账户名@git管理员机器名。/keydir目录下是所有用户的公钥,gitosis.conf文件用于配置用户和权限,打开gitosis.conf文件,内容为: [group gitosis-admin] Writable = gitosis-admin Members = git管理员账户名@git管理员机器名 这个就是管理组的权限,membe
14、rs中的用户名就是之前上传的公钥里面的用户名。 添加git普通用户的公钥添加到keydir目录下,并且将把gitosis.conf修改为: [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 这样,就更新了服务器端的权限设置。 至此,服务器端的配置完成,团队成员可以在客户端进行对仓库的读写操作。






