Ubuntu 20.04下Gitea一键安装脚本分享(附常见问题排查)

发布时间:2026/7/28 12:20:38

Ubuntu 20.04下Gitea一键安装脚本分享(附常见问题排查) Ubuntu 20.04下Gitea自动化部署与深度优化指南当团队需要搭建私有代码仓库时Gitea凭借其轻量级和易用性成为许多开发者的首选。本文将分享一个经过实战检验的自动化安装方案涵盖从基础部署到性能调优的全流程特别针对生产环境中可能遇到的各类问题提供解决方案。1. 环境预检与系统优化在开始安装前建议先对Ubuntu系统进行基础优化。以下命令将更新软件源并安装常用工具sudo apt update sudo apt upgrade -y sudo apt install -y curl wget git ufw htop sysstat对于生产环境建议调整内核参数以提升Git操作性能。创建/etc/sysctl.d/10-gitea.conf文件并添加以下内容# 增加文件描述符限制 fs.file-max 65536 # 提高TCP连接复用能力 net.ipv4.tcp_tw_reuse 1执行sudo sysctl -p使配置生效。同时建议设置防火墙规则sudo ufw allow 22/tcp sudo ufw allow 3000/tcp sudo ufw enable2. 全自动安装脚本解析以下脚本整合了用户创建、二进制安装、服务配置等完整流程保存为install_gitea.sh后可直接运行#!/bin/bash # 获取最新版本号 LATEST_VERSION$(curl -s https://api.github.com/repos/go-gitea/gitea/releases/latest | grep -oP tag_name: \K(.*)(?)) # 创建系统用户 sudo adduser --system --shell /bin/bash --gecos Git Version Control \ --group --disabled-password --home /home/git git # 下载并安装二进制文件 sudo wget -O /usr/local/bin/gitea \ https://dl.gitea.io/gitea/${LATEST_VERSION}/gitea-${LATEST_VERSION}-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 # 配置systemd服务 cat EOF | sudo tee /etc/systemd/system/gitea.service /dev/null [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.target EOF # 启用服务 sudo systemctl daemon-reload sudo systemctl enable --now gitea提示脚本执行完成后访问http://服务器IP:3000即可进入初始化配置页面。3. 高级配置与性能调优3.1 数据库优化虽然Gitea支持SQLite但团队规模超过10人时建议使用MySQL。安装MySQL并创建专用数据库sudo apt install -y mysql-server sudo mysql -e CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; sudo mysql -e CREATE USER gitealocalhost IDENTIFIED BY 强密码; sudo mysql -e GRANT ALL PRIVILEGES ON gitea.* TO gitealocalhost;在/etc/gitea/app.ini中配置MySQL连接[database] DB_TYPE mysql HOST 127.0.0.1:3306 NAME gitea USER gitea PASSWD 强密码3.2 邮件服务配置启用邮件通知需添加以下配置[mailer] ENABLED true HOST smtp.example.com:587 FROM noreplyexample.com USER smtp_user PASSWD smtp_password4. 常见问题排查手册4.1 端口冲突处理如果3000端口已被占用可通过以下命令查找占用进程sudo lsof -i :3000 sudo netstat -tulnp | grep 3000修改Gitea监听端口[server] HTTP_PORT 30014.2 权限问题修复当出现文件权限错误时执行以下命令重置权限sudo chown -R git:git /var/lib/gitea sudo chmod -R 750 /var/lib/gitea find /var/lib/gitea -type d -exec chmod 750 {} \; find /var/lib/gitea -type f -exec chmod 640 {} \;4.3 服务启动失败诊断查看服务日志定位问题journalctl -u gitea -f --since 1 hour ago常见错误及解决方案错误现象可能原因解决方法502 Bad Gateway内存不足增加swap空间或升级服务器仓库克隆失败SSH配置错误检查/home/git/.ssh/authorized_keys页面加载慢未启用Gzip在app.ini中启用[server] ENABLE_GZIP true5. 生产环境最佳实践定期备份创建自动化备份脚本# 备份数据库 mysqldump -u gitea -p gitea /backup/gitea_db_$(date %F).sql # 备份数据目录 tar -czvf /backup/gitea_data_$(date %F).tar.gz /var/lib/gitea启用HTTPS使用Nginx反向代理并配置Lets Encrypt证书server { listen 443 ssl; server_name git.example.com; ssl_certificate /etc/letsencrypt/live/git.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/git.example.com/privkey.pem; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; } }性能监控安装Prometheus exporter[metrics] ENABLED true TOKEN 监控令牌实际部署中发现为Gitea配置单独的MySQL实例能显著提升大仓库的访问速度。同时建议将/var/lib/gitea挂载到SSD磁盘分区这对处理大量并发克隆操作有明显改善。

相关新闻