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 설치
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
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
오픈 파일 갯수 설정
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
다운로드 및 디렉토리 변경
여기서 *
는 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