1 changed files with 227 additions and 0 deletions
@ -0,0 +1,227 @@ |
|||||
|
# Gitea 轻量代码托管平台:适配 Alibaba Cloud Linux 3 的部署指南(root 用户版) |
||||
|
|
||||
|
|
||||
|
Gitea 是一款**轻量级开源代码托管平台**,定位为“自托管的 Git 服务”,兼容 GitHub、GitLab 核心功能但资源占用极低,非常适合你的 2 核 2G 服务器。以下基于你的 Alibaba Cloud Linux 3 系统(root 用户),从核心特性、部署步骤(移除 sudo)、资源占用等方面详细说明: |
||||
|
|
||||
|
|
||||
|
### 一、Gitea 核心特性:轻量但功能完整 |
||||
|
Gitea 基于 Go 语言开发,主打“够用就好”的设计理念,在保留 Git 服务核心功能的同时,大幅降低对服务器资源的需求。核心功能包括: |
||||
|
|
||||
|
#### 1. 代码托管与版本控制 |
||||
|
- 完全兼容 Git 协议(支持 HTTP/HTTPS、SSH 访问),可直接使用 `git clone/push/pull` 等命令; |
||||
|
- 支持分支管理(保护分支、合并规则)、标签管理、Commit 历史查看与对比; |
||||
|
- 内置代码浏览(语法高亮)、文件历史追踪、差异对比(如 line-by-line 代码变更)。 |
||||
|
|
||||
|
#### 2. 协作工具(类 GitHub 体验) |
||||
|
- **Issues 系统**:创建任务、bug 报告、需求讨论,支持标签、里程碑、负责人指派; |
||||
|
- **Pull Requests(PR)**:多人协作时通过 PR 提交代码变更,支持评论、审核、三种合并方式(squash/rebase/merge); |
||||
|
- **Wiki 文档**:每个仓库可关联 Wiki,支持 Markdown 编写项目说明、使用文档; |
||||
|
- **里程碑与项目看板**:可视化管理任务进度,适合小型项目规划。 |
||||
|
|
||||
|
#### 3. 用户与权限管理 |
||||
|
- 支持多用户、多组织(Organization),按“组织→团队→仓库”层级分配权限; |
||||
|
- 细粒度权限控制:从“只读”“可写”到“管理员”,甚至可针对特定分支设置权限(如仅允许管理员合并); |
||||
|
- 支持 LDAP 集成(企业场景)、第三方登录(GitHub、Google、微信等,需自行配置)。 |
||||
|
|
||||
|
#### 4. 轻量扩展能力 |
||||
|
- **WebHook 与服务集成**:代码推送后可触发外部服务(如自动部署、测试脚本); |
||||
|
- **CI/CD 支持**:集成 Gitea Actions(类 GitHub Actions)或外部 CI 工具(如 Drone); |
||||
|
- **API 接口**:完整的 RESTful API,可通过脚本批量操作仓库、用户等。 |
||||
|
|
||||
|
|
||||
|
### 二、为什么适合你的服务器配置? |
||||
|
你的服务器是 2 核 2G 内存、40G 存储、3M 带宽,Gitea 对资源的友好性使其成为绝佳选择: |
||||
|
- **内存占用**:启动后稳定占用 300-400MB 内存(远低于 GitLab 的 2GB+),即使同时运行 10 个仓库、5 个用户操作,内存也不会超过 1GB; |
||||
|
- **CPU 负载**:日常操作(clone、push、浏览代码)CPU 占用 < 10%,仅在批量导入大仓库时短暂升高; |
||||
|
- **存储需求**:自身程序仅占用 ~100MB,主要存储消耗来自代码仓库(40G 足够存放数十个中小型项目); |
||||
|
- **带宽需求**:3M 带宽(约 300KB/s)完全满足个人/小团队使用,文本类代码(如 Python/Java 项目)传输极快。 |
||||
|
|
||||
|
|
||||
|
### 三、部署步骤:Docker 一键部署(适配 Alibaba Cloud Linux 3,root 用户) |
||||
|
Alibaba Cloud Linux 3 基于 OpenAnolis 发行版,兼容 RHEL/CentOS 8 生态(包管理工具为 `dnf`),作为 root 用户无需使用 `sudo`,以下是适配后的部署步骤: |
||||
|
|
||||
|
#### 1. 前提:安装 Docker(root 用户无 sudo 版) |
||||
|
```bash |
||||
|
# 更新系统包(root 用户直接执行,无需 sudo) |
||||
|
dnf update -y && dnf upgrade -y |
||||
|
|
||||
|
# 安装 Docker 依赖(root 用户直接执行) |
||||
|
dnf install -y yum-utils device-mapper-persistent-data lvm2 |
||||
|
|
||||
|
# 添加 Docker 官方源(兼容 CentOS 仓库,root 用户直接执行) |
||||
|
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo |
||||
|
|
||||
|
# 安装 Docker 引擎(root 用户直接执行) |
||||
|
dnf install -y docker-ce docker-ce-cli containerd.io |
||||
|
|
||||
|
# 启动 Docker 并设置开机自启(root 用户直接执行) |
||||
|
systemctl start docker && systemctl enable docker |
||||
|
|
||||
|
# 允许当前用户(root)操作 Docker(root 已默认有权限,可省略,保留仅作兼容) |
||||
|
usermod -aG docker $USER && newgrp docker |
||||
|
``` |
||||
|
|
||||
|
|
||||
|
#### 2. 部署 Gitea 容器(与系统无关,通用命令) |
||||
|
创建数据目录(用于持久化存储代码、配置、数据库),然后启动容器: |
||||
|
```bash |
||||
|
# 创建数据目录(root 用户直接执行,权限自动适配) |
||||
|
mkdir -p /opt/gitea/{data,config,log} |
||||
|
chmod -R 777 /opt/gitea # 简化权限,生产环境可按需调整(如设置为 755) |
||||
|
|
||||
|
# 下载镜像 |
||||
|
# 1. 创建/修改 Docker 配置文件 |
||||
|
mkdir -p /etc/docker |
||||
|
tee /etc/docker/daemon.json <<-'EOF' |
||||
|
{ |
||||
|
"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"] |
||||
|
} |
||||
|
EOF |
||||
|
|
||||
|
# 2. 重启 Docker 服务使配置生效 |
||||
|
systemctl daemon-reload |
||||
|
systemctl restart docker |
||||
|
|
||||
|
# 3. 重新拉取镜像 |
||||
|
docker pull gitea/gitea:latest |
||||
|
|
||||
|
|
||||
|
# 启动 Gitea 容器(映射端口、挂载数据卷,root 用户直接执行) |
||||
|
docker run -d \ |
||||
|
--name gitea \ |
||||
|
--restart always \ # 服务器重启后自动启动 |
||||
|
-p 3000:3000 \ # Web 访问端口(服务器3000 → 容器3000) |
||||
|
-p 222:22 \ # SSH 访问端口(服务器222 → 容器22,避免与服务器默认22端口冲突) |
||||
|
-v /opt/gitea/data:/data \ # 存储代码、数据库等核心数据 |
||||
|
-v /opt/gitea/config:/etc/gitea \ # 配置文件 |
||||
|
-v /opt/gitea/log:/var/log/gitea \ # 日志 |
||||
|
-v /etc/timezone:/etc/timezone:ro \ # 同步时区 |
||||
|
-v /etc/localtime:/etc/localtime:ro \ |
||||
|
gitea/gitea:latest |
||||
|
``` |
||||
|
|
||||
|
# 可以直接运行的命令 |
||||
|
docker run -d \ |
||||
|
--name gitea \ |
||||
|
--restart always \ |
||||
|
-p 3000:3000 \ |
||||
|
-p 222:22 \ |
||||
|
-v /opt/gitea/data:/data \ |
||||
|
-v /opt/gitea/config:/etc/gitea \ |
||||
|
-v /opt/gitea/log:/var/log/gitea \ |
||||
|
-v /etc/timezone:/etc/timezone:ro \ |
||||
|
-v /etc/localtime:/etc/localtime:ro \ |
||||
|
gitea/gitea:latest |
||||
|
|
||||
|
|
||||
|
#### 3. 初始化配置(首次访问) |
||||
|
1. 浏览器访问 `http://你的服务器IP:3000`,进入初始化页面; |
||||
|
2. **数据库设置**:默认使用 SQLite(轻量,无需额外安装数据库,适合个人使用),直接保持默认; |
||||
|
3. **应用基本设置**: |
||||
|
- 站点名称:自定义(如“我的代码仓库”); |
||||
|
- SSH 服务器域名:填写你的服务器 IP 或域名; |
||||
|
- SSH 端口:填写映射的 222(与容器启动时的 `-p 222:22` 对应); |
||||
|
- HTTP 端口:3000(保持默认); |
||||
|
- 基础 URL:`http://你的服务器IP:3000`(如果有域名,可填 `http://域名:3000`); |
||||
|
4. **管理员账号设置**:创建第一个管理员用户(用户名、密码、邮箱); |
||||
|
5. 点击“安装 Gitea”,等待 1-2 分钟完成初始化,自动跳转至登录页。 |
||||
|
|
||||
|
|
||||
|
#### 4. 验证部署成功 |
||||
|
- 登录管理员账号后,点击“+”号 → “新建仓库”,创建一个测试仓库(如 `test-repo`); |
||||
|
- 本地电脑执行 `git clone http://你的服务器IP:3000/用户名/test-repo.git`,若能成功克隆,说明部署正常; |
||||
|
- 尝试推送一个文件(如 `README.md`),验证 `git push` 功能: |
||||
|
```bash |
||||
|
echo "# 测试仓库" > README.md |
||||
|
git add README.md |
||||
|
git commit -m "first commit" |
||||
|
git push origin main |
||||
|
``` |
||||
|
|
||||
|
|
||||
|
### 四、进阶配置:提升使用体验 |
||||
|
#### 1. 绑定域名与 HTTPS(可选) |
||||
|
如果有域名,可通过 Nginx 反向代理将域名映射到 Gitea,并配置 HTTPS(推荐 Let's Encrypt 免费证书): |
||||
|
- 安装 Nginx(root 用户无 sudo 版): |
||||
|
```bash |
||||
|
dnf install -y nginx # root 用户直接执行 |
||||
|
systemctl start nginx && systemctl enable nginx |
||||
|
``` |
||||
|
- Nginx 配置示例(`/etc/nginx/conf.d/gitea.conf`,Alibaba Cloud Linux 3 配置文件路径与 CentOS 一致): |
||||
|
```nginx |
||||
|
server { |
||||
|
listen 80; |
||||
|
server_name git.yourdomain.com; # 你的域名 |
||||
|
return 301 https://$host$request_uri; # 强制 HTTPS |
||||
|
} |
||||
|
|
||||
|
server { |
||||
|
listen 443 ssl; |
||||
|
server_name git.yourdomain.com; |
||||
|
|
||||
|
# SSL 证书(替换为你的证书路径) |
||||
|
ssl_certificate /etc/letsencrypt/live/git.yourdomain.com/fullchain.pem; |
||||
|
ssl_certificate_key /etc/letsencrypt/live/git.yourdomain.com/privkey.pem; |
||||
|
|
||||
|
# 反向代理到 Gitea |
||||
|
location / { |
||||
|
proxy_pass http://127.0.0.1:3000; |
||||
|
proxy_set_header Host $host; |
||||
|
proxy_set_header X-Real-IP $remote_addr; |
||||
|
} |
||||
|
} |
||||
|
``` |
||||
|
- 配置后重启 Nginx:`systemctl restart nginx`,即可通过 `https://git.yourdomain.com` 访问。 |
||||
|
|
||||
|
|
||||
|
#### 2. 启用 Gitea Actions(自动化) |
||||
|
Gitea 1.19+ 支持内置 Actions(类 GitHub Actions),可实现代码推送后自动测试、部署: |
||||
|
1. 登录 Gitea 管理员账号 → 进入“站点管理” → “设置” → “Actions”; |
||||
|
2. 勾选“启用 Actions”,设置工作目录(如 `/opt/gitea/actions`); |
||||
|
3. 在仓库根目录创建 `.gitea/workflows/test.yml`,编写简单的自动化脚本(如 Python 代码测试): |
||||
|
```yaml |
||||
|
name: Test |
||||
|
on: [push] |
||||
|
jobs: |
||||
|
test: |
||||
|
runs-on: ubuntu-latest |
||||
|
steps: |
||||
|
- uses: actions/checkout@v3 |
||||
|
- name: Set up Python |
||||
|
uses: actions/setup-python@v4 |
||||
|
with: |
||||
|
python-version: '3.9' |
||||
|
- name: Install dependencies |
||||
|
run: pip install -r requirements.txt |
||||
|
- name: Run tests |
||||
|
run: pytest |
||||
|
``` |
||||
|
|
||||
|
|
||||
|
### 五、使用场景与优势总结 |
||||
|
#### 适合的场景: |
||||
|
- **个人代码管理**:替代 GitHub 私有仓库(无需付费),存放个人项目、学习笔记代码; |
||||
|
- **小团队协作**:3-5 人团队开发项目,用 Issues 分配任务,用 PR 审核代码; |
||||
|
- **学习 Git 与 CI/CD**:通过搭建 Gitea 实践 Git 命令、分支管理、自动化部署等技能; |
||||
|
- **私有文档仓库**:用 Wiki 功能存储技术文档、配置手册,支持 Markdown 格式和版本控制。 |
||||
|
|
||||
|
#### 相比其他工具的优势: |
||||
|
- **轻量高效**:2 核 2G 服务器轻松运行,资源占用仅为 GitLab 的 1/5; |
||||
|
- **部署简单**:Docker 一键启动,无需复杂依赖(如 GitLab 需要 PostgreSQL、Redis 等); |
||||
|
- **功能够用**:覆盖 90% 个人/小团队需求,无冗余功能; |
||||
|
- **完全开源**:免费使用,可自定义代码(如需特殊功能)。 |
||||
|
|
||||
|
|
||||
|
### 六、注意事项 |
||||
|
1. **数据备份**:定期备份 `/opt/gitea/data` 目录(包含所有代码和配置),避免服务器故障导致数据丢失; |
||||
|
2. **安全加固**: |
||||
|
- 禁用服务器默认 SSH 端口(22),仅开放必要端口(如 80、443、222); |
||||
|
- 为 Gitea 用户设置强密码,避免使用弱密码; |
||||
|
- 定期更新 Gitea 容器(`docker pull gitea/gitea:latest` 后重启容器); |
||||
|
3. **资源监控**:用 `docker stats` 查看 Gitea 资源占用,若内存不足,可创建 swap 分区(root 用户命令): |
||||
|
```bash |
||||
|
dd if=/dev/zero of=/swapfile bs=1G count=2 && mkswap /swapfile && swapon /swapfile |
||||
|
``` |
||||
|
|
||||
|
|
||||
|
总之,作为 root 用户,你可以直接执行所有命令部署 Gitea,无需额外的 `sudo` 权限。Gitea 与你的 2 核 2G 服务器、Alibaba Cloud Linux 3 系统完美适配,能为你提供一个自主可控的“私人 GitHub”,满足个人或小团队的代码管理需求。 |
||||
Loading…
Reference in new issue