[DevOps]SonarQube Server 구축 - Ubuntu

Inung_92·2025년 1월 10일
1

DevOps

목록 보기
3/5
post-thumbnail

환경구성

OS : Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-52-generic x86_64)
SonarQube : 25.1.0.102122
Java : openjdk-17
DB : PostgreSQL 14.9

사전 준비

Java 설치

패키지 업데이트 및 Java 설치

sudo apt update
sudo apt install openjdk-17-jdk

버전 확인

java -version

설치 경로 확인

sudo update-alternatives --config java

환경변수 설정

sudo vim /etc/profile

# 입력
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin

# 저장
source /etc/profile

# 확인
echo $JAVA_HOME

계정 및 그룹 생성

sudo adduser --system --group --no-create-home sonar
# sonarqube 설치 후 권한 설정
sudo chown -R sonar:sonar /opt/sonarqube

DB

PostgreSQL 공식 패키지 저장소 추가

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

패키지 목록 업데이트

sudo apt-get update

PostgreSQL14 설치

sudo apt-get install postgresql-14

서비스 시작

sudo service postgresql start

버전 확인

psql --version

// 결과
psql (PostgreSQL) 14.9 (Ubuntu 14.9-0ubuntu0.22.04.1)

// 계정 전환 및 접속
sudo -i -u postgres
psql

계정 및 Dababase 생성

-- 계정 생성
CREATE USER sonar WITH PASSWORD 'YOUR_PASSWORD';
-- Database 생성
CREATE DATABASE sonarqube OWNER sonar;
-- 권한 부여
GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonar;
-- 종료
\q
exit

SonarQube 설치

커널 매개변수 설정

오픈 파일 갯수 설정

sudo vim /etc/sysctl.conf

# sysctl.conf에 아래 내용 추가
vm.max_map_count=524288
fs.file-max=131072

# 적용
sudo sysctl --system

매개변수 설정에 대한 기준은 SonarQube Docs를 통해 확인 가능하다.

스레드 개수 변경

sudo vim /etc/security/limits.conf

# limits.conf에 아래 내용 추가
sonarqube - nofile 131072
sonarqube - nproc 8192

SonarQube 설치 및 설정

다운로드 및 디렉토리 변경
여기서 *25.1.0.102122처럼 버전을 의미한다.

# 다운로드(LTS 버전 : 9.9)
sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-25.1.0.102122.zip

# 압축 해제
sudo unzip sonarqube-*.zip
sudo rm -f sonarqube-*.zip

# 디렉토리 변경
sudo mv sonarqube-* /opt/sonarqube
or
sudo mv sonarqube-* sonarqube
sudo mv sonarqube /opt

권한 설정

sudo chown -R sonar:sonar /opt/sonarqube

SonarQube 설정

# sonar.properties
sudo vim /opt/sonarqube/conf/sonar.properties

# 필수
sonar.jdbc.username=sonar
sonar.jdbc.password=your_password
sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube

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

# 필요 시
sonar.web.port=[원하는 포트번호] # 기본 값 : 9000

서비스 등록

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

[Service]
Type=forking
User=sonar
Group=sonar
ExecStart=/opt/sonarqube/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonarqube/bin/linux-x86-64/sonar.sh stop
LimitNOFILE=131072
LimitNPROC=8192

[Install]
WantedBy=mulit-user.target

실행

서비스 실행

sudo systemctl daemon-reload
sudo systemctl enable sonarqube.service
sudo systemctl start sonarqube.service
sudo systemctl status sonarqube.service

접속
http://localhost:9000으로 접속하면 SonarQube Server의 UI가 표현되고 기본 로그인 정보는 아래와 같다.

login : admin
password : admin

참고 사항

SonarQube를 구동하기 위해서는 최소 2GB의 메모리 공간이 필요하다.
실행 시 에러가 나는 경우는 메모리 부족일 가능성이 농후하기 때문에 다음과 같은 절차를 통해 메모리를 확인하고, 스왑 영역을 설정하자.

메모리 확인

free -m

               total        used        free      shared  buff/cache   available
Mem:           15799       13338         254         372        2207        1759
스왑:           6143        3367        2776

위와 같이 나올 경우 free에 2G 이상의 여유가 있기 때문에 실행하는데 문제가 되지 않는다.
가능하면 4G를 스왑 영역으로 잡는 것이 좋다.

스왑 영역 설정

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab
profile
서핑하는 개발자🏄🏽

0개의 댓글