# Gerrit 服务无法访问 - 解决方案 ## 问题现象 访问 `http://101.43.95.130:8080` 时显示"连接失败"。 ## 可能的原因 1. **服务未启动** 2. **服务启动失败** 3. **端口被占用** 4. **防火墙阻止** ## 解决步骤 ### 步骤 1:检查服务状态 ```bash cd /home/renjianbo/gerrit_install/review_site bin/gerrit.sh status ``` ### 步骤 2:如果服务未运行,启动服务 ```bash cd /home/renjianbo/gerrit_install/review_site # 设置 Java 环境 export JAVA_HOME=/usr/local/java/jdk-17.0.12+7 export PATH=$JAVA_HOME/bin:$PATH # 启动服务 bin/gerrit.sh start # 等待几秒后检查状态 sleep 5 bin/gerrit.sh status ``` ### 步骤 3:如果 review_site 目录不存在 说明需要重新初始化: ```bash cd /home/renjianbo/gerrit chmod +x reinit_gerrit.sh ./reinit_gerrit.sh ``` 或者手动执行: ```bash cd /home/renjianbo/gerrit_install export JAVA_HOME=/usr/local/java/jdk-17.0.12+7 export PATH=$JAVA_HOME/bin:$PATH java -jar gerrit-3.9.0.war init \ -d review_site \ --batch \ --no-auto-start \ -D gerrit.canonicalWebUrl=http://101.43.95.130:8080/ \ --install-plugin=download-commands \ --install-plugin=replication \ --install-plugin=reviewnotes # 配置启动脚本 cd review_site cp bin/gerrit.sh bin/gerrit.sh.bak sed -i "2i export JAVA_HOME=/usr/local/java/jdk-17.0.12+7\nexport PATH=\$JAVA_HOME/bin:\$PATH" bin/gerrit.sh # 启动服务 bin/gerrit.sh start ``` ### 步骤 4:检查日志 如果服务启动失败,查看错误日志: ```bash cd /home/renjianbo/gerrit_install/review_site tail -50 logs/error_log ``` ### 步骤 5:检查端口 ```bash # 检查端口是否被监听 netstat -tlnp | grep 8080 # 或 ss -tlnp | grep 8080 # 检查是否有其他进程占用端口 lsof -i :8080 ``` ### 步骤 6:检查防火墙 ```bash # CentOS 7 sudo firewall-cmd --list-ports sudo firewall-cmd --add-port=8080/tcp --permanent sudo firewall-cmd --reload # 或者临时关闭防火墙测试 sudo systemctl stop firewalld ``` ## 快速诊断脚本 已创建诊断脚本,执行: ```bash cd /home/renjianbo/gerrit chmod +x 检查并启动服务.sh ./检查并启动服务.sh ``` 这个脚本会自动: 1. 检查 review_site 是否存在 2. 检查服务状态 3. 如果未运行,自动启动 4. 显示访问地址 ## 常见问题 ### Q: 服务启动失败,日志显示什么? **A:** 查看日志: ```bash tail -50 /home/renjianbo/gerrit_install/review_site/logs/error_log ``` 常见错误: - Java 版本不匹配 → 确保使用 Java 17 - 端口被占用 → 检查是否有其他服务占用 8080 - 权限问题 → 确保有读写权限 ### Q: 端口 8080 被占用怎么办? **A:** 可以修改端口: 编辑 `review_site/etc/gerrit.config`: ``` [httpd] listenUrl = http://*:8081/ ``` 然后重启服务。 ### Q: 防火墙阻止访问? **A:** 开放端口或临时关闭防火墙测试: ```bash sudo firewall-cmd --add-port=8080/tcp --permanent sudo firewall-cmd --reload ``` ## 验证服务运行 服务启动成功后: 1. **检查进程**: ```bash ps aux | grep gerrit ``` 2. **检查端口**: ```bash netstat -tlnp | grep 8080 ``` 3. **访问 Web 界面**: - 打开浏览器 - 访问:`http://101.43.95.130:8080` - 应该能看到 Gerrit 登录页面 ## 如果还是无法访问 请提供以下信息: 1. `bin/gerrit.sh status` 的输出 2. `tail -50 logs/error_log` 的最后几行 3. `netstat -tlnp | grep 8080` 的输出 我可以帮您进一步排查。