一、Gitea概述
Gitea是一个轻量级的Git服务,使用Go语言编写,易于安装和运行,适合个人和小型团队使用。
1.1 Gitea核心特性
- 轻量级:资源占用少,部署简单
- 跨平台:支持Linux、Windows、macOS
- 功能完整:Issue、Wiki、PR、Webhooks
- 开源免费:MIT许可证
1.2 Gitea与GitLab对比
| 特性 | Gitea | GitLab |
|---|---|---|
| 内存占用 | 约100MB | 约4GB+ |
| 安装复杂度 | 简单 | 复杂 |
| CI/CD | 需集成 | 内置 |
| 适用场景 | 小团队/个人 | 企业级 |
二、Gitea安装部署
2.1 二进制安装
# 下载Gitea
wget https://dl.gitea.com/gitea/1.21.4/gitea-1.21.4-linux-amd64
# 重命名并设置权限
mv gitea-1.21.4-linux-amd64 /usr/local/bin/gitea
chmod +x /usr/local/bin/gitea
# 创建用户
useradd -r -s /bin/false git
# 创建目录
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
# 创建systemd服务
cat > /etc/systemd/system/gitea.service << 'EOF'
[Unit]
Description=Gitea (Git with a cup of tea)
After=network.target
[Service]
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web -c /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/var/lib/gitea GITEA_WORK_DIR=/var/lib/gitea
[Install]
WantedBy=multi-user.target
EOF
# 启动服务
systemctl daemon-reload
systemctl start gitea
systemctl enable gitea
# 查看状态
systemctl status gitea
# 输出示例
● gitea.service - Gitea (Git with a cup of tea)
Loaded: loaded (/etc/systemd/system/gitea.service; enabled)
Active: active (running) since Mon 2024-01-15 10:00:00 CST
Main PID: 12345 (gitea)
● gitea.service - Gitea (Git with a cup of tea)
Loaded: loaded (/etc/systemd/system/gitea.service; enabled)
Active: active (running) since Mon 2024-01-15 10:00:00 CST
Main PID: 12345 (gitea)
2.2 Docker安装
# 创建目录
mkdir -p /var/lib/gitea/data /var/lib/gitea/config
# 启动Gitea容器
docker run -d \
--name gitea \
-p 10022:22 \
-p 3000:3000 \
-v /var/lib/gitea/data:/data \
-v /var/lib/gitea/config:/etc/gitea \
-e GITEA__server__ROOT_URL=http://gitea.fgedu.net.cn \
-e GITEA__server__HTTP_PORT=3000 \
--restart always \
gitea/gitea:latest
# 查看日志
docker logs -f gitea
# 访问Web界面
# http://fgedudb:3000
2.3 Docker Compose安装
# docker-compose.yml
version: "3"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:latest
container_name: gitea
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=mysql
- GITEA__database__HOST=db:3306
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:22"
depends_on:
- db
db:
image: mysql:8.0
container_name: gitea-mysql
restart: always
environment:
- MYSQL_ROOT_PASSWORD=gitea
- MYSQL_USER=gitea
- MYSQL_PASSWORD=gitea
- MYSQL_DATABASE=gitea
networks:
- gitea
volumes:
- ./mysql:/var/lib/mysql
# 启动
docker-compose up -d
三、配置文件
3.1 主配置文件
# /etc/gitea/app.ini
[server]
APP_DATA_PATH = /var/lib/gitea/data
DOMAIN = gitea.fgedu.net.cn
HTTP_PORT = 3000
ROOT_URL = http://gitea.fgedu.net.cn
DISABLE_SSH = false
SSH_PORT = 22
START_SSH_SERVER = false
LFS_START_SERVER = true
[database]
DB_TYPE = sqlite3
PATH = /var/lib/gitea/data/gitea.db
# MySQL配置
# DB_TYPE = mysql
# HOST = 127.0.0.1:3306
# NAME = gitea
# USER = gitea
# PASSWD = password
[repository]
ROOT = /var/lib/gitea/data/gitea-repositories
[security]
INSTALL_LOCK = true
SECRET_KEY = your-secret-key
INTERNAL_TOKEN = your-internal-token
[service]
DISABLE_REGISTRATION = false
REQUIRE_SIGNIN_VIEW = false
ENABLE_NOTIFY_MAIL = true
[mailer]
ENABLED = true
HOST = smtp.fgedu.net.cn:587
FROM = gitea@fgedu.net.cn
USER = gitea@fgedu.net.cn
PASSWD = password
[session]
PROVIDER = file
PROVIDER_CONFIG = data/sessions
[log]
MODE = file
LEVEL = Info
ROOT_PATH = /var/lib/gitea/log
3.2 LDAP配置
# Web UI配置LDAP
# 1. 登录管理员账户
# 2. 进入"站点管理" -> "认证源"
# 3. 添加"LDAP"
# LDAP配置示例
认证类型: LDAP (via BindDN)
认证名称: Company LDAP
主机: ldap.fgedu.net.cn
端口: 389
安全协议: StartTLS
绑定DN: CN=gitea,OU=Service,DC=example,DC=com
绑定密码: password
用户搜索基准: DC=example,DC=com
用户过滤规则: (sAMAccountName=%s)
属性fgedu: sAMAccountName
属性姓名: displayName
属性邮箱: mail
四、用户与组织管理
4.1 用户管理
# Web UI创建用户
# 1. 登录管理员账户
# 2. 进入"站点管理" -> "用户账户"
# 3. 点击"创建新账户"
# 使用命令行创建用户
gitea admin user create \
--username zhangsan \
--email zhangsan@fgedu.net.cn \
--password password123 \
--must-change-password=false
# 创建管理员
gitea admin user create \
--username admin \
--email admin@fgedu.net.cn \
--password admin123 \
--admin \
--must-change-password=false
# 修改密码
gitea admin user change-password zhangsan newpassword
# 删除用户
gitea admin user delete zhangsan
# 列出用户
gitea admin user list
4.2 组织管理
# 创建组织
# Web UI: 点击"+" -> "新建组织"
# 组织团队权限
- 所有者: 完全控制
- 管理员: 管理仓库和成员
- 成员: 访问仓库
# 添加成员到组织
# 1. 进入组织设置
# 2. 点击"团队"
# 3. 选择团队添加成员
# 组织仓库
# 组织下的仓库可以被团队成员访问
五、仓库管理
5.1 创建仓库
# Web UI创建仓库
# 1. 点击"+" -> "新建迁移仓库"或"新建仓库"
# 2. 填写仓库名称和描述
# 3. 选择可见性(公开/私有)
# 使用API创建仓库
curl -X POST \
-H "Authorization: token your_token" \
-H "Content-Type: application/json" \
-d '{"name":"my-repo","private":true}' \
http://gitea.fgedu.net.cn/api/v1/user/repos
# 克隆仓库
git clone http://gitea.fgedu.net.cn/username/repo.git
git clone git@gitea.fgedu.net.cn:username/repo.git
# 推送代码
git remote add origin http://gitea.fgedu.net.cn/username/repo.git
git push -u origin main
5.2 仓库设置
# 仓库设置选项
- 基本信息: 名称、描述、网站
- 协作者: 添加协作者和权限
- 分支保护: 设置保护分支
- Webhooks: 配置Webhook通知
- Git钩子: 配置服务端钩子
- 部署密钥: 添加只读访问密钥
# 分支保护设置
# 1. 进入仓库设置
# 2. 点击"分支"
# 3. 添加保护规则
# - 启用推送限制
# - 启用合并限制
# - 启用状态检查
# Webhook配置
# 1. 进入仓库设置
# 2. 点击"Webhooks"
# 3. 添加Webhook
# - 目标URL
# - 触发事件
# - 密钥
六、CI/CD集成
6.1 Gitea Actions
# 启用Gitea Actions
# app.ini
[actions]
ENABLED = true
DEFAULT_ACTIONS_URL = https://github.com
# 创建Runner
# 下载act_runner
wget https://dl.gitea.com/act_runner/0.2.6/act_runner-0.2.6-linux-amd64
chmod +x act_runner-0.2.6-linux-amd64
mv act_runner-0.2.6-linux-amd64 /usr/local/bin/act_runner
# 注册Runner
act_runner register --instance http://gitea.fgedu.net.cn --token your_token
# 启动Runner
act_runner daemon
# 创建Workflow
# .gitea/workflows/build.yml
name: Build and Test
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.21'
- name: Build
run: go build -v ./...
- name: Test
run: go test -v ./...
6.2 外部CI集成
# Jenkins集成
# 1. 安装Gitea插件
# 2. 配置Gitea服务器
# 3. 创建Webhook触发构建
# Webhook URL
# http://jenkins.fgedu.net.cn/gitea-webhook/
# Drone CI集成
# docker-compose.yml
version: "3"
services:
drone:
image: drone/drone:2
environment:
- DRONE_GITEA_SERVER=http://gitea.fgedu.net.cn
- DRONE_GITEA_CLIENT_ID=your_client_id
- DRONE_GITEA_CLIENT_SECRET=your_client_secret
- DRONE_SERVER_HOST=drone.fgedu.net.cn
- DRONE_SERVER_PROTO=http
ports:
- "80:80"
# Woodpecker CI集成
# 类似Drone配置
七、运维命令
7.1 常用管理命令
# 启动服务
systemctl start gitea
# 停止服务
systemctl stop gitea
# 重启服务
systemctl restart gitea
# 查看状态
systemctl status gitea
# 查看日志
journalctl -u gitea -f
# 备份数据
gitea dump -c /etc/gitea/app.ini
# 恢复数据
# 解压备份文件到相应目录
# 重新生成密钥
gitea generate secret INTERNAL_TOKEN
gitea generate secret SECRET_KEY
gitea generate secret LFS_JWT_SECRET
# 管理用户
gitea admin user list
gitea admin user create --username user --email user@fgedu.net.cn --password pass
gitea admin user delete user
# 管理仓库
gitea admin repo list
gitea admin repo delete user repo
八、最佳实践
| 配置项 | 建议值 | 说明 |
|---|---|---|
| 数据库 | MySQL/PostgreSQL | 生产环境推荐 |
| 备份 | 定期备份 | 数据安全 |
| HTTPS | 启用 | 安全传输 |
| 注册限制 | 禁用或审核 | 安全控制 |
注意事项:
- 定期备份仓库和数据库
- 配置HTTPS加密传输
- 限制用户注册或启用审核
- 监控服务器资源使用
九、总结
Gitea是轻量级的Git服务解决方案。通过本培训文档,您应该掌握了:
更多视频教程www.fgedu.net.cn
- Gitea安装部署方法
- 配置文件详解
- 用户和组织管理
- 仓库管理和设置
- CI/CD集成配置
- 运维管理和最佳实践
IT运维培训文档系列 | 第430篇 | Gitea轻量级代码仓库培训
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
