웹사이트 검색

Ubuntu 22.04에서 SonarQube를 설치하는 방법


이 튜토리얼은 다음 OS 버전에 대해 존재합니다.

  • Ubuntu 22.04(Jammy Jellyfish)
  • Ubuntu 16.04(Xenial Xerus)

이 페이지에서

  1. 전제 조건
  2. 자바 OpenJDK 설치
  3. PostgreSQL 데이터베이스 시스템 설치
  4. 시스템 설정
  5. SonarQube 패키지 다운로드
  6. SonarQube 구성
  7. Reverse Proxy로 SonarQube 실행하기\n
  8. SonarQube 설치
  9. 결론

SonarQube 또는 이전 Sonar는 정적 코드 분석 및 코드 보안을 위한 오픈 소스 플랫폼입니다. 이를 통해 정적 코드 분석 및 코드 품질을 수행하여 버그를 감지하고 애플리케이션 보안을 강화할 수 있습니다. 또한 중복 코드, 코딩 표준, 코드 복잡성 및 보안 권장 사항과 같은 보고서를 제공합니다.

sonarQube를 사용하면 29개 프로그래밍 언어에 대한 정적 코드 분석을 자동화할 수 있습니다. Jenkins, Azure DevOps와 같은 기존 CI/CD 도구 또는 IntelliJ 및 Visual Code Studio와 같은 IDE와 SonarQube를 쉽게 통합할 수 있습니다.

이 가이드에서는 Ubuntu 22.04 서버에 SonarQube 정적 코드 분석을 설치하는 방법에 대해 알아봅니다. 또한 SonarQube의 데이터베이스로 사용할 PostgreSQL과 리버스 프록시로 사용할 Nginx 웹 서버를 설치하는 방법도 배웁니다.

전제 조건

이 가이드를 시작하기 전에 다음이 있어야 합니다.

  • UFW 방화벽이 활성화된 Ubuntu 서버 22.04.\n
  • sudo/administrator 권한이 있는 루트가 아닌 사용자.\n
  • Ubuntu 서버 IP 주소를 가리키는 도메인 이름.

자바 OpenJDK 설치

여기서 첫 번째 단계는 Ubuntu 시스템에 Java OpenJDK를 설치하는 것입니다. SonarQube 서버를 사용하려면 Linux 시스템에 Java OpenJDK v11을 설치해야 합니다.

패키지 설치를 시작하기 전에 다음 apt 명령을 실행하여 Ubuntu 패키지 인덱스 리포지토리를 업데이트하고 새로 고칩니다.

sudo apt update

그런 다음 다음 apt 명령을 사용하여 Java OpenJDK v11을 설치합니다. 최신 Ubuntu 22.04의 기본 OpenJDK 버전은 Java OpenJDK v11입니다.

설치를 확인하라는 메시지가 표시되면 Y를 입력하고 ENTER를 눌러 계속 진행합니다.

sudo apt install default-jdk

Java OpenJDK가 설치되면 다음 java 명령을 사용하여 Java 버전을 확인합니다. 시스템에 설치된 Java 버전의 출력이 표시됩니다.

java -version

PostgreSQL 데이터베이스 시스템 설치

SonarQube는 PostgreSQL, Microsoft SQL Server 및 oracle 데이터베이스와 같은 여러 데이터베이스 시스템을 지원합니다. 이 예제에서는 PostgreSQL을 SonarQube 설치용 데이터베이스로 사용합니다.

이 글을 쓰는 시점에서 최신 버전의 SonarQube는 PostgreSQL v9.6 이상이 필요했습니다. 이 가이드에서는 공식 PostgreSQL 리포지토리에서 PostgreSQL v13을 설치합니다.

먼저 다음 명령을 사용하여 PostgreSQL 리포지토리의 GPG 키를 추가합니다.

wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -

이제 아래 명령을 사용하여 Ubuntu 시스템용 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'

그런 다음 우분투 패키지 색인을 업데이트하고 새로 고칩니다.

sudo apt update

이제 아래의 apt 명령을 통해 PostgreSQL 데이터베이스 v13을 설치합니다. 설치를 확인하라는 메시지가 표시되면 Y를 입력한 다음 Enter 키를 눌러 계속 진행합니다.

sudo apt install postgresql-13

PostgreSQL이 설치되면 다음 명령을 실행하여 postgresql 서비스를 확인하고 서비스가 실행 중인지 확인합니다.

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

postgresql 서비스의 출력이 활성화된 것을 볼 수 있습니다. 즉, 시스템 부팅 시 자동으로 실행됩니다. 그리고 postgresql 서비스의 현재 상태가 실행 중입니다.

서버에 PostgreSQL을 설치하면 PostgreSQL 셸을 통해 SonarQube의 새 데이터베이스와 사용자를 설정할 준비가 된 것입니다.

다음 명령을 실행하여 PostgreSQL 셸에 로그인합니다.

sudo -u postgres psql

이제 다음 PostgreSQL 쿼리를 실행하여 SnonarQube에 대한 새 데이터베이스 및 사용자를 생성합니다. 이 예에서는 PostgreSQL 데이터베이스와 사용자 sonarqube를 생성합니다. 그리고 강력한 암호로 암호를 변경해야 합니다.

CREATE USER sonarqube WITH PASSWORD 'Password';
CREATE DATABASE sonarqube OWNER sonarqube;
GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube;

다음으로 다음 쿼리를 실행하여 PostgreSQL 서버의 데이터베이스 및 사용자 목록을 확인합니다.

\l
\du

데이터베이스와 사용자가 생성되면 데이터베이스 목록에 sonarqube 데이터베이스가 표시되고 사용자 목록에 sonarqube 사용자가 표시됩니다.

마지막으로 아래 쿼리를 사용하여 PostgreSQL에서 로그아웃합니다.

\q

시스템 설정

Linux 시스템에 SonarQube를 설치하려면 SonarQube를 실행할 전용 사용자와 ulimit 및 커널 매개변수와 같은 일부 추가 구성이 있어야 합니다.

이제 SonarQube에 대한 새 사용자를 생성하고 sysctl.conf 파일을 통해 사용자 지정 커널 매개 변수를 설정하고 ulimit를 설정합니다.

다음 명령을 실행하여 시스템에 새로운 사용자 sonarqube를 생성하십시오.

sudo useradd -b /opt/sonarqube -s /bin/bash sonarqube

그런 다음 nano 편집기를 사용하여 /etc/sysctl.conf 파일을 엽니다.

sudo nano /etc/sysctl.conf

줄 맨 아래에 다음 구성을 추가합니다. SonarQube는 커널 매개변수 vm.max_map_count가 524288보다 크고 fx.file-max가 131072보다 커야 했습니다.

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

파일을 저장하고 완료되면 편집기를 종료하십시오.

이제 아래의 sysctl 명령을 실행하여 /etc/sysctl.conf 파일에 새로운 변경 사항을 적용하십시오.

sudo sysctl --system

다음 출력에서 새 커널 매개변수가 적용된 것을 볼 수 있습니다.

Next, run the following command to set up ulimit for the SonarQube. This will take temporary effects on your system, when the system is rebooted, the ulimits will revert to default.
ulimit -n 131072
ulimit -u 8192

ulimit 구성을 영구적으로 만들려면 다음 명령을 사용하여 새 구성 파일 /etc/security/limits.d/99-sonarqube.conf을 만듭니다.

sudo nano /etc/security/limits.d/99-sonarqube.conf

파일에 다음 구성을 추가합니다.

sonarqube   -   nofile   131072
sonarqube   -   nproc    8192

파일을 저장하고 완료되면 편집기를 닫습니다.

이제 SnonarQube 설치를 위한 Ubuntu 시스템 구성을 완료했습니다. SonarQube 패키지를 다운로드하고 다음 단계에서 SonarQube 설치를 설정합니다.

SonarQube 패키지 다운로드

SonarQube는 zip 파일과 Docker 이미지를 통해 두 가지 방법으로 설치할 수 있습니다. 이 예제에서는 공식 SonarQube 다운로드 페이지에서 다운로드할 zip 파일 패키지를 통해 SonarQube를 설치합니다.

이 글을 쓰는 시점을 기준으로 SonarQube 최신 버전 v9.6.1은 다음 단계에 따라 설치됩니다.

SonarQube 패키지를 다운로드하기 전에 다음 apt 명령을 실행하여 unzip 및 wget과 같은 기본 패키지를 설치하십시오.

sudo apt install unzip software-properties-common wget

이제 아래의 wget 명령을 통해 SonarQube 패키지를 다운로드하십시오.

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

SonarQube가 다운로드되면 작업 디렉토리에 zip 파일 sonarqube-9.6.1.59531.zip이 표시됩니다.

아래의 unzip 명령을 사용하여 SonarQube 패키지를 추출하십시오. SonarQube 패키지가 저장되어 있는 새 디렉터리 sonarqube-9.6.1.59531을 가져와야 합니다.

unzip sonarqube-9.6.1.59531.zip

아래 명령을 사용하여 sonarqube-9.6.1.59531 디렉토리를 /opt/sonarqube로 이동합니다.

mv sonarqube-9.6.1.59531 /opt/sonarqube

마지막으로 아래와 같이 chown 명령어를 통해 SonarQube 설치 디렉토리 /opt/sonarqube의 소유권을 sonarquba 사용자로 변경합니다.

sudo chown -R sonarqube:sonarqube /opt/sonarqube

이제 설치 디렉터리 /opt/sonarqube에 SonarQube 패키지를 다운로드했습니다. 다음으로 SonarQube 설치를 구성한 다음 SonarQube용 systemd 서비스 파일을 설정합니다.

SonarQube 구성

SonarQube 패키지를 다운로드한 후 기본 구성 파일인 /opt/sonarqube/conf/sonar.properties를 편집하여 SonarQube 설치를 설정합니다.

PostgreSQL 데이터베이스 세부 정보를 추가하고 Elasticsearch 프로세스를 위한 최대 메모리 힙을 설정하고 /opt/sonarqube/conf/sonar.properties 파일을 통해 SonarQube 서비스의 웹 호스트 및 포트를 설정합니다. 마지막으로 SonarQube를 시스템 서비스로 설정합니다.

이제 nano 편집기를 사용하여 SonarQube 구성 파일 /opt/sonarqube/conf/sonar.properties을 엽니다.

nano /opt/sonarqube/conf/sonar.properties

데이터베이스 구성의 경우 다음 옵션 중 일부를 주석 해제하고 데이터베이스 세부 정보를 사용하여 기본값을 변경하십시오.

sonar.jdbc.username=sonarqube
sonar.jdbc.password=Password

sonar.jdbc.url=jdbc:postgresql://localhost:5432/sonarqube

이제 다음 구성의 주석을 제거하여 elasticsearch 프로세스의 최대 힙 메모리 크기를 설정합니다. 그의 예에서 최대 힙은 512MB입니다.

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

마지막으로 SonarQube가 실행될 IP 주소와 포트를 설정하기 위해 다음 구성을 주석 해제하고 변경합니다. 또한 로그 레벨은 INFO"가 되며 SonarQube 설치 디렉토리의 logs 디렉토리에 저장됩니다.

sonar.web.host=127.0.0.1
sonar.web.port=9000
sonar.web.javaAdditionalOpts=-server

sonar.log.level=INFO
sonar.path.logs=logs

파일을 저장하고 완료되면 편집기를 종료하십시오.

SonarQube 구성을 완료한 후. 이제 SonarQube용 systemd 서비스 파일을 설정합니다. 이를 통해 systemctl 명령을 사용하여 SonarQube 프로세스를 쉽게 제어할 수 있습니다.

다음 명령을 실행하여 새 systemd 서비스 파일 /etc/systemd/system/sonarqube.service을 생성합니다.

sudo nano /etc/systemd/system/sonarqube.service

파일에 다음 구성을 추가합니다.

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

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

[Install]
WantedBy=multi-user.target

파일을 저장하고 완료되면 편집기를 종료하십시오.

이제 다음 명령을 사용하여 systemd 관리자를 다시 로드합니다.

sudo systemctl daemon-reload

그런 다음 아래의 systemctl 명령을 통해 sonarqube.service를 시작하고 활성화합니다.

sudo systemctl start sonarqube.service
sudo systemctl enable sonarqube.service

마지막으로 다음 명령을 사용하여 sonarqube.service 상태를 확인하고 해당 상태가 실행 중인지 확인합니다.

sudo systemctl status sonarqube.service

다음 스크린샷에 출력이 표시됩니다. sonarqube.service 상태는 실행 중이며 활성화되어 있어 시스템 부팅 시 자동으로 실행됩니다.

이제 SonarQube가 systemd 서비스로 실행 중이므로 기본 포트 TCP 9000을 사용하여 localhost에서 실행되는 SonarQube용 리버스 프록시를 설치 및 설정합니다.

Reverse Proxy로 SonarQube 실행하기

이제 SonarQube 설치가 실행 중이므로 Nginx 웹 서버를 설치하고 SonarQube의 리버스 프록시로 사용할 서버 블록을 설정할 수 있습니다.

다음 apt 명령을 실행하여 Nginx 웹 서버를 Ubuntu 시스템에 설치합니다. 설치를 확인하라는 메시지가 표시되면 Y를 입력하고 ENTER를 눌러 계속 진행합니다.

sudo apt install nginx

nginx가 설치되면 nginx 서비스를 확인하고 아래와 같이 systemctl 명령을 통해 서비스 상태가 실행 중인지 확인합니다.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

nginx 서비스의 출력이 활성화된 것을 볼 수 있습니다. 즉, 시스템 부팅 시 자동으로 실행됩니다. 그리고 nginx 서비스의 현재 상태가 실행 중입니다.

Nginx 웹 서버를 실행한 후 SonarQube의 리버스 프록시로 사용할 새 서버 블록 구성을 생성합니다.

다음 명령을 사용하여 새 서버 블록 구성 /etc/nginx/sites-available/sonarqube.conf를 만듭니다.

sudo nano /etc/nginx/sites-available/sonarqube.conf

파일에 다음 구성을 추가하고 도메인 이름을 변경해야 합니다.

server {

    listen 80;
    server_name sonar.hwdomain.io;
    access_log /var/log/nginx/sonar.access.log;
    error_log /var/log/nginx/sonar.error.log;
    proxy_buffers 16 64k;
    proxy_buffer_size 128k;

    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto http;
    }
}

파일을 저장하고 완료되면 편집기를 종료하십시오.

다음으로 /etc/nginx/sites-enabled 디렉토리에 해당 파일의 심볼릭 링크를 생성하여 서버 블록 구성 sonarqube.conf를 활성화합니다. 그런 다음 Nginx 구성 파일을 확인합니다.

sudo ln -s /etc/nginx/sites-available/sonarqube.conf /etc/nginx/sites-enabled/
sudo nginx -t

적절하고 올바른 Nginx 구성 파일이 있는 경우 "test is successfull"과 같은 출력 메시지가 표시되어야 합니다.

마지막으로 아래의 systemctl 명령을 실행하여 nginx 서비스를 다시 시작하고 새 서버 블록 구성을 적용합니다.

sudo systemctl restart nginx

SonarQube 설치

SonarQube에 대한 역방향 프록시 구성을 완료한 후 이제 도메인을 통해 SonarQube 설치에 액세스하고 SonarQube의 기본 구성을 설정할 수 있습니다.

웹 브라우저를 열고 SonarQube 설치 도메인 이름(예: http://sonar.hwdomain.io)을 방문하십시오.

이제 SonarQube 로그인 페이지가 나타납니다. 기본 사용자 이름과 비밀번호 admin/admin을 입력하고 로그인을 클릭합니다.

로그인하면 SnonarQube의 새 비밀번호를 설정하라는 메시지가 표시됩니다. 이전 암호 admin을 입력한 다음 강력한 새 암호를 입력하고 반복한 다음 업데이트를 클릭합니다.

이제 다음 스크린샷에 SonarQube 사용자 대시보드가 표시됩니다.

결론

이 가이드에서는 최신 Ubuntu 22.04 서버에 SonarQube를 설치했습니다. 또한 공식 PostgreSQL 리포지토리를 통해 PostgreSQL 데이터베이스의 기본 설치를 완료하고 Nginx 웹 서버를 설치했습니다. 그런 다음 Nginx 서버 블록을 사용하여 SOnarQube에 대한 역방향 프록시도 구성했습니다.

이제 SonarQube가 Ubuntu 서버에 설치되었습니다. 이제 분석할 프로젝트를 git 저장소를 통해 SonarQube에 추가할 수 있습니다.