凌峰创科服务平台

CentOS 6.5如何搭建Git服务器?

  1. 准备工作:更新系统,安装必要的软件。
  2. 安装 Git:从源码编译安装最新版本的 Git,因为 CentOS 6.5 自带的版本太旧。
  3. 创建 Git 用户:为 Git 服务创建一个专用的、无登录权限的系统用户,以提高安全性。
  4. 创建裸仓库:创建一个“裸仓库”(Bare Repository),这是用于服务器端共享的标准格式。
  5. 设置 SSH 公钥认证:这是最常用和最方便的方式,让客户端可以通过免密登录推拉代码。
  6. 设置仓库所有权和权限:确保 Git 用户可以管理仓库。
  7. 客户端连接测试:在另一台机器上测试克隆和推送。

详细步骤

第 1 步:准备工作

root 用户或使用 sudo 权限登录到你的 CentOS 6.5 服务器。

CentOS 6.5如何搭建Git服务器?-图1
(图片来源网络,侵删)
  1. 更新系统 虽然系统老旧,但更新一下软件包列表总是好的。

    yum update -y
  2. 安装编译工具和依赖 我们需要从源码编译 Git,所以必须安装 gcc, make 等编译工具,以及 Git 所需的依赖库,如 curl, expat, gettext, openssl, zlib 等。

    yum groupinstall "Development Tools" -y
    yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel -y

第 2 步:从源码安装 Git

CentOS 6.5 自带的 Git 版本(通常是 1.7.x)太旧,不支持很多现代功能,我们强烈建议从源码安装一个较新的版本(2.30.0 或更高)。

  1. 下载 Git 源码 我们去官方 GitHub 下载一个稳定版本的源码压缩包,这里以 30.0 为例,你可以去 Git 官方 GitHub Releases 页面 找到更新的版本号。

    CentOS 6.5如何搭建Git服务器?-图2
    (图片来源网络,侵删)
    # 切换到 /usr/src 目录,这是存放源码的常见位置
    cd /usr/src
    # 下载指定版本的 Git 源码
    wget https://github.com/git/git/archive/v2.30.0.tar.gz
    # 解压
    tar -zxf v2.30.0.tar.gz
  2. 编译和安装 Git

    # 进入解压后的目录
    cd git-2.30.0
    # 编译,prefix 指定了安装目录,我们安装在 /usr/local/git 下
    # --with-curl --with-expat 等选项确保链接了我们之前安装的依赖库
    make configure
    ./configure --prefix=/usr/local/git --with-curl --with-expat
    # 开始编译(这个步骤可能需要几分钟时间)
    make
    # 安装
    make install
  3. 将新 Git 命令添加到系统 PATH 为了让系统能优先使用新安装的 Git,我们需要将其路径添加到 PATH 环境变量中。

    # 编辑 /etc/profile 文件
    vim /etc/profile

    在文件末尾添加以下内容:

    export PATH=/usr/local/git/bin:$PATH

    保存并退出(wq),然后让配置立即生效:

    CentOS 6.5如何搭建Git服务器?-图3
    (图片来源网络,侵删)
    source /etc/profile
  4. 验证 Git 版本 检查一下是否安装成功并且版本正确。

    git --version

    如果看到类似 git version 2.30.0 的输出,说明安装成功。

第 3 步:创建 Git 用户和仓库目录

为了安全,不要用 root 用户来运行 Git 服务。

  1. 创建 Git 用户 这个用户将用于管理所有 Git 仓库,并且禁止其登录 SSH。

    useradd -m -s /sbin/nologin git
    • -m: 创建用户主目录。
    • -s /sbin/nologin: 设置用户默认 shell,使其无法通过 SSH 登录系统。
  2. 创建仓库根目录 我们将在 /home/git 目录下创建一个 repositories 文件夹来存放所有裸仓库。

    mkdir -p /home/git/repositories

第 4 步:创建第一个裸仓库

“裸仓库”没有工作区,它只包含 .git 目录的内容,非常适合作为共享仓库。

  1. 切换到 Git 用户

    su - git
  2. 初始化裸仓库 我们来创建一个名为 my-project.git 的项目。

    cd /home/git/repositories
    git init --bare my-project.git

    你会看到输出 Initialized empty Git repository in /home/git/repositories/my-project.git/

  3. 退出 Git 用户

    exit

第 5 步:配置 SSH 公钥认证

这是最关键的一步,你需要让服务器能够识别并信任你的客户端电脑。

  1. 在服务器上创建 ~/.ssh 目录和 authorized_keys 文件 我们以 root 身份操作,然后切换所有权给 git 用户。

    # 创建 .ssh 目录
    mkdir -p /home/git/.ssh
    # 创建或清空 authorized_keys 文件,用于存放客户端的公钥
    touch /home/git/.ssh/authorized_keys
    # 设置正确的所有者和权限(非常重要!)
    chown -R git:git /home/git/.ssh
    chmod 700 /home/git/.ssh
    chmod 600 /home/git/.ssh/authorized_keys
  2. 在客户端生成 SSH 密钥对 这一步在你的开发机(客户端)上操作,而不是服务器。 如果你还没有 SSH 密钥,请运行:

    # 邮箱地址可以随便填,但最好是你自己的
    ssh-keygen -t rsa -C "your_email@example.com"

    一路回车即可,会在用户主目录的 .ssh 文件夹下生成 id_rsa (私钥) 和 id_rsa.pub (公钥)。

  3. 将客户端的公钥上传到服务器 将客户端上 ~/.ssh/id_rsa.pub 文件的内容复制出来。

    # 在客户端上查看并复制公钥内容
    cat ~/.ssh/id_rsa.pub

    回到服务器,将刚刚复制的公钥内容追加到 /home/git/.ssh/authorized_keys 文件的末尾。

    # 在服务器上操作
    echo "粘贴你的公钥内容到这里" >> /home/git/.ssh/authorized_keys

    或者使用 vim 编辑器手动添加。

第 6 步:设置仓库所有权和权限

确保所有仓库都属于 git 用户,并且权限正确。

# 回到 root 用户
chown -R git:git /home/git/repositories

第 7 步:防火墙设置

CentOS 6.5 默认使用 iptables 防火墙,你需要开放 SSH 端口(22)。

# 添加允许 SSH 的规则
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 保存防火墙规则
service iptables save
# 重启防火墙服务
service iptables restart

客户端连接测试

你的 Git 服务器已经搭建完成!回到你的客户端电脑进行测试。

  1. 克隆仓库 使用 git clone 命令,格式为 ssh://<git用户>@<服务器IP>:<端口>/<仓库绝对路径>

    # <git_user> 是我们创建的 'git'
    # <server_ip> 是你的服务器 IP 地址
    git clone ssh://git@<server_ip>/home/git/repositories/my-project.git

    第一次连接时,SSH 会提示你服务器的指纹,输入 yes 即可,之后,如果配置了公钥,应该就能直接克隆下来,无需输入密码。

  2. 推送到仓库 进入你刚刚克隆下来的 my-project 目录,进行一些修改,然后尝试推送。

    cd my-project
    echo "# Hello Git Server" >> README.md
    git add .
    git commit -m "Initial commit"
    git push origin master

    如果推送成功,说明你的 Git 服务器完全正常工作!

总结与注意事项

分享:
扫描分享到社交APP
上一篇
下一篇