You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fedora 27环境下Gerrit 2.14.7启动失败:无日志、端口未监听

解决Gerrit启动后进程存在但端口无监听、脚本超时的问题

针对你在Fedora 27 + OpenJDK 1.8.0 + Gerrit 2.14.7环境下遇到的问题——启动gerrit_testsite/bin/gerrit.sh start失败、日志为空、进程存在但8080端口无监听、加-x发现脚本等待gerrit.r相关文件超时,我整理了几个实用的排查和解决步骤:

1. 直接查看Gerrit原生日志,别只依赖脚本日志

脚本的日志捕获经常不全,你可以直接去Gerrit站点的logs目录找真实的启动日志:

# 列出日志文件
ls -l /home/gerrit2/gerrit_testsite/logs/
# 实时查看错误日志
tail -f /home/gerrit2/gerrit_testsite/logs/error_log
# 查看Gerrit主日志
tail -f /home/gerrit2/gerrit_testsite/logs/gerrit_log

这里大概率能找到启动卡住的原因,比如数据库连接失败、文件权限不足、配置项写错了之类的。

2. 检查Gerrit进程的真实状态

虽然进程存在,但可能已经僵死或者卡在某个系统调用上,用下面的命令排查:

# 查看进程的资源占用情况
ps aux | grep GerritCodeReview
# 跟踪进程的系统调用,替换成你的Gerrit PID
strace -p <your-gerrit-pid>

如果strace显示进程一直在等待某个文件、socket或者数据库连接,那问题点就很明确了。

3. 核对Gerrit配置文件的关键项

重点检查etc/gerrit.config里的两个核心配置:

  • HTTP监听配置:确认[httpd]块下的listenUrl是不是http://*:8080/,别写错端口或者绑定了错误的IP(比如只绑定127.0.0.1,但你以为是对外监听)
  • 数据库配置:如果用H2数据库,检查db目录的权限;如果用MySQL,确认连接地址、用户名密码是否正确
# 查看配置文件内容
cat /home/gerrit2/gerrit_testsite/etc/gerrit.config
# 检查db目录权限
ls -ld /home/gerrit2/gerrit_testsite/db/

4. 手动启动Gerrit,跳过脚本的等待逻辑

gerrit.sh会等待Gerrit生成gerrit.run文件作为启动成功的标志,一旦Gerrit启动卡住就会超时。你可以直接手动执行启动命令,看实时输出:

cd /home/gerrit2/gerrit_testsite/
java -jar bin/gerrit.war daemon -d /home/gerrit2/gerrit_testsite --run-id=1521606266.3474

这样能直接看到启动过程中的报错,比脚本的空日志有用多了。

5. 排查SELinux和权限问题

Fedora默认开启SELinux,很可能阻止Gerrit绑定端口或者访问文件:

# 临时关闭SELinux测试
setenforce 0

如果关闭后Gerrit能正常启动,就需要给Gerrit添加SELinux规则,比如允许它绑定8080端口、访问站点目录。

另外,确保运行Gerrit的用户(比如gerrit2)对整个gerrit_testsite目录有完整的读写权限:

chown -R gerrit2:gerrit2 /home/gerrit2/gerrit_testsite/

6. 验证OpenJDK的兼容性

虽然Gerrit 2.14.7支持OpenJDK 8,但有时候发行版的JDK配置可能有问题:

# 检查Java版本
java -version
# 确认JAVA_HOME指向正确的OpenJDK 8目录
echo $JAVA_HOME

确保JAVA_HOME是/usr/lib/jvm/java-1.8.0-openjdk/这类正确的路径。


内容的提问来源于stack exchange,提问作者berndbausch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:32:40