CentOS 7 环境下部署 SonarQube 8.9 LTS 服务


# 将 SELinux 设置为宽容模式
sudo setenforce Permissive
sudo vim /etc/selinux/config
  SELINUX=permissive

# 关闭系统防火墙服务
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service

# 安装 PostgreSQL 10 服务
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql10-server

# 自定义 PostgreSQL 10 服务数据目录
sudo mkdir -p /opt/var/lib/pgsql/10/data/
sudo mkdir /opt/var/lib/pgsql/10/backups/
sudo chown -R postgres:postgres /opt/var/lib/pgsql/
sudo chmod -R g-rx,o-rx /opt/var/lib/pgsql/

# 该命令会调用 Vim 创建名为 "override.conf" 的空文件,不需要输入任何内容,直接退出即可。
sudo systemctl edit postgresql-10.service

sudo cp /usr/lib/systemd/system/postgresql-10.service /etc/systemd/system/postgresql-10.service.d/override.conf

# 该命令会调用 Vim 编辑 "/etc/systemd/system/postgresql-10.service.d/override.conf" 文件。
sudo systemctl edit postgresql-10.service

# 请将 "Environment=PGDATA=/var/lib/pgsql/10/data/" 修改为 "Environment=PGDATA=/opt/var/lib/pgsql/10/data/"
# 并在 "ExecStart=/usr/pgsql-10/bin/postmaster -D ${PGDATA}" 行的上面添加一行,内容为 "ExecStart="

sudo su - postgres -c '/usr/pgsql-10/bin/initdb -A md5 -D /opt/var/lib/pgsql/10/data -W'

# 此处会提示为 "postgres" 角色设置新的超级用户口令。建议设置一个安全的口令,并记住它,因为后面还会用到。

# 修改 PostgreSQL 10 服务配置文件的 "max_connections" 参数的值
sudo vim /opt/var/lib/pgsql/10/data/postgresql.conf
  max_connections = 512

sudo systemctl enable postgresql-10.service
sudo systemctl start postgresql-10.service

psql -U postgres

# 创建名为 "sonarqube" 的角色,并为其设置一个安全的密码。
# 创建属于 "sonarqube" 角色的同名数据库。

CREATE ROLE sonarqube LOGIN PASSWORD '********';
CREATE DATABASE sonarqube OWNER sonarqube;

# 退出 psql
\q

sudo yum -y install java-11-openjdk-devel
sudo yum -y install fontconfig-devel
sudo yum -y install freetype-devel

wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.9.7.52159.zip
sudo unzip sonarqube-8.9.7.52159.zip -d /opt

sudo vim /etc/profile.d/sonarqube.sh
  export SONAR_HOME="/opt/sonarqube-8.9.7.52159"
source /etc/profile

sudo useradd sonarqube
sudo chown -R sonarqube:sonarqube ${SONAR_HOME}

sudo vim /etc/security/limits.d/sonarqube.conf
  sonarqube - memlock unlimited
  sonarqube - nofile 131072
  sonarqube - nproc 8192

sudo vim /etc/sysctl.d/sonarqube.conf
  vm.max_map_count = 524288
  fs.file-max = 131072
  net.ipv4.tcp_retries2 = 5
sudo sysctl --system

sudo vim ${SONAR_HOME}/conf/sonar.properties
  sonar.jdbc.username=sonarqube
  sonar.jdbc.password=********
  sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube
  sonar.path.data=data
  sonar.path.logs=logs
  sonar.path.temp=temp
  sonar.web.host=0.0.0.0
  sonar.web.port=9000
  sonar.web.context=/

# 启动 SonarQube 实例
sudo -u sonarqube $SONAR_HOME/bin/linux-x86-64/sonar.sh start

# 检查 SonarQube 实例
sudo -u sonarqube $SONAR_HOME/bin/linux-x86-64/sonar.sh status

# 停止 SonarQube 实例
sudo -u sonarqube $SONAR_HOME/bin/linux-x86-64/sonar.sh stop

# 默认系统管理员凭据
admin/admin

# 登录之后依次点击 "Administration" 和 "Marketplace"
# 在 "Plugins" 搜索框中搜索并安装 "Chinese Pack" 和 "Findbugs"



# 如果项目当中包含 CSS, JavaScript/TypeScript 代码,并且想要对它们进行分析的话,需要在运行扫描的主机上安装 Node.js 软件包。
# wget https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz
# sudo tar -xJvf node-v16.14.0-linux-x64.tar.xz -C /opt

# 并且在项目根目录创建的 sonar-project.properties 配置文件中设置以下属性:
# sonar.nodejs.executable=/opt/node-v16.14.0-linux-x64/bin/node
# sonar.javascript.node.maxspace=4096

# 或者通过扫描器命令行参数进行设置:
# -Dsonar.nodejs.executable=/opt/node-v16.14.0-linux-x64/bin/node
# -Dsonar.javascript.node.maxspace=4096

# 排除 Java 堆栈或内存故障:
# "Java heap space error" or "java.lang.OutOfMemoryError"
# For "SonarScanner for Maven": export MAVEN_OPTS="-Xmx512m"
# For "SonarScanner for CLI": export SONAR_SCANNER_OPTS="-Xmx512m"

# https://docs.sonarqube.org/8.9/