在现代软件开发中,Git 已经成为最流行的版本控制系统之一。虽然 GitHub、Gitee、GitLab 等公共服务提供了方便的托管平台,但有时候由于安全性、隐私或其他定制化需求,我们需要搭建一个自己的 Git 服务器。
一、Gitea简介
Gitea是一个开源、轻量级的自托管Git服务,它为用户提供了一个类似于GitHub或GitLab的代码托管平台。Gitea采用Go语言开发,具有高效的性能和跨平台特性,适用于个人开发者、小型团队以及企业用户。
- 内网私有化部署:能够在内网部署 Gitea 使其可以更好地控制数据流向和安全性。
- 开源优势:Gitea的开源特性是其重要的特性之一。它基于 MIT 许可证,意味着可以自由使用、修改和分发软件,完全不受限制。
- 成本效益:Gitea的免费开源模式Gitea对硬件资源的要求较低,能够在低成本的服务器或 VPS 上轻松运行。其轻量化的特性使得运维成本大幅减少,可以灵活地选择基础设施来部署。
- 多用户权限管理:Gitea提供了细粒度的权限控制,适合企业对不同团队、项目的管理需求。管理员可以为不同的用户或团队分配特定权限,确保代码安全。
二、准备工作
在开始搭建之前,需要的条件和配置如下:
- 硬件要求:具有root权限的一台联网的服务器(至少要连内网),硬件方面,小型团队/项目2 个 CPU 内核和 1GB 内存通常就足够,多个大项目或有高并发需求,至少要8 个 CPU 内核和 16GB 内存。
- 操作系统: Linux 发行版(如 Ubuntu、CentOS),Windows或者MacOS。
三、私有化部署步骤
3.1、安装git
3.1.1、切换 root 账户
在操作之前先切换至 root 账户
su root
如果不切换账户,请在下列指令前添加 sudo 提权。在这里插入代码片
之后视服务器本身的系统,安装Git:
1️⃣、在 Ubuntu 安装 Git
apt update
apt install git
2️⃣、在 CentOS 安装 Git
yum update
yum install git
3️⃣、在 Windows 安装 Git
- 前往Git for Windows(https://gitforwindows.org/)官网下载安装包。
- 运行安装程序,按照向导进行安装。
- 安装完成后,可以使用 Git Bash 进行 Git 操作。
3.1.2、查看安装版本
安装成功后,可以看一下自己安装的版本:
git --version
3.2、准备数据库(MySQL)
3.2.1、安装MySQL
在服务器安装MySQL数据库服务。安装建议:尽量用压缩包安装,对日后的卸载更为方便
3.2.2、创建数据库
使用root用户或者root权限,输入mysql -u root -p并输入密码登录数据库:
然后创建一个将被 Gitea 使用的数据库用户,并使用密码进行身份验证。以下示例中使用了 ‘gitea’ 作为密码。
SET old_passwords=0;
CREATE USER 'gitea' IDENTIFIED BY 'gitea';
然后使用 UTF-8 字符集和大小写敏感的排序规则创建数据库。
utf8mb4_bin
是 MySQL/MariaDB 的通用排序规则。 Gitea 启动后会尝试把数据库修改为更合适的字符集 (utf8mb4_0900_as_cs
或者 uca1400_as_cs
) 并在可能的情况下更改数据库。 如果你想指定自己的字符集规则,可以在 app.ini 中设置 [database].CHARSET_COLLATION
。
CREATE DATABASE giteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_bin';
最后,将数据库上的所有权限授予上述创建的数据库用户。
GRANT ALL PRIVILEGES ON giteadb.* TO 'gitea';
FLUSH PRIVILEGES;
之后输入exit退出mysql,然后测试是否能够连接,输入密码后,成功进入mysql则成功!
mysql -u gitea -p giteadb
2.3、安装gitea
Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。Gitea的首要目标是创建一个极易安装,运行非常快速,安装和使用体验良好 的自建 Git 服务。
Gitea采用Go作为后端语言,只需生成一个可执行程序即可。 支持 Linux, macOS 和 Windows等多平台, 支持主流的x86,amd64、 ARM 和 PowerPC等架构。
2.3.1、使用二进制文件安装
直接在下载页面:https://dl.gitea.com/gitea/ 选择对应平台的二进制文件。
- 对于 Linux,linux-amd64 适用于 64-bit 的 Intel/AMD 平台。更多架构包含 arm64 (Raspberry PI 4),386 (32-bit),arm-5 以及 arm-6。
- 对于 Windows,windows-4.0-amd64 适用于 64-bit 的 Intel/AMD 平台,386 适用于 32-bit 的 Intel/AMD 平台。
- 对于 macOS,darwin-arm64 适用于 Apple Silicon 架构,darwin-amd64 适用于 Intel 架构.
然后验证 GPG 签名:
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
gpg --verify gitea-1.23.6-linux-amd64.asc gitea-1.23.6-linux-amd64
校验正确时的信息为 Good signature from “Teabot teabot@gitea.io”。 校验错误时的信息为 This key is not certified with a trusted signature!。
然后依次运行以下命令:
mkdir -p /var/lib/gitea/{custom,data,log}
chown -R git:git /var/lib/gitea/
chmod -R 750 /var/lib/gitea/
mkdir /etc/gitea
chown root:git /etc/gitea
chmod 770 /etc/gitea
export GITEA_WORK_DIR=/var/lib/gitea/
cp gitea /usr/local/bin/gitea
完成以上步骤后,就可以使用 systemctl restart gitea 安全地启动和重启程序了。
2.3.2、Docker安装(最方便)
创建 docker-compose.yml,使用下面的模板创建 docker-compose.yml,这里使用到的镜像是 gitea/gitea:1.17.2-rootless。
version: "3"
services:
server:
image: gitea/gitea:1.17.2-rootless
container_name: gitea
restart: always
volumes:
- ./data:/var/lib/gitea
- ./config:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "2222:2222"
其中,关键配置包括数据挂载和端口映射。./data:/data挂载数据目录,./config:/etc/gitea挂载配置文件,并同步时区信息确保时间准确。端口映射中,3000:3000提供Web访问,2222:2222用于SSH操作(避免与系统22端口冲突)。这些配置既保证数据持久化,又提供灵活的部署选项。
然后使用docker compose up -d
启动镜像。
2.3.3、源码安装
通过源码方式安装gitea其实是最方便的,不过在源码安装前,需要安装一些前提环境,在安装gitea之前,确认已经安装了git且git版本在2.0以上:
然后还需要安装go、npm以及node:
- Go环境安装(版本要求大于1.16,一定要设置GOPATH 环境变量,并将其bin目录添加到$PATH中)
- Node.JS环境安装(版本要求大于等于12.17,用于构建js和css文件,建议安装最新版本)
- 数据库环境安装,建议MySQL
首先,我们需要获取源码:git clone https://github.com/go-gitea/gitea,然后使用make build进行构建,构建完成后使用./gitea web进行启动。这里由于构建过程时间比较长,不展开讨论,后续有需要可以在评论区留言,可以考虑单出一篇。
首次安装 Gitea 后,在浏览器中输入 http://localhost:3000/ 访问初始化页面,按需设置服务器信息。第一个注册的用户账号为管理账号。
💡最后
🎉 支持我:点赞👍+收藏⭐️+留言📝
另外,我们已经建立了🏤采苓研学社群,如果你还有其他疑问,可以私信我加入社群。
📝 加入社群 抱团学习:中杯可乐多加冰-采苓AI研习社