이 문서는 SonarQube 최신 버전 설치 가이드를 공유하기 위해 작성되었다.

제품명SonarQube
버전10.6
OSRocky Linux 8
DBPostgreSQL 14
JavaOpenJDK17
설치형태Zip파일





1. 사전 준비

SonarQube 계정 생성 

SonarQube를 설치할 계정을 생성한다.

adduser --system --no-create-home sonarqube


Elasticsearch를 위한 호스트 구성

SonarQube는 내장된 Elasticsearch를 사용하기 때문에 그에 맞는 호스트 구성이 필요하다.

최대 열린 파일 개수 및 기타 제한 확인

  • 프로세스가 가질 수 있는 최대 메모리 맵 영역 수(vm.max_map_count)는 524288보다 크거나 같아야 한다.
  • 열린 파일 기술자의 최대 수(fs.file-max)는 131072보다 크거나 같아야 한다.
  • SonarQube를 실행하는 사용자는 적어도 131072 개의 파일 설명자를 열 수 있어야 한다.
  • SonarQube를 실행하는 사용자는 최소 8192 개의 스레드 열 수 있어야 한다.
systemd 사용 안하는 경우
#max_map_count, file-max 설정
sudo vi /etc/sysctl.d/99-sonarqube.conf
#추가
vm.max_map_count=524288
fs.file-max=131072

#사용자 제한
vi /etc/security/limits.d/99-sonarqube.conf
#추가
sonarqube   -   nofile   131072                    //nofile (number of open files) : 파일 열기 최대 개수
sonarqube   -   nproc    8192                      //nproc (number of processes) : 프로세스 최대 개수

# 설정 리로드
sudo sysctl --system
systemd 사용하는 경우
[Service]

...

LimitNOFILE=131072

LimitNPROC=8192
...

Linux 커널에서 seccomp 활성화

기본값으로 Elasticsearch는 seccomp 필터를 사용한다. seccomp이 활성화된 커널을 사용하는지 확인해야 한다.

#seccomp 활성화 확인
$ grep SECCOMP /boot/config-$(uname -r)


2. SonarQube 설치

DB계정 생성

CREATE ROLE sonar WITH LOGIN PASSWORD 'sonar' VALID UNTIL 'infinity';
CREATE DATABASE sonarqube WITH OWNER=sonaradmin ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8' TEMPLATE template0 CONNECTION LIMIT=-1;

GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonaradmin;

홈 디렉토리 생성

mkdir /app/sonarqube

zip파일 다운로드

wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-10.6.0.92116.zip

압축해제

unzip sonarqube-10.6.0.92116.zip

데이터베이스에 대한 액세스 설정

DB 설정 구성을 위해 <sonarqubeHome>/conf/sonar.properties를 수정한다.

<sonarqubeHome>/conf/sonar.properties
#하위 PostgreSQL 관련 부분 주석 해제 후 설정

# User credentials.
# Permissions to create tables, indices and triggers must be granted to JDBC user.
# The schema must be created first.
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar

#----- PostgreSQL 11 or greater
# By default the schema named "public" is used. It can be overridden with the parameter "currentSchema".
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube

Elasticsearch 스토리지 경로 구성

기본적으로 Elasticsearch의 데이터는 <sonarqubeHome>/data에 저장되지만, 운영 인스턴스에서는 권장하지 않는다.

빠른 I/O가 있는 전용 볼륨에 저장하는 것이 좋다. 성능 유지와 SonarQube의 쉬운 업그레이드가 가능해진다.

<sonarqubeHome>/conf/sonar.properties에서 설정을 구성한다.

sonar.path.data=/var/sonarqube/data
sonar.path.temp=/var/sonarqube/temp

(옵션) 메모리 설정

다음과 같은 경우 메모리를 증설하는 설정을 해야할 수도 있다.

  • 모니터링 도구가 SonarQube 프로세스가 메모리 제한에 도달했음을 나타낼 때
  • SonarQube 프로세스가 충돌나거나 sonar.log file에 out-of-memory 에러가 발생할 때
  • SonarQube 백그라운드 작업이 백그라운드 작업 로그에서 out-of-memory에러가 나면서 실패할 때
  • Elasticsearch 인스턴스의 이슈 인덱스의 저장소 크기가 Elasticsearch Java 프로세스에 할당된 메모리보다 크거나 같을 때

<sonarqubeHome>/conf/sonar.properties 에서 -Xmx 메모리 설정을 늘려 할당된 최대 메모리를 늘릴 수 있다.

Java 프로세스SonarQube 속성비고
Compute Enginesonar.ce.javaOpts
Elasticsearchsonar.search.javaOpts런타임 시 Heap 크기가 조정되지 않도록 최소 및 최대 메모리를 동일한 값으로 설정하여 JVM 리소스를 전환하고 진행 중인 요청의 응답 시간을 크게 늘릴 수 있다.
Websonar.web.javaOpts
예시
#sonar.web.javaOpts=-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError
 
#sonar.ce.javaOpts=-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError
 
#sonar.search.javaOpts=-Xmx512m -Xms512m -XX:MaxDirectMemorySize=256m -XX:+HeapDumpOnOutOfMemoryError

Java 실행 파일 경로 설정

/etc/environment
#SONAR_JAVA_PATH 변수 추가
export SONAR_JAVA_PATH="path/to/java_home/bin/java"


3.SonarQube 실행

서비스로 실행

#service 생성
vi /etc/systemd/system/sonarqube.service
 
# 내용 추가
[Unit]
Description=SonarQube service
After=syslog.target network.target

[Service]
Type=simple
User=sonarqube
Group=sonarqube
PermissionsStartOnly=true
ExecStart=/bin/nohup /opt/java/bin/java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /home/sonarqube/sonarqube-10.6.0.92116/lib/sonar-shutdowner-10.6.0.92116.jar
StandardOutput=journal
LimitNOFILE=131072
LimitNPROC=8192
TimeoutStartSec=5
Restart=always
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

 
# 활성화
sudo systemctl enable sonarqube.service

# 서비스 시작
sudo systemctl start sonarqube.service

# 서비스 중지
sudo systemctl stop sonarqube.service

# 서비스 상태
sudo systemctl status sonarqube.service

수동 실행

# 실행
<sonarqubeHome>/bin/linux-x86-64/sonar.sh start

# 중지
<sonarqubeHome>/bin/linux-x86-64/sonar.sh stop

# 강제 중지
<sonarqubeHome>/bin/linux-x86-64/sonar.sh force-stop



4. 웹 로그인

최초 접속 시, 계정은 admin/admin 이다.

새로운 비밀번호로 업데이트한다.

최초 접속 후 화면








참조


  • 레이블 없음