关于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位系统:可选
386
或arm-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 git
或yum 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
四、升级与故障处理
(一)版本升级步骤
停止当前运行的Gitea服务:
systemctl stop gitea # 或kill -1 $PID(优雅停止)
替换二进制文件(保持文件名
gitea
不变):wget -O /usr/local/bin/gitea https://dl.gitea.com/gitea/最新版本/gitea-最新版本-linux-amd64 chmod +x /usr/local/bin/gitea
重启服务:
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
解决步骤:
- 进入Gitea管理面板,运行任务
Resynchronize pre-receive, update and post-receive hooks of all repositories
更新钩子路径。 - 若使用自定义SSH服务器,运行
Update the '.ssh/authorized_keys' file with Gitea SSH keys
重新生成授权文件。
五、安全建议
- 配置文件权限:确保
/etc/gitea/app.ini
仅允许root:git
用户组读取(权限640
)。 - 禁止root运行:始终使用非root用户(如
git
)运行Gitea,避免权限滥用。 - 定期备份:对
/var/lib/gitea/data
(数据库)和/var/lib/gitea/repositories
(仓库)目录进行定期备份。