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

Linux环境下SonarQube进程正常但浏览器无法访问求助

SonarQube进程运行正常但浏览器无法访问的排查与解决

问题背景

已在服务器上安装并配置SonarQube(尝试过8.7.1和9版本),通过systemd创建服务并设置开机自启,终端显示进程正常运行无报错,但使用默认端口在浏览器访问时始终提示连接拒绝。已在sonar.properties中配置PostgreSQL凭证,问题依旧。

已执行操作及状态信息

sonarqube@sonar2020:~/sonarqube-8.3.1.34397$ bin/linux-x86-64/sonar.sh start
Starting SonarQube... Started SonarQube.
sonarqube@sonar2020:~/sonarqube-8.3.1.34397$ bin/linux-x86-64/sonar.sh status
SonarQube is running (12957).
sonarqube@sonar2020:~/sonarqube-8.3.1.34397$ sudo nano /etc/systemd/system/sonar.service
sonarqube@sonar2020:~/sonarqube-8.3.1.34397$ sudo systemctl enable sonar
Created symlink /etc/systemd/system/multi-user.target.wants/sonar.service → /etc/systemd/system/sonar.service.
sonarqube@sonar2020:~/sonarqube-8.3.1.34397$ sudo systemctl start sonar.service
sonarqube@sonar2020:~/sonarqube-8.3.1.34397$ sudo systemctl status sonar.service
● sonar.service - SonarQube service
Loaded: loaded (/etc/systemd/system/sonar.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2022-11-22 09:12:15 UTC; 1s ago
Process: 13574 ExecStop=/home/sonarqube/sonarqube-8.3.1.34397/bin/linux-x86-64/sonar.sh stop (code=exited, status=0/SUCCESS)
Process: 13634 ExecStart=/home/sonarqube/sonarqube-8.3.1.34397/bin/linux-x86-64/sonar.sh start (code=exited, status=0/SUCCESS)
Main PID: 13697 (wrapper)
Tasks: 19 (limit: 4915)
CGroup: /system.slice/sonar.service
├─13697 /home/sonarqube/sonarqube-8.3.1.34397/bin/linux-x86-64/./wrapper /home/sonarqube/sonarqube-8.3.1.34397/bin/linux-x86-64/../../conf/wrapper.conf wrapper.syslog.ident=SonarQube wrapper.pidfile=/home/sonarqube/sonarqube-8.3.1.34397/bin/linux-x86-
└─13702 java -Dsonar.wrapped=true -Djava.awt.headless=true -Xms8m -Xmx32m -Djava.library.path=./lib -classpath ../../lib/jsw/wrapper-3.2.3.jar:../../lib/common/picocontainer-2.15.jar:../../lib/common/lucene-join-7.7.2.jar:../../lib/common/sonar-db-mig

系统日志信息

Nov 22 09:12:14 sonar2020 systemd[1]: sonar.service: Scheduled restart job, restart counter is at 3.
Nov 22 09:12:14 sonar2020 systemd[1]: Stopped SonarQube service.
Nov 22 09:12:14 sonar2020 systemd[1]: Starting SonarQube service...
Nov 22 09:12:14 sonar2020 sonar.sh[13634]: Starting SonarQube...
Nov 22 09:12:15 sonar2020 sonar.sh[13634]: Started SonarQube.
Nov 22 09:12:15 sonar2020 systemd[1]: Started SonarQube service.

排查与解决步骤

1. 验证SonarQube实际监听端口

进程运行不代表服务已完成初始化并监听端口,执行以下命令检查端口监听状态:

# 检查默认9000端口
sudo netstat -tulpn | grep 9000
# 或用ss命令
sudo ss -tulpn | grep 9000

若无输出,说明SonarQube未成功监听端口,需查看SonarQube自身日志。

2. 查看SonarQube详细日志

SonarQube日志目录为$SONARQUBE_HOME/logs,重点查看以下日志:

  • web.log:Web服务启动日志,排查端口绑定、初始化失败问题
  • es.log:内置Elasticsearch日志(SonarQube依赖ES,若ES启动失败会导致Web服务无法启动)
    执行命令查看实时日志:
tail -f /home/sonarqube/sonarqube-8.3.1.34397/logs/web.log
tail -f /home/sonarqube/sonarqube-8.3.1.34397/logs/es.log

常见问题处理:

  • Elasticsearch虚拟内存不足:调整系统参数
    sudo sysctl -w vm.max_map_count=262144
    # 永久生效需写入配置文件
    echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
    
  • 权限不足:确保sonarqube用户拥有目录读写权限
    sudo chown -R sonarqube:sonarqube /home/sonarqube/sonarqube-8.3.1.34397
    

3. 检查防火墙与网络策略

即使本地端口开放,需确认:

  • 服务器防火墙允许9000端口对外访问:
    # ufw环境
    sudo ufw allow 9000/tcp
    sudo ufw reload
    # firewalld环境
    sudo firewall-cmd --add-port=9000/tcp --permanent
    sudo firewall-cmd --reload
    
  • 云服务器安全组:若为云服务器,需在控制台添加入站规则允许9000端口访问。

4. 验证SonarQube绑定地址

检查sonar.properties中sonar.web.host配置,默认127.0.0.1仅允许本地访问,需改为0.0.0.0开放外部访问:

sudo nano /home/sonarqube/sonarqube-8.3.1.34397/conf/sonar.properties

修改配置项:

sonar.web.host=0.0.0.0

修改后重启服务:

sudo systemctl restart sonar.service

5. 检查systemd服务配置

确保/etc/systemd/system/sonar.service配置完整,示例配置如下:

[Unit]
Description=SonarQube service
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/home/sonarqube/sonarqube-8.3.1.34397/bin/linux-x86-64/sonar.sh start
ExecStop=/home/sonarqube/sonarqube-8.3.1.34397/bin/linux-x86-64/sonar.sh stop
User=sonarqube
Group=sonarqube
Restart=always
LimitNOFILE=65536
LimitNPROC=4096

[Install]
WantedBy=multi-user.target

若缺失LimitNOFILE等参数,可能导致文件句柄不足,修改后重新加载配置并重启:

sudo systemctl daemon-reload
sudo systemctl restart sonar.service

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 09:55:32