小公司Git代码服务器选型:GitLab vs Gitee 对比分析及搭建教程

前言

小公司搭建代码服务器,核心问题是:自己搭还是用别人的? 下面从多个维度帮你分析,然后手把手教你搭建。

一、GitLab vs Gitee 核心对比

对比项 GitLab(自建) Gitee(企业版)
部署方式 部署在自己服务器上 云服务,官方托管
费用 免费(社区版),但需要自己买服务器 企业版按人数收费,约 99元/人/年
硬件要求 高:至少 4GB 内存,推荐 8GB+ 无要求(别人帮你跑)
维护成本 高:需要专人维护、更新、备份 低:官方负责
访问速度 取决于自己服务器带宽 国内优化,速度快
私有性 完全私有,数据在自己服务器 数据在 Gitee 服务器
功能完整性 完整(CI/CD、代码审查、Wiki等) 企业版功能也很全
适合场景 有 IT 人员、代码敏感不想外传 无专职运维、团队较小

结论

情况 推荐
团队 5 人以内,无专职运维 直接用 Gitee 企业版,省心
团队有 IT 人员,代码敏感,不想依赖外部 GitLab 或更轻量的 Gitea
服务器配置低(2GB 内存) Gitea(最低 1GB 就够跑)

本文重点:手把手教你搭建 GitLab(自建)和 Gitea(更轻量的替代方案),Gitee 企业版注册就能用,不赘述。


二、方案一:搭建 Gitea(推荐低配服务器)

Gitea 是 GitHub 的轻量克隆版,功能比 GitLab 少一些,但省内存、省 CPU,1GB 内存就能跑,小公司完全够用。

2.1 环境准备

  • 一台 Linux 服务器(CentOS 7 / Ubuntu 均可)
  • 最低配置:1核 CPU + 1GB 内存
  • 推荐配置:2核 CPU + 2GB 内存
  • 系统已经安装好 Git(大多数镜像默认有)

2.2 安装步骤

第一步:用 SSH 工具连接服务器

Windows 用户推荐用 MobaXtermXshell,Mac 用户用终端自带 ssh。

1
2
3
4
5
# 连接服务器,your_server_ip 换成你的服务器 IP
ssh root@your_server_ip

# 第一次连接会提示是否信任,输入 yes 回车
# 然后输入密码(输入时屏幕不显示内容,正常现象)

第二步:创建专门的用户(可选)

Gitea 不能用 root 用户运行,需要单独创建一个用户:

注:如果当前系统用户不是root,无需额外创建

1
2
3
4
5
6
7
8
# 创建用户
adduser git

# 给 git 用户设置密码(需要输入两次)
passwd git

# 让 git 用户有 sudo 权限(之后操作更方便)
usermod -aG wheel git

第三步:安装 Gitea

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 切换到 git 用户
su - git

# 创建 gitea 目录
mkdir -p ~/gitea && cd ~/gitea

# 下载 Gitea(去 https://dl.gitea.com/gitea/ 找最新版本)
# 以下命令下载 1.22 版本的 64 位 Linux 版本
wget -O gitea https://dl.gitea.com/gitea/1.22.0/gitea-1.22.0-linux-amd64

# 给文件执行权限(重要!)
chmod +x gitea

# 验证下载成功
./gitea --version

第四步:创建 Systemd 服务(让 Gitea 开机自启)

切换回 root 用户:

1
2
exit  # 从 git 用户退出
sudo vim /etc/systemd/system/gitea.service

i 进入编辑模式,粘贴以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[Unit]
Description=Gitea
After=syslog.target
After=network.target

[Service]
Type=simple
User=<系统用户名> #>>这里改成系统用户名
Group=<系统用户名> #>>这里改成系统用户名
WorkingDirectory=/home/<系统用户名>/gitea
ExecStart=/home/<系统用户名>/gitea/gitea web
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

编辑完成后,按 Esc 键,输入 :wq 回车保存退出。

然后依次运行:

1
2
3
4
5
6
7
8
9
10
11
# 重新加载 systemd 配置
sudo systemctl daemon-reload

# 启动 Gitea
sudo systemctl start gitea

# 设置开机自启
sudo systemctl enable gitea

# 查看 Gitea 运行状态
sudo systemctl status gitea

看到类似 active (running) 的字样就说明成功了。

第五步:配置防火墙(可选)

1
2
3
4
5
# CentOS 7 开放 3000 端口(Gitea 默认端口)
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --reload

# 如果是阿里云/腾讯云服务器,还需要在控制台的安全组里开放 3000 端口

第六步:初始化配置

打开浏览器,访问:

1
http://你的服务器IP:3000

首次访问会进入初始化页面,填写以下信息:

字段 填写内容
域名 你的服务器 IP 或域名
SSH 端口 22
HTTP 端口 3000
Gitea 基础 URL http://你的IP:3000/
管理员账号 填一个你自己的用户名和密码

注意:最好在初始化页面创建一个管理员账号,方便后续管理。

数据库建议选择内置的SQLite3

第七步:MySQL服务(可选)

gitea初始化数据库有两种选择:

  • 内置的SQLite3数据库,不需要额外配置
  • 第三方数据库,例如MySQL类数据库服务

以ubuntu为例:

1
2
sudo apt install mysql-server
sudo systemctl status mysql

更多数据库安全配置此处不扩展

1
2
3
ps -ef | grep mysql
mysql 5123 1 0 04:16 ? 00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
book 5664 4304 0 04:20 pts/1 00:00:00 grep --color=auto mysql

第八步:配置 SSH(可选,推荐做)

为了让 git clone 可以用 SSH 方式(更快、更安全):

1
2
3
4
5
6
7
# 在你自己的电脑上生成 SSH 密钥(不是服务器上)
ssh-keygen -t rsa -C "your_email@example.com"

# 一路回车,会在 ~/.ssh/ 目录下生成 id_rsa.pub

# 查看公钥内容,复制它
cat ~/.ssh/id_rsa.pub

然后登录 Gitea 网页 → 右上角头像 → 设置 → **SSH 密钥 → 添加密钥,把公钥粘贴进去。


三、方案二:搭建 GitLab(功能全但资源消耗大)

GitLab 功能最完整,但吃内存。4GB 以下内存的服务器容易出问题。如果团队在 10 人以内且服务器配置不高,优先选 Gitea

3.1 环境要求

项目 最低要求 推荐配置
CPU 2 核 4 核
内存 4GB 8GB+
硬盘 20GB 50GB+
系统 CentOS 7 / Ubuntu 20.04

3.2 安装步骤

第一步:安装依赖

1
2
3
4
5
6
# 安装必要组件
sudo yum install -y curl policycoreutils-python openssh-server

# 启动并设置 SSH 开机自启
sudo systemctl enable sshd
sudo systemctl start sshd

第二步:配置防火墙

1
2
3
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

第三步:安装 GitLab

1
2
3
4
5
# 下载安装脚本并执行
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

# 安装 GitLab(可能需要几分钟)
sudo yum install -y gitlab-ee

第四步:修改配置文件

1
sudo vim /etc/gitlab/gitlab.rb

找到 external_url 这一行,修改为你的地址:

1
external_url 'http://你的服务器IP:8922'

GitLab 默认占用端口 80,如果 80 端口被占用,可以改成其他端口如 8922。

第五步:配置生效

1
sudo gitlab-ctl reconfigure

这步需要等待 2~5 分钟,耐心等待。

第六步:解决常见 502 问题

GitLab 非常吃内存,内存不够会报 502。临时解决方法是加 swap:

1
2
3
4
5
6
7
8
9
10
11
# 创建 4GB swap 文件
sudo dd if=/dev/zero of=/mnt/swap bs=512 count=8388616
sudo mkswap /mnt/swap
sudo swapon /mnt/swap
echo "/mnt/swap swap swap defaults 0 0" >> /etc/fstab

# GitLab 日志目录权限问题也可能导致 502
sudo chmod -R 777 /var/log/gitlab

# 每次 reconfigure 后权限会重置,需要重新执行
sudo chmod -R 777 /var/log/gitlab

第七步:访问 GitLab

浏览器打开:

1
http://你的服务器IP:8922

首次访问会要求设置 root 密码,之后用 root 账号登录。


四、团队使用入门

不管你选了哪个平台,团队成员的使用流程是一样的:

4.1 Windows 用户:用 Git Bash

下载 Git for Windows:https://git-scm.com/download/win

安装时一路点 Next 即可。

4.2 配置 Git

1
2
3
4
5
6
7
8
# 在你自己的电脑上配置(不是服务器)
git config --global user.name "张三"
git config --global user.email "zhangsan@company.com"

# 生成 SSH 密钥(如果是 Gitea/GitLab)
ssh-keygen -t rsa -C "zhangsan@company.com"
cat ~/.ssh/id_rsa.pub
# 把公钥复制到平台的网页端(设置 → SSH 密钥)

4.3 日常使用流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 克隆项目(地址在网页上复制)
git clone git@你的服务器:用户名/仓库名.git

# 进入项目目录
cd 仓库名

# 创建自己的分支(不要直接在 master 上改)
git checkout -b zhangsan/feature-xxx

# 写代码...

# 提交代码
git add .
git commit -m "完成了xxx功能"

# 推送到远程
git push origin zhangsan/feature-xxx

# 之后在网页上发起 Merge Request(合并请求)

4.4 拉取同事的代码

1
2
3
4
# 拉取最新代码
git pull origin master

# 如果有冲突,解决冲突后重新提交

五、备份与安全建议

备份

方案 说明
Gitea 数据在 /home/git/gitea/ 目录,定时打包备份即可
GitLab sudo gitlab-rake gitlab:backup:create 一键备份
备份频率 至少每天一次
备份位置 备份到另一台服务器或云存储,防止服务器宕机

安全建议

  1. 修改默认端口:不要用 22 作为 SSH 端口,换成其他端口减少被扫描
  2. 配置 SSL 证书:用 Let’s Encrypt 免费证书给网站加 HTTPS
  3. 定期更新:GitLab/Gitea 每次更新都修复安全漏洞,及时升级
  4. 限制 IP 访问:如果只在公司内网使用,通过防火墙限制只允许公司 IP 访问

六、总结

场景 推荐方案
5 人以下团队,无运维 Gitee 企业版,省心
5~15 人,有基础运维能力 Gitea 自建,轻量稳定
15 人以上,有专业运维 GitLab 自建,功能最全
服务器内存 ≤ 2GB 只能用 Gitea

动手之前,先问自己三个问题:

  1. 我有多少台服务器?配置如何?
  2. 团队有专人维护吗?
  3. 代码数据允许放到第三方平台吗?

想清楚这三点,选择就清晰了。