1. Gitea是什么为什么选择它如果你正在寻找一个轻量级、自托管的Git服务管理平台Gitea绝对值得考虑。作为一个用Go语言编写的开源项目Gitea提供了类似GitHub的核心功能但资源占用更少部署也更简单。我去年在团队内部部署过GitLab对比下来Gitea的内存占用只有前者的1/5左右特别适合个人开发者或小型团队使用。Gitea最吸引我的几个特点安装简单一个二进制文件就能运行不需要复杂的依赖配置灵活支持SQLite、MySQL等多种数据库后端功能全面代码托管、问题追踪、Pull Request等GitHub常用功能一应俱全社区活跃作为开源项目更新迭代速度很快2. 安装前的准备工作2.1 系统环境检查在开始安装前建议先检查你的Ubuntu系统版本。我在Ubuntu 20.04和22.04上都成功部署过以下是推荐的系统要求Ubuntu 18.04或更高版本至少1GB内存实测512MB也能运行10GB以上磁盘空间开放3000端口默认访问端口首先更新系统软件包sudo apt update sudo apt upgrade -y2.2 安装必要依赖Gitea需要一些基础工具支持运行以下命令安装sudo apt install -y curl wget git sqlite3这里特别说明下各个依赖的作用curl/wget用于下载Gitea二进制文件git版本控制核心工具sqlite3如果选择SQLite作为数据库需要这个包3. 安装Gitea详细步骤3.1 创建专用系统用户为安全考虑我们应该创建一个专用用户来运行Gitea服务sudo adduser --system --shell /bin/bash --gecos Git Version Control \ --group --disabled-password --home /home/git git这个命令创建了一个名为git的系统用户没有登录密码更安全主目录设置在/home/git。3.2 下载并安装Gitea首先获取最新版Gitea。截至我写这篇文章时最新稳定版是1.17.3wget -O /usr/local/bin/gitea https://dl.gitea.io/gitea/1.17.3/gitea-1.17.3-linux-amd64下载完成后添加执行权限sudo chmod x /usr/local/bin/gitea然后创建必要的目录结构sudo mkdir -p /var/lib/gitea/{custom,data,log} sudo chown -R git:git /var/lib/gitea sudo chmod -R 750 /var/lib/gitea这里创建了三个子目录custom存放自定义配置data数据库和仓库数据log日志文件4. 配置系统服务4.1 创建systemd服务文件为了让Gitea随系统自动启动我们需要创建systemd服务sudo nano /etc/systemd/system/gitea.service粘贴以下内容注意根据你的实际路径调整[Unit] DescriptionGitea Afternetwork.target [Service] RestartSec3s Typesimple Usergit Groupgit WorkingDirectory/var/lib/gitea ExecStart/usr/local/bin/gitea web --config /etc/gitea/app.ini Restartalways EnvironmentUSERgit HOME/home/git GITEA_WORK_DIR/var/lib/gitea [Install] WantedBymulti-user.target4.2 启动并验证服务先重新加载systemd配置sudo systemctl daemon-reload然后启用并启动Gitea服务sudo systemctl enable --now gitea检查服务状态sudo systemctl status gitea如果看到active (running)字样说明服务已正常启动。5. 初始化配置Gitea5.1 通过Web界面配置现在打开浏览器访问http://你的服务器IP:3000你会看到初始化配置页面。重点配置项包括数据库设置SQLite最简单适合小型部署MySQL/PostgreSQL适合生产环境应用常规设置站点标题仓库根目录保持默认/var/lib/gitea/dataSSH服务端口默认22建议改为其他如2222管理员账户 建议在这里设置第一个管理员账号5.2 重要配置文件说明Gitea的主配置文件位于/etc/gitea/app.ini安装完成后建议修改以下几个关键参数[server] DOMAIN yourdomain.com HTTP_PORT 3000 ROOT_URL http://yourdomain.com:3000 [database] DB_TYPE sqlite3 PATH /var/lib/gitea/data/gitea.db [repository] ROOT /var/lib/gitea/data/gitea-repositories6. 日常维护技巧6.1 备份与恢复Gitea提供了方便的备份命令sudo -u git /usr/local/bin/gitea dump -c /etc/gitea/app.ini这会在当前目录生成一个zip备份文件包含所有仓库数据和数据库。恢复备份也很简单unzip backup.zip sudo -u git /usr/local/bin/gitea restore --config/etc/gitea/app.ini --frombackup.zip6.2 升级Gitea版本升级过程非常平滑先备份数据下载新版二进制文件替换旧版文件重启服务具体命令sudo systemctl stop gitea wget -O /usr/local/bin/gitea https://dl.gitea.io/gitea/新版版本号/gitea-新版版本号-linux-amd64 sudo chmod x /usr/local/bin/gitea sudo systemctl start gitea7. 常见问题解决7.1 无法访问3000端口如果无法访问可能是防火墙阻止了端口。Ubuntu默认使用ufw可以这样开放端口sudo ufw allow 3000/tcp sudo ufw enable7.2 服务启动失败检查日志是最快定位问题的方法journalctl -u gitea -b --no-pager常见问题包括权限问题确保/var/lib/gitea属于git用户端口冲突检查3000端口是否被占用数据库连接失败检查app.ini中的数据库配置7.3 邮件服务配置要让Gitea发送通知邮件需要在app.ini中添加[mailer] ENABLED true HOST smtp.yourmail.com:587 FROM no-replyyourdomain.com USER yourmailyourdomain.com PASSWD yourpassword8. 高级配置建议8.1 使用Nginx反向代理生产环境建议用Nginx做反向代理配置示例server { listen 80; server_name git.yourdomain.com; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }然后修改app.ini中的ROOT_URL为你的域名。8.2 启用HTTPS使用Lets Encrypt免费证书sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d git.yourdomain.com这会自动配置Nginx使用HTTPS。8.3 性能调优对于较大规模的部署可以调整这些参数[server] PROTOCOL http DOMAIN git.yourdomain.com HTTP_PORT 3000 ROOT_URL https://git.yourdomain.com ENABLE_GZIP true[数据库] 如果是MySQL可以添加连接池配置[database] MAX_OPEN_CONNS 100 MAX_IDLE_CONNS 10 CONN_MAX_LIFETIME 3m9. 实际使用体验我在团队内部使用Gitea已经半年多了整体体验非常流畅。相比GitLabGitea的资源占用确实低很多在一台2核4G的服务器上就能流畅运行。代码推送、Pull Request等核心功能响应速度很快Web界面也很简洁易用。有几个特别实用的功能仓库镜像可以定期从GitHub等平台同步仓库Web钩子方便集成CI/CD流程LDAP集成对接公司现有的用户系统遇到问题时Gitea的文档和社区都很活跃大部分问题都能快速找到解决方案。