高锐和小阿giao的测试代码存放仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

227 lines
11 KiB

# 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”,满足个人或小团队的代码管理需求。