服务器搭建 Git 仓库 GitLab Gitea 实践指南

在当今的软件开发领域,版本控制系统已经成为必不可少的工具。Git 作为分布式版本控制系统,因其高效、灵活的特点被广大开发者所青睐。然而,仅仅拥有 Git 工具是不够的,我们还需要一个可靠的平台来托管和管理 Git 仓库。GitLab 和 Gitea 是两种流行的选择,它们分别提供了丰富的功能和轻量级的服务,满足不同规模项目的需求。本文将详细介绍如何在服务器上搭建 GitLab 和 Gitea,并提供一些实用的配置建议,帮助开发者更好地管理自己的代码仓库。

1.环境准备

在开始搭建 Git 仓库之前,我们需要准备好合适的服务器环境。通常,我们可以选择以下几种操作系统:

  • Linux 发行版:如 Ubuntu, CentOS, Debian 等。这些 Linux 发行版在服务器领域广泛使用,具有稳定性和强大的社区支持。

  • Windows Server:虽然 Linux 更受开发者喜爱,但 Windows Server 在某些企业环境中也有一定应用。

本文将以 Ubuntu 20.04 为例,介绍如何在 Linux 服务器上搭建 GitLab 和 Gitea。

1.1 安装 Git

首先,我们需要确保服务器上已经安装了 Git。打开终端并运行以下命令:

sudo apt update
sudo apt install git

安装完成后,可以通过以下命令验证 Git 是否安装成功:

git --version

1.2 配置服务器

为了便于管理用户和权限,建议在服务器上创建一个专门的用户来运行 Git 服务。可以使用以下命令创建用户:

sudo adduser git

设置密码并赋予该用户 sudo 权限:

sudo usermod -aG sudo git

切换到新创建的用户:

sudo su - git

2.搭建 GitLab

GitLab 是一个功能丰富的 Git 仓库管理平台,提供了代码托管、CI/CD、容器注册等功能。我们将以 Omnibus GitLab 安装包为例,介绍如何在服务器上搭建 GitLab。

2.1 下载安装包

访问 GitLab 官方网站,下载适用于 Ubuntu 的 Omnibus GitLab 安装包。例如,最新的稳定版本可能是:

wget https://packages.gitlab.com/gitlab/gitlab-omnibus/gitlab-ce_15.3.1-omnibus-x86_64.deb

2.2 安装 GitLab

运行以下命令安装 GitLab:

sudo dpkg -i gitlab-ce_15.3.1-omnibus-x86_64.deb

安装过程中可能会出现依赖性问题,可以使用以下命令解决:

sudo apt --fix-broken install

2.3 初始化 GitLab

安装完成后,运行以下命令初始化 GitLab:

sudo gitlab-ctl reconfigure

初始化完成后,可以通过以下命令启动 GitLab:

sudo gitlab-ctl start

和查看状态:

sudo gitlab-ctl status

2.4 访问 GitLab

打开浏览器并访问 http://your_server_ip,你应该能够看到 GitLab 的登录界面。默认管理员用户是 root,初始密码可以在服务器上的 /etc/gitlab/gitlab.rb 文件中找到。

2.5 配置 GitLab

为了更好地适应项目需求,我们需要对 GitLab 进行一些配置。编辑 /etc/gitlab/gitlab.rb 文件,修改相关参数:

gitlab_rails['default_queue_size'] = 20
gitlab_rails['monitoring整体状态'] = true
gitlab_rails['sidekiq队列调度'] = true

保存文件后,运行以下命令应用新的配置:

sudo gitlab-ctl reconfigure

3.搭建 Gitea

Gitea 是一个轻量级的 Git 仓库管理平台,提供了与 GitLab 相似的核心功能,但安装和配置更为简单。下面我们将介绍如何在服务器上搭建 Gitea。

3.1 下载安装包

访问 Gitea 官方网站 下载适用于 Ubuntu 的 Gitea 安装包。例如,最新的稳定版本可能是:

wget https://dl.gitea.io/gitea/gitea-1.19.0-linux-amd64.tar.gz

3.2 解压安装包

解压下载的安装包:

tar -xzvf gitea-1.19.0-linux-amd64.tar.gz

3.3 创建运行用户

同 GitLab 的配置一样,我们创建一个专门的用户来运行 Gitea:

sudo adduser --system --group gitea

3.4 移动文件并设置权限

将解压后的文件移动到 /opt 目录并设置权限:

sudo mv gitea-1.19.0-linux-amd64 /opt/gitea
sudo chown -R gitea:gitea /opt/gitea

创建必要的目录并设置权限:

sudo mkdir -p /opt/gitea/custom/conf /opt/gitea/custom/data
sudo chown -R gitea:gitea /opt/gitea/custom

3.5 配置 Gitea

复制 Gitea 默认配置文件并编辑:

sudo cp /opt/gitea/conf/app.conf /opt/gitea/custom/conf/app.conf
sudo nano /opt/gitea/custom/conf/app.conf

在配置文件中,你可以修改数据库类型、端口、域名等参数:

[server]
port = 3000
root_url = http://your_server_ip/

[repository]
auto_create制度建设 = true

[database]
type = sqlite3
path = /opt/gitea/custom/data/db.sqlite3

3.6 启动 Gitea

创建一个系统服务来管理 Gitea:

sudo nano /etc/systemd/system/gitea.service

添加以下内容:

[Unit]
Description=Gitea - Git repository manager
After=syslog.target network.target

[Service]
User=gitea
Group=gitea
WorkingDirectory=/opt/gitea
ExecStart=/opt/gitea/gitea -c /opt/gitea/custom/conf/app.conf run
Restart=always
Environment=GLAB_SET befind false
Type=simple
LimitNOFILE=65536
LimitNPROC=512

[Install]
WantedBy=multi-user.target

启动并启用 Gitea 服务:

sudo systemctl start gitea
sudo systemctl enable gitea

3.7 访问 Gitea

打开浏览器并访问 http://your_server_ip:3000,你应该能够看到 Gitea 的登录界面。默认管理员用户是 admin,初始密码可以在服务器上的 /root/gitea密码.md 文件中找到。

4.配置域名和 HTTPS

为了提高服务的可靠性,建议为 GitLab 和 Gitea 配置域名和 HTTPS。下面我们将介绍如何配置 Let's Encrypt 证书来实现免费 HTTPS。

4.1 安装 Certbot

Certbot 是一个流行的自动化证书颁发工具,支持多种域名和证书颁发机构。安装 Certbot:

sudo apt install certbot

4.2 获取证书

为 GitLab 获取证书:

sudo certbot certonly --standalone -d your_domain --preferred-challenges=dns --email your_email@example.com

为 Gitea 获取证书:

sudo certbot certonly --standalone -d your_domain --preferred-challenges=dns --email your_email@example.com

4.3 配置 Nginx

编辑 Nginx 配置文件,为 GitLab 和 Gitea 添加 HTTPS 支持。例如,为 GitLab 配置:

sudo nano /etc/nginx/sites-available/gitlab

添加以下内容:

server {
    listen 443 ssl;
    server_name your_domain;

    ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;

    location / {
        proxy_pass http://gitlab;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

同样为 Gitea 配置:

sudo nano /etc/nginx/sites-available/gitea

添加以下内容:

server {
    listen 443 ssl;
    server_name your_domain;

    ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;

    location / {
        proxy_pass http://gitea:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

启用配置:


sudo ln -s