페이지 트리

이 문서는 SonarQube를 Linux에 설치하기 위한 가이드를 공유하기 위해 작성되었다.


도구명SonarQube Community
버전9.4
OSRocky Linux 8.5
비고





사전 환경 구성

1. Linux 환경 설정

Linux에서 root 권한으로 SonarQube 실행이 불가능하여, OS계정이 필요하다.

# OS계정 생성
adduser --system --no-create-home sonarqube sonarqube


Linux에서 SonarQube를 설치하기 위해서는 다음 사항이 충족되어야 한다.

  • vm.max_map_count 값 >= 524288
  • fs.file-max 값 >= 131072
  • SonarQube 실행 유저는 최소 131072 이상의 File descriptors를 열 수 있어야함
  • SonarQube 실행 유저는 최소 8192 이상의 Threads를 열 수 있어야함


다음 명령어를 통해 현재 설정된 값 확인이 가능하다.

sysctl vm.max_map_count
sysctl fs.file-max
ulimit -n
ulimit -u



다음 명령어를 수행하여 SonarQube를 실행할 OS계정에 위 사항들을 영구적으로 설정할 수 있다.

# vm.max_map_count / fs.file-max 값 설정
# 다음과 같이 에디터로 파일 생성
sudo vim /etc/sysctl.d/99-OS계정.conf

vm.max_map_count=524288
fs.file-max=131072

# 설정 리로드
sudo sysctl --system

# 변경된 값 확인
sysctl vm.max_map_count
sysctl fs.file-max


# Open File descriptors / Threads 값 설정
# 다음과 같이 에디터로 파일 생성
sudo vim /etc/security/limits.d/99-OS계정.conf

OS계정 - nofile 131072
OS계정 - nproc 8192

# 변경된 값 확인
ulimit -n
ulimit -u




(옵션) SonarQube 설치 후 SystemD 서비스로 등록하여 실행하는 경우, 다음과 같이 Service 항목에서 설정 할 수 있다.

[Service]
...
LimitNOFILE=131072
LimitNPROC=8192
...

2.DB 생성

다음 쿼리를 통해 SonarQube에서 사용할 DB 계정 및 DB를 생성한다.

# DB 접근 계정 생성
CREATE ROLE sonarqubeuser WITH LOGIN PASSWORD '<PASSWORD>' VALID UNTIL 'infinity';

# DB 생성
CREATE DATABASE sonarqubedb WITH OWNER=sonarqubeuser ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8' TEMPLATE template0 CONNECTION LIMIT=-1;

# 생성한 DB 모든 권한을 생성한 계정에 부여
GRANT ALL PRIVILEGES ON DATABASE sonarqubedb TO sonarqubeuser;


# (옵션) 만약 스키마를 기본값(public)이 아닌 SonarQube 전용으로 커스텀 스키마를 사용하고 싶을 경우 다음 명령어 사용

ALTER USER sonarqubeuser SET search_path to SonarQubeSchema


3. JDK 설치

현 LTS 기준으로 Oracle JRE 또는 OpenJDK 11 버전이 설치되어 있어야 한다.

여기서는 OpenJDK 기준으로 가이드를 진행한다.

패키지 매니저를 통해 설치

다음 명령어를 수행하여 설치 한다.

# OpenJDK 11 설치
sudo dnf install -y java-11

# 설치 후 확인
java --version



업로드하여 수동 설치

다음 URL에서 Linux용 OpenJDK 11 최신버전을 tar.gz 파일을 다운로드하여 Linux 서버에 업로드 한다.


다음 명령어를 순서대로 수행하여 압축을 풀고, JAVA_HOME을 설정 한다.

# 압축 풀기
tar xvzf openjdk-11.0.2_linux-x64_bin.tar.gz

# 설치할 경로 위치
mkdir /app/java11
mv jdk-11.0.2 /app/

# (옵션) 심볼릭 링크 사용
cd /app
ln -s jdk-11.0.2 java

# SonarQube 실행 계정 profile에 JAVA_HOME 설정
vim ~/.bash_profile

# 파일 마지막 라인에 다음 내용 입력 후 저장
JAVA_HOME=/app/java11

PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME
export PATH

# 적용 및 확인
source ~/.bash_profile

echo $JAVA_HOME
java --version


4. 방화벽 허용 설정 (방법 생략)

SonarQube는 Web 기본 Port로 9000 을 사용한다.

따라서 방화벽을 사용할 경우 해당 포트를 허용해줘야 한다.



SonarQube 설치

여기서는 SonarQube Community 버전으로 가이드 하지만, 상용버전도 설치 방법은 동일하다.


1.SonarQube 다운로드

아래 URL에서 SonarQube zip파일을 다운로드하여 Linux 서버에 업로드 한다.


2.SonarQube 설치

다음 명령어를 순서대로 수행하여 zip 파일을 압축 풀고 SonarQube 디렉토리를 설치할 경로에 위치한다.

  • 가이드에서는 /app/sonarqube(심볼릭 링크로 실제 디렉토리는 sonarqube-9.4.0.54424) 경로를 SONARQUBE_HOME 으로 사용한다.
# 압축 풀기
unzip sonarqube-9.4.0.54424.zip

# 설치 할 경로 위치
mkdir -p /app
mv sonarqube-9.4.0.54424 /app/

# (옵션) 심볼릭 링크 사용
cd /app
ln -s sonarqube-9.4.0.54424 sonarqube


$SONARQUBE-HOME 소유자 권한을 실행할 OS계정으로 변경 한다.

# OS계정으로 소유자 및 그룹 권한 변경

sudo chown OS계정:OS계정그룹 -R sonarqube-9.4.0.54424
sudo chown OS계정:OS계정그룹 -R sonarqube


3. DB 및 기본 설정

sonar.properties 수정

$SONARQUBE-HOME/conf/sonar.properties 파일을 열어 다음 항목들을 수정한다.

  • DB PostgreSQL 연동으로 가이드하며 PostgreSQL은 JDBC Driver 라이브러리 설치 불필요함
## DB
# DB 접근 계정 암호
sonar.jdbc.username=DB계정명
sonar.jdbc.password=DB계정암호

# JDBC URL 설정
# PostgreSQL의 경우 포트를 입력 안할 경우, 기본값인 5432포트로 인식함
sonar.jdbc.url=jdbc:postgresql://IP:Port/DB명


## (옵션) SonarQube Web Port 변경
SonarQube는 기본값으로 9000 포트를 사용하며, 아래 값 주석해제하여 변경할 수 있음
sonar.web.port=9000


## (옵션) JVM Heap 메모리 설정
Web / CE(분석기) / 번들 Elasticsearch 의 JVM Heap 메모리를 각각 아래 값 주석해제하여 변경할 수 있음
#sonar.web.javaOpts=-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError

#sonar.ce.javaOpts=-Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError

#sonar.search.javaOpts=-Xmx512m -Xms512m -XX:MaxDirectMemorySize=256m -XX:+HeapDumpOnOutOfMemoryError





wrapper.conf 수정

(옵션) Java 실행 경로를 특별히 설정해야 할 경우, 다음 $SONARQUBE-HOME/conf/wrapper.conf 파일을 열어 다음 항목을 수정한다.

# Java 전체 실행 경로 입력 ex) /app/java11/bin/java
wrapper.java.command=java


sonar.sh 수정

$SONARQUBE-HOME/bin/linux-x86-64/sonar.sh 파일을 열어 다음 항목을 수정한다.

# 다음 항목을 주석 해제 후 SonarQube을 실행할 OS계정명 입력
RUN_AS_USER=OS계정명


4. SonarQube 실행

다음 명령어를 사용하여 SonarQube를 실행한다.

# SonarQube 실행
$SONARQUBE-HOME/bin/linux-x86-64/sonar.sh start

# SonarQube 중지
$SONARQUBE-HOME/bin/linux-x86-64/sonar.sh stop


# (참고) 다음처럼 파라미터 없이 실행 할 경우 명령어를 보여줌$SONARQUBE-HOME/bin/linux-x86-64/sonar.shUsage: ./sonar.sh { console | start | stop | force-stop | restart | status | dump }


5. (옵션) Linux SystemD 서비스로 등록하여 사용

다음 명령어를 통해 SonarQube를 Linux SystemD 서비스로 등록하여 사용 할 수 있다.

# 서비스 파일 생성
sudo vim /etc/systemd/system/sonarqube.service


# sonarqube.service 파일에 다음 내용 입력
-----------------------------------------------------
[Unit]
Description=SonarQube service
After=syslog.target network.target

[Service]
Type=simple
User=OS계정명
Group=OS계정그룹명
PermissionsStartOnly=true
ExecStart=/bin/nohup (필요시 전체 Java 경로/)java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar $SONARQUBE-HOME/lib/sonar-application-버전.jar
StandardOutput=syslog
LimitNOFILE=131072
LimitNPROC=8192
TimeoutStartSec=5
Restart=always
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target
-----------------------------------------------------

# SonarQube 서비스 활성화
sudo systemctl enable sonarqube.service

# SystemD로 SonarQube 실행
sudo systemctl start sonarqube.service

# SystemD로 SonarQube 중지
sudo systemctl stop sonarqube.service



SonarQube 동작 확인

브라우저 접속

SonarQube 실행 후 구동이 완료되면 브라우저를 통해 접속할 수 있다.


최초 로그인

초기 관리자 계정은 admin / admin 으로, 로그인 할 경우, 암호를 변경할 수 있다.


SonarQube 프로젝트 SetupWizard가 표시되면 SonarQube가 정상적으로 설치된 것을 확인할 수 있다.




참조


  • 레이블 없음