Gitea不能作为XAMPP插件使用,因其是独立Go服务,自带Web服务器、Git操作层和数据库逻辑,与Apache无从属关系;强行集成会导致端口冲突、SSH失败、HTTP认证头丢失等问题。

不能直接把 Gitea 塞进 XAMPP 里运行 —— 它和 Apache/MySQL 是并列关系,不是 XAMPP 的一个模块。
为什么不能把 Gitea 当成 XAMPP 的“插件”用
Gitea 是一个独立的 Go 二进制服务,自带 Web 服务器(默认监听 :3000)、数据库连接逻辑和 Git 操作层。XAMPP 的 Apache 只负责 HTTP 请求转发,不处理 Git 协议或仓库管理。硬塞进去会导致端口冲突、权限混乱、Git SSH 推送失败等连锁问题。
- XAMPP 的
httpd.conf无法接管 Gitea 的/api、/git-http-backend等路径语义 - Gitea 的 SSH 服务(监听
22或自定义端口)与 XAMPP 完全无关,Apache 不参与 SSH 流量 - 若强行用 Apache
ProxyPass反向代理 Gitea,会丢失 Git over HTTP 的认证头(如Authorization: Basic),导致git push报401 Unauthorized
正确共存方式:Gitea 独立运行 + XAMPP 保持原职责
让 Gitea 和 XAMPP 各干各的:XAMPP 继续托管 PHP 项目(比如你的博客、测试页面),Gitea 单独跑在 :3000 提供代码托管界面和 Git API。
- 确保端口不冲突:Gitea 默认用
3000,XAMPP Apache 用80(或你改过的如8080),两者互不抢占 - 数据库可复用但不推荐混用:Gitea 支持 SQLite(开箱即用)、MySQL、PostgreSQL;XAMPP 自带 MySQL,可让 Gitea 连接它,但需单独建库、授权用户(如
CREATE DATABASE gitea; GRANT ALL ON gitea.* TO 'gitea'@'localhost';) - 克隆仓库时路径要分清:Git 项目应克隆到
C:\xampp\htdocs\myproject(供 Apache 访问),而 Gitea 自己的仓库文件默认存在custom/data/gitea-repositories下,别手动挪动
Windows 上启动 Gitea 并关联 XAMPP MySQL
以 Windows 为例,Gitea 二进制(如 gitea-1.25.3-windows-4.0-amd64.exe)需配置连接 XAMPP 的 MySQL 实例。
- 先确认 XAMPP MySQL 正在运行,并记下 root 密码(或新建专用用户)
- 编辑 Gitea 的配置文件
custom/conf/app.ini,修改数据库段落:
[database] DB_TYPE = mysql HOST = 127.0.0.1:3306 NAME = gitea USER = gitea PASSWD = your_password_here SSL_MODE = disable
- 首次运行前手动创建数据库:
mysql -u root -p -e "CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" - 不要勾选 “Use built-in SSH server” 如果你已用 OpenSSH 或 Git for Windows 的 sshd —— Gitea 内置 SSH 会和系统 SSH 冲突
关键避坑点:路径、权限、协议三重隔离
最容易出问题的是把 Gitea 误当成“XAMPP 的 Git 插件”,结果所有操作都绕不开三个隔离原则:
-
路径隔离:Gitea 的
ROOT_URL(如http://localhost:3000)不能设成http://localhost/,否则和 XAMPP 的htdocs根目录混淆,Webhook、Avatar 图片路径全错 -
权限隔离:Gitea 进程不能以
Administrator或SYSTEM身份运行(Windows 下会拒绝写入仓库);应新建普通用户(如giteauser)并用该用户启动服务 -
协议隔离:HTTP 推送走 Gitea 自己的
git http-backend,SSH 推送走 Gitea 内置或系统 SSH —— 别指望 Apache 的mod_cgi或 XAMPP 的任何组件来代理 Git 协议
真正麻烦的从来不是安装,而是混淆了“谁响应请求”“谁读写仓库”“谁验证用户”这三层职责。Gitea 和 XAMPP 必须明确划清边界,才能长期稳定共存。


















