不能直接在xampp环境下部署dolphinscheduler,因其基于java且依赖jdk、zookeeper、独立数据库及多进程服务,与xampp的apache+php栈完全不兼容;共存需端口隔离、复用mysql并手动建库、独立用户启动。

不能直接在 XAMPP 环境下部署 DolphinScheduler。XAMPP 是 Apache + MySQL + PHP + Perl 的集成包,而 DolphinScheduler 是基于 Java 的分布式工作流调度系统,两者运行栈完全不同,强行“塞进” XAMPP 不仅无效,还会引发端口、权限、JVM、服务生命周期等一连串冲突。
为什么不能把 DolphinScheduler 当成 XAMPP 的一个“模块”跑
DolphinScheduler 启动依赖:JDK 1.8+、ZooKeeper、独立的数据库(MySQL/PostgreSQL)、psmisc 工具,且必须以 Linux 用户身份(带 sudo 免密)启动多个 Java 进程(master-server、worker-server、api-server 等)。XAMPP 的 apache 进程是 C 写的、单线程/多进程模型;DolphinScheduler 是多 JVM 进程、强依赖注册中心和元数据一致性——二者没有共享配置层或统一控制面。
常见误操作包括:
XAMPP 8.0.30 是一款免费、开源的跨平台 Web 服务器集成包,专为快速搭建本地 PHP 开发环境而设计。该版本核心组件包括:Apache 2.4.56、MySQL 8.0.33、PHP 8.0.30、phpMyAdmin 5.2.1 等。它支持 Windows、Linux 和 macOS 系统,可让开发者在个人电脑上轻松模拟服务器环境,无需复杂配置即可运行 WordPress、Thin
- 试图把
dolphinscheduler-bin放进htdocs目录,期望通过浏览器访问 —— 浏览器只能请求静态资源或 PHP 脚本,无法执行 Java 后端服务 - 修改
httpd.conf的Listen端口去“让出” 12345(DolphinScheduler 默认 API 端口)—— Apache 不会转发或代理到 Java 进程,除非你额外配反向代理(但那已脱离 XAMPP 原生能力) - 以为只要启动了 XAMPP 的 MySQL 就能直接给 DolphinScheduler 用 —— 可以复用,但必须手动初始化库表(
script/create-dolphinscheduler.sql),且需确认 MySQL 用户有CREATE/ALTER权限,XAMPP 自带的root(空密码)默认不允许远程连接,而 DolphinScheduler 的api-server会尝试本地 socket 或 TCP 连接,容易报Access denied
共存的前提:端口与用户隔离
如果你已在 Windows 上装了 XAMPP,并想在同一台机器跑 DolphinScheduler(比如开发调试),关键不是“整合”,而是“不打架”。重点检查以下三项:
-
Apache占用80、443、8080?DolphinScheduler 的api-server默认用12345,master用5678,worker用1234—— 只要这些端口没被 XAMPP 或其他程序占用,就安全 - XAMPP 的 MySQL 默认端口是
3306,DolphinScheduler 配置文件conf/datasource.properties中的spring.datasource.url=jdbc:mysql://127.0.0.1:3306/dolphinscheduler?...可直接复用,但必须确保该 MySQL 实例允许localhost连接(检查my.ini中bind-address=127.0.0.1,而非0.0.0.0或注释掉) - DolphinScheduler 必须用独立用户启动(如
dolphinscheduler),不能用Administrator或 XAMPP 安装时的当前用户直接运行 —— 否则sudo -u xxx切换租户任务会失败,日志里出现sudo: no tty present
Windows 下最小可行共存步骤
跳过所有“把 DolphinScheduler 塞进 XAMPP”的想法,按原生方式部署,只利用 XAMPP 已有的 MySQL:
- 下载
apache-dolphinscheduler-3.1.3-bin.tar.gz,解压到非中文路径,如D:\dolphinscheduler - 编辑
conf/datasource.properties,填入 XAMPP 的 MySQL 连接信息:spring.datasource.username=root、spring.datasource.password=(XAMPP 默认空密码),并确认url指向127.0.0.1:3306 - 运行
script/create-dolphinscheduler.sql手动建库建表(用 phpMyAdmin 或命令行 mysql.exe 执行) - 确保
conf/zoo.cfg指向本地 ZooKeeper(若没装,得单独下载zookeeper-3.8.0,DolphinScheduler 3.1+ 不兼容 3.4.x) - 以管理员身份打开终端,cd 到
D:\dolphinscheduler,执行:bin/install.sh(Windows 下用 Git Bash 或 WSL);若坚持 cmd/powershell,改用bin\install.cmd,但需提前设好JAVA_HOME和PATH - 启动后,访问
http://localhost:12345(不是 XAMPP 的 80 端口!),登录默认账号admin/dolphinscheduler123
真正麻烦的从来不是端口数字本身,而是 DolphinScheduler 对 Linux 用户权限模型的硬依赖 —— Windows 上哪怕开了 WSL2,也得面对 sudo -u 在非 root 用户下能否真实切换 UID 的问题。这点在官方文档里轻描淡写,但实操中 70% 的启动失败都卡在这儿。










