Solr 9.4.0启动失败及安装服务脚本报错求助
Solr 9.4.0启动失败及安装服务脚本报错求助
看起来你在macOS Sonoma上部署Solr 9.4.0时遇到了两个头疼的问题,我帮你逐个分析解决:
一、bin/solr start -p 8984启动失败的问题
从你贴的日志来看,核心错误是:
java.lang.IllegalStateException: Unable to register module: ${jetty.base}/modules/._gzip.mod
这个._gzip.mod是macOS系统自动生成的隐藏资源分支文件(通常是解压Solr压缩包时,Finder或旧解压工具创建的),Jetty误把它当成了合法的Jetty模块文件去读取,结果因为文件编码问题抛出了错误。
解决步骤:
- 先停止可能残留的Solr进程(如果有的话):
bin/solr stop -p 8984 - 定位到Solr目录下的
server/modules文件夹,删除所有以._开头的隐藏文件(比如._gzip.mod);或者用终端命令批量删除(替换成你的Solr实际安装路径):find /你的solr安装路径/solr-9.4.0/server/modules -name "._*" -delete - 重新启动Solr:
bin/solr start -p 8984
二、install_solr_service.sh脚本运行报错的问题
你遇到的${distro_string,,}: bad substitution错误,是因为这个脚本是专门为Linux发行版设计的,macOS自带的Bash版本(3.2.x)不支持${var,,}这种把变量转小写的语法(这是Bash 4.0+才有的特性),所以这个脚本在macOS上没法直接用。
替代方案:手动配置macOS系统服务(用launchd)
macOS用launchd管理系统服务,你可以通过创建plist配置文件来实现Solr开机自启:
- 新建一个plist文件,比如命名为
org.apache.solr.plist,内容如下(记得替换所有路径为你的Solr实际安装路径):<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>org.apache.solr</string> <key>ProgramArguments</key> <array> <string>/你的solr安装路径/solr-9.4.0/bin/solr</string> <string>start</string> <string>-p</string> <string>8984</string> <string>-s</string> <string>/你的solr安装路径/solr-9.4.0/server/solr</string> </array> <key>WorkingDirectory</key> <string>/你的solr安装路径/solr-9.4.0</string> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <true/> <key>StandardOutPath</key> <string>/你的solr安装路径/solr-9.4.0/server/logs/solr-launchd-out.log</string> <key>StandardErrorPath</key> <string>/你的solr安装路径/solr-9.4.0/server/logs/solr-launchd-err.log</string> </dict> </plist> - 把这个文件放到对应的目录:
- 如果要给当前用户配置,放到
~/Library/LaunchAgents/ - 如果要给全系统配置,放到
/Library/LaunchDaemons/(需要sudo权限)
- 如果要给当前用户配置,放到
- 加载并启动服务:
# 用户级服务 launchctl load ~/Library/LaunchAgents/org.apache.solr.plist launchctl start org.apache.solr # 系统级服务(需要sudo) sudo launchctl load /Library/LaunchDaemons/org.apache.solr.plist sudo launchctl start org.apache.solr - 停止或卸载服务:
# 停止 launchctl stop org.apache.solr # 卸载(开机不再自启) launchctl unload ~/Library/LaunchAgents/org.apache.solr.plist
备注:内容来源于stack exchange,提问作者kloop
相关产品推荐
相关产品推荐

