凌峰创科服务平台

centos 搭建git服务器

在CentOS系统上搭建Git服务器是一个常见的需求,尤其适合团队协作或个人代码管理,以下是详细的步骤和配置说明,确保服务器稳定运行并支持SSH和HTTP两种访问方式。

centos 搭建git服务器-图1
(图片来源网络,侵删)

确保系统已更新至最新状态,并安装必要的依赖包,执行以下命令:

sudo yum update -y
sudo yum install -y git curl openssl-devel

创建一个专门的系统用户用于管理Git仓库,

sudo useradd -m -s /bin/bash git
sudo passwd git

初始化Git仓库,在服务器上选择一个目录,如/srv/git,并设置权限:

sudo mkdir -p /srv/git
sudo chown -R git:git /srv/git
sudo chmod -R 755 /srv/git

创建一个测试仓库,例如test.git

centos 搭建git服务器-图2
(图片来源网络,侵删)
cd /srv/git
sudo -u git git init --bare test.git

配置SSH访问是更安全的方式,在服务器上为每个开发者生成SSH公钥,并将其添加到git用户的~/.ssh/authorized_keys文件中,确保文件权限正确:

sudo mkdir -p /home/git/.ssh
sudo chmod 700 /home/git/.ssh
sudo touch /home/git/.ssh/authorized_keys
sudo chmod 600 /home/git/.ssh/authorized_keys

开发者可通过git clone git@server_ip:/srv/git/test.git克隆仓库。

若需支持HTTP访问,可安装Nginx和Gitosis或Gitolite,这里以Gitolite为例:

sudo yum install -y gitolite3
sudo -u git gitolite setup -pk /path/to/admin.pub

将管理员的公钥路径替换为实际路径,配置完成后,可通过HTTP URL访问仓库,如http://server_ip/git/test.git

centos 搭建git服务器-图3
(图片来源网络,侵删)

防火墙和SELinux配置也不可忽视,开放SSH(22端口)和HTTP(80端口):

sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

若使用SELinux,需调整上下文:

sudo semanage fcontext -a -t httpd_sys_content_t "/srv/git(/.*)?"
sudo restorecon -Rv /srv/git

以下是常见配置的对比表格:

配置项 SSH访问 HTTP访问
端口 22 80/443
认证方式 SSH密钥 用户名/密码或Token
配置复杂度 简单 中等(需Web服务支持)
性能 中等
适用场景 团队内部开发 公开或远程访问

测试仓库功能,在本地客户端执行:

git clone git@server_ip:/srv/git/test.git
cd test
echo "test" > README.md
git add .
git commit -m "initial commit"
git push origin master

若推送成功,说明服务器搭建完成。

相关问答FAQs

  1. 如何为Git仓库添加用户权限?
    答:若使用Gitolite,管理员可通过编辑~git/.gitolite/conf/gitolite.conf文件,在repo块中指定用户权限(如RW+表示读写),修改后执行gitolite push更新配置,SSH用户需提前将公钥添加到~git/.ssh/authorized_keys

  2. 如何解决“Permission denied (publickey)”错误?
    答:首先检查客户端公钥是否正确添加到服务器的~git/.ssh/authorized_keys文件,并确保文件权限为600,确认git用户的~/.ssh目录权限为700,若问题依旧,检查SSH服务是否正常运行(systemctl status sshd)。

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