From b04cb4d99ae7872e31b3188f974e330eba85e327 Mon Sep 17 00:00:00 2001 From: gaorui Date: Tue, 18 Nov 2025 15:31:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=88=9B=E5=BB=BAgitea?= =?UTF-8?q?=E7=9A=84=E6=AD=A5=E9=AA=A4.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 创建gitea的步骤.txt | 227 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 227 insertions(+) create mode 100644 创建gitea的步骤.txt diff --git a/创建gitea的步骤.txt b/创建gitea的步骤.txt new file mode 100644 index 0000000..ea06b37 --- /dev/null +++ b/创建gitea的步骤.txt @@ -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”,满足个人或小团队的代码管理需求。 \ No newline at end of file