Gitea轻量级的 DevOps 平台软件搭建

技术 · 6 天前 · 25 人浏览

关于Gitea

Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。 Gitea 最初是从 Gogs 分支而来,几乎所有代码都已更改。

目标

Gitea的首要目标是创建一个极易安装,运行非常快速,安装和使用体验良好的自建 Git 服务。

采用Go作为后端语言,只需生成一个可执行程序即可。 支持 Linux, macOS 和 Windows等多平台, 支持主流的x86,amd64、 ARM 和 PowerPC等架构。

Gitea二进制文件安装指南

一、下载与验证二进制文件

(一)选择合适版本

Gitea为不同平台提供了丰富的二进制文件,可从下载页面获取。以Linux系统为例:

  • 64位Intel/AMD平台:选择linux-amd64版本。
  • 树莓派4等ARM64设备:选择arm64版本。
  • 32位系统:可选386arm-5/arm-6版本。

(二)命令行下载(以64位Linux为例)

wget -O gitea https://dl.gitea.com/gitea/1.23.8/gitea-1.23.8-linux-amd64
chmod +x gitea  # 添加执行权限

(三)GPG签名验证

通过GPG校验确保文件未被篡改:

# 导入GPG公钥
gpg --keyserver keys.openpgp.org --recv 7C9E68152594688862D62AF62D9AE806EC1592E2
# 验证签名
gpg --verify gitea-1.23.8-linux-amd64.asc gitea-1.23.8-linux-amd64

校验成功提示Good signature from "Teabot <teabot@gitea.io>"
校验失败处理:检查下载链接或重新获取公钥。

二、环境准备与用户配置

(一)依赖检查

确保已安装Git(版本≥2.0):

git --version

若未安装,需先通过系统包管理器安装(如apt install gityum install git)。

(二)创建专用用户

建议创建名为git的系统用户用于运行Gitea:

# Ubuntu/Debian系统
adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git

# Fedora/RHEL/CentOS系统
groupadd --system git
adduser --system --shell /bin/bash --comment 'Git Version Control' --gid git --home-dir /home/git --create-home git

(三)创建工作目录与权限设置

# 创建目录结构
mkdir -p /var/lib/gitea/{custom,data,log}
# 授权给git用户
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  # 临时允许Web安装程序写入

安装完成后建议权限修正

chmod 750 /etc/gitea
chmod 640 /etc/gitea/app.ini  # 配置文件设为只读

三、配置与启动Gitea

(一)设置工作目录

通过环境变量指定Gitea工作路径:

export GITEA_WORK_DIR=/var/lib/gitea/

若使用Systemd管理服务,可在服务文件中通过WorkingDirectory参数配置。

(二)复制二进制文件

将可执行文件移动到系统路径:

cp gitea /usr/local/bin/gitea

(三)启用自动补全(可选)

  • Bash自动补全

    cp contrib/autocompletion/bash_autocomplete /usr/share/bash-completion/completions/gitea
    # 或在~/.bashrc中引用
    source /path/to/bash_autocomplete
  • Zsh自动补全

    cp contrib/autocompletion/zsh_autocomplete /usr/share/zsh/_gitea
    # 或在~/.zshrc中引用
    source /path/to/zsh_autocomplete

(四)启动方式

1. 命令行临时启动(适用于测试)

GITEA_WORK_DIR=/var/lib/gitea/ /usr/local/bin/gitea web -c /etc/gitea/app.ini

2. Systemd服务启动(推荐)

创建服务文件/etc/systemd/system/gitea.service,内容示例:

[Unit]
Description=Gitea Git Service
After=syslog.target
After=network.target

[Service]
Type=simple
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=/home/git

[Install]
WantedBy=multi-user.target

启用并启动服务:

systemctl enable gitea
systemctl start gitea

四、升级与故障处理

(一)版本升级步骤

  1. 停止当前运行的Gitea服务:

    systemctl stop gitea  # 或kill -1 $PID(优雅停止)
  2. 替换二进制文件(保持文件名gitea不变):

    wget -O /usr/local/bin/gitea https://dl.gitea.com/gitea/最新版本/gitea-最新版本-linux-amd64
    chmod +x /usr/local/bin/gitea
  3. 重启服务:

    systemctl start gitea

(二)常见问题排查

1. 旧版glibc报错

错误提示./gitea: /lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.14' not found
解决方案:从源代码编译安装(不包含SQLite支持)或升级系统glibc版本。

2. 端口被占用

错误提示listen tcp 0.0.0.0:3000: bind: address already in use
解决方法:指定其他端口启动:

gitea web -p 8080  # 替换3000为可用端口

3. 树莓派运行问题(v1.8+版本)

问题描述:arm7版本无法运行
解决方案:改用arm6版本(经测试兼容树莓派)。

4. 更新后Git钩子失效

错误提示remote: ./hooks/pre-receive.d/gitea: line 2: [...] No such file or directory
解决步骤

  1. 进入Gitea管理面板,运行任务Resynchronize pre-receive, update and post-receive hooks of all repositories更新钩子路径。
  2. 若使用自定义SSH服务器,运行Update the '.ssh/authorized_keys' file with Gitea SSH keys重新生成授权文件。

五、安全建议

  1. 配置文件权限:确保/etc/gitea/app.ini仅允许root:git用户组读取(权限640)。
  2. 禁止root运行:始终使用非root用户(如git)运行Gitea,避免权限滥用。
  3. 定期备份:对/var/lib/gitea/data(数据库)和/var/lib/gitea/repositories(仓库)目录进行定期备份。
Gitea