解说centos6.3搭建一个git服务器
一、环境信息
- 操作系统:CentOS 6.3 (Final)
- Git 版本:1.7.1
- 工具:Gitolite
搭建 Git 服务器的步骤相对简单,需要安装 Git、SSH 支持、Gitolite 并配置公钥。本文全部采用 yum 包进行安装。
二、CentOS 系统搭建步骤
1. 安装必要软件
登录服务器,以 root 用户身份执行以下命令进行安装:
# 安装基本依赖
yum install perl openssh git
若安装失败,需要安装以下依赖包:
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
2. 创建 Git 用户
创建一个专门用于 Git 服务的用户,并设置相关目录权限:
# 创建 git 用户
adduser --system --shell /bin/sh --create-home --home-dir /home/git git
# 切换到 git 用户主目录
cd /home/git
# 创建仓库目录
mkdir repositories
# 更改仓库目录的所有者为 git 用户
chown git:git -R ./repositories
# 设置仓库目录权限
chmod 700 ./repositories
3. 安装 Gitolite
切换至刚创建的 git 用户,执行以下操作:
# 切换到 git 用户
su git
# 克隆 Gitolite 仓库
git clone git://github.com/sitaramc/gitolite
# 创建 bin 目录
mkdir -p $HOME/bin
# 安装 Gitolite 到 bin 目录
gitolite/install -to $HOME/bin
在安装过程中,可能会报错提示缺少模块,此时需要切换到 root 用户安装缺失的模块,例如 perl-Time-HiRes:
# 切换到 root 用户
su -
# 输入服务器 root 密码
# 安装缺失的模块
yum install perl-Time-HiRes
# 切换回 git 用户
su git
# 再次安装 Gitolite 到 bin 目录
gitolite/install -to $HOME/bin
4. 生成并复制公钥
在本机(本文以 Debian 系统为例)生成 SSH 密钥:
# 生成 SSH 密钥
ssh-keygen
# 切换到 SSH 密钥目录
cd /root/.ssh
该目录下会生成 id_rsa.pub 和 id_rsa 文件,分别为公钥和私钥。如果之前安装过 OpenSSL 并生成过密钥,注意不要覆盖。
将公钥复制到服务器的 /tmp 目录:
# 复制公钥到服务器
scp ~/.ssh/id_rsa.pub server_username@server_host:/tmp
# 输入密码
5. 配置 Gitolite
回到服务器,执行以下操作:
# 切换到 /tmp 目录
cd /tmp
# 重命名公钥文件
mv id_rsa.pub admin.pub
将公钥文件重命名为 admin.pub 是因为 Gitolite 根据文件名来设立帐号,这里使用 admin 作为帐号名。
# 切换到 git 用户
su git
# 使用公钥初始化 Gitolite
$HOME/bin/gitolite setup -pk admin.pub
初始化完成后,在 /home/git/repositories 目录下可以看到 gitolite-admin.git 和 test.git 两个仓库文件,分别用于管理仓库和测试。
6. 拉取服务器代码
在本机拉取服务器的 gitolite-admin 仓库:
git clone git@server_host:gitolite-admin
进入仓库后,可以看到 conf 和 keydir 目录。conf/gitolite.conf 是用于添加用户和仓库的配置文件,keydir 目录用于存放对应用户的公钥。修改配置后,可直接进行 push 操作。
三、Debian 系统注意事项
在 Debian 系统上搭建步骤与 CentOS 基本相同,唯一需要注意的是 adduser 命令的参数不同:
adduser --system --shell /bin/sh --home /home/git git
通过以上步骤,你可以在 CentOS 6.3 系统上成功搭建一个 Git 服务器,并使用 Gitolite 进行仓库管理。