当前位置:首页 > 行业动态 > 正文

如何利用Git轻松搭建Linux服务器?

通过Git在Linux服务器搭建代码仓库可实现版本控制和协作开发,需安装Git并创建裸仓库,配置SSH密钥认证,设置权限管理,用户可通过git clone/push命令同步代码,配合hooks脚本可实现自动化部署,适用于持续集成等场景。

适用场景
本教程适用于需要在Linux服务器上搭建私有Git仓库,并通过网页访问的场景,适合开发者、团队协作或开源项目管理,系统环境以Ubuntu 20.04/CentOS 7+为例,其他发行版可参考调整。


准备工作

  1. 服务器要求

    • 一台运行Linux的服务器(推荐1核2GB内存及以上配置)。
    • 已安装SSH服务,并开放22端口。
    • 拥有root或sudo权限的用户。
  2. 域名与防火墙

    • 若需通过域名访问,提前解析域名到服务器IP。
    • 确保防火墙开放80(HTTP)、443(HTTPS)端口。

安装Git并创建Git用户

  1. 安装Git
    通过包管理器安装最新版Git:

    # Ubuntu/Debian
    sudo apt update && sudo apt install git -y
    # CentOS/RHEL
    sudo yum install git -y
  2. 创建专用Git用户
    为安全起见,新建一个仅用于Git操作的系统用户:

    sudo adduser --system --shell /bin/bash --group --home /home/git git

配置SSH密钥认证

  1. 生成SSH密钥对(客户端操作)
    在本地计算机生成密钥:

    ssh-keygen -t ed25519 -C "your_email@example.com"

    将公钥(~/.ssh/id_ed25519.pub复制到服务器的/home/git/.ssh/authorized_keys文件中。

  2. 服务器端权限配置

    sudo mkdir -p /home/git/.ssh
    sudo chmod 700 /home/git/.ssh
    sudo chmod 600 /home/git/.ssh/authorized_keys
    sudo chown -R git:git /home/git

初始化Git仓库

  1. 创建裸仓库
    以Git用户身份创建仓库:

    sudo -u git mkdir -p /home/git/repos/project.git
    sudo -u git git init --bare /home/git/repos/project.git
  2. 客户端克隆仓库
    本地执行:

    git clone git@服务器IP或域名:/home/git/repos/project.git

通过Web界面访问仓库(可选)
若需通过浏览器访问仓库,推荐使用GitWeb或轻量工具如Gitea,以下以GitWeb为例:

  1. 安装GitWeb

    # Ubuntu
    sudo apt install gitweb fcgiwrap
    # CentOS
    sudo yum install gitweb spawn-fcgi
  2. 配置Apache/Nginx
    Apache示例配置

    Alias /gitweb /usr/share/gitweb
    <Directory /usr/share/gitweb>
      Options +FollowSymLinks +ExecCGI
      AddHandler cgi-script .cgi
      DirectoryIndex gitweb.cgi
    </Directory>

    重启服务:

    sudo systemctl restart apache2
  3. 访问GitWeb
    通过http://服务器IP或域名/gitweb查看仓库列表。


启用HTTPS加密(提升安全性)

  1. 安装Certbot获取SSL证书

    # Ubuntu
    sudo apt install certbot python3-certbot-nginx
    # CentOS
    sudo yum install certbot python3-certbot-nginx

    生成证书:

    sudo certbot --nginx -d yourdomain.com
  2. 配置强制跳转HTTPS
    在Web服务器配置文件中添加:

    server {
      listen 80;
      server_name yourdomain.com;
      return 301 https://$server_name$request_uri;
    }

权限管理与高级配置

  • 仓库权限控制:通过gitolite或直接修改authorized_keys限制用户访问。
  • 自动化部署:在仓库的hooks/post-receive中添加脚本,实现自动拉取代码到Web目录。
  • 定期备份:使用cron任务定时备份/home/git/repos目录。

通过上述步骤,可快速搭建一个支持SSH和Web访问的私有Git服务器,建议定期更新系统和Git版本,结合防火墙规则与SSL证书,确保服务安全可靠,对于企业级需求,可扩展为GitLab或Gitea以支持更多协作功能。


引用说明

  • Git官方文档:https://git-scm.com/doc
  • Let’s Encrypt证书:https://letsencrypt.org
  • Apache配置指南:https://httpd.apache.org/docs/
  • Nginx SSL配置:https://nginx.org/en/docs/http/configuring_https_servers.html
0