이 문서는 SonarQube 최신 버전 설치 가이드를 공유하기 위해 작성되었다.
제품명 | SonarQube |
---|
버전 | 10.6 |
---|
OS | Rocky Linux 8 |
---|
DB | PostgreSQL 14 |
---|
Java | OpenJDK17 |
---|
설치형태 | 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 개의 스레드를 열 수 있어야 한다.
#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 |
[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; |
홈 디렉토리 생성
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를 수정한다.
#하위 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 Engine | sonar.ce.javaOpts |
|
Elasticsearch | sonar.search.javaOpts | 런타임 시 Heap 크기가 조정되지 않도록 최소 및 최대 메모리를 동일한 값으로 설정하여 JVM 리소스를 전환하고 진행 중인 요청의 응답 시간을 크게 늘릴 수 있다. |
Web | sonar.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 실행 파일 경로 설정
#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 이다.

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

최초 접속 후 화면

참조