본문 바로가기
Application

[SonarQube] 소나큐브 구축하기

by 선인장 🌵 2022. 3. 6.
728x90
728x90

소나큐브 구축하기

SonarQube(소나큐브)는 개발한 프로그램 코드상에서 보안 취약점, 버그, 중복 코드, 주석 등을 발견할 목적으로 사용하는 정적 코드 분석 오픈 소스 플랫폼이다.

물론 더 많은 언어와 기능 등을 사용하려면 상용으로 구매하여 사용을 해야 하나, 이미 오픈 소스로도 충분히 많은 언어를 지원 및 기능을 지원하고 있다.

무료로 사용 가능한 Community Edition에서는 총 17개의 언어를 지원하고 있다.
지원하고 있는 17개 언어도 사용성이 많은 언어이기 때문에 무료로 사용을 해도 무방하다.

  • Java, C#, JavaScript, TypeScript, CloudFormation, Terraform, Kotlin, Ruby, Go, Scala, Flex, Python, PHP, HTML, CSS, XML, VB.NET

그럼 SonarQube를 CentOS 8 시스템에 설치해보도록 하자.

[SonarQube] 소나큐브 구축하기

1.SonarQube 설치 파일 다운로드

SonarQube 웹 페이지에서 무료로 사용 가능한 Community Edition 버전을 다운로드하여 사용할 수 있다.

 

Download | SonarQube

Get the latest LTS and version of SonarQube the leading product for Code Quality and Security from the official download page.

www.sonarqube.org

1.SonarQube 설치 파일 다운로드
1.SonarQube 설치 파일 다운로드

728x90

2. CentOS 8 Install

설치 방법은 매우 간단하다.

다만, CentOS 8 시스템에 미리 OpenJDK(java), PostgreSQL이 설치되어 있어야 한다.

두 개의 설치 방법은 이미 작성해놓았으며, 링크로 대체하도록 하겠다.

 

[OpenJDK] Adoptium / AdoptOpenJDK 설치 하기

Adoptium / AdoptOpenJDK 설치 하기 지금까지 사용자한테 널리 사용되고 있던, OpenJDK가 많은 내용 끝에 Version 11부터는 유료화가 결정이 되었다. 물론 기존 Version 혹은 비영리 목적으로 사용 시 2020년 12

happylie.tistory.com

 

[PostgreSQL] CentOS 8 PostgreSQL Install 하기

CentOS 8 PostgreSQL Install 하기 PostgreSQL 공부를 위해서 CentOS 시스템에 PostgreSQL을 설치해 사용해보고자 한다. 먼저 설치하는 방법에 대해서 간단하게 알아보도록 하자. 1. yum 명령어를 통해서 패..

happylie.tistory.com

그럼 이제 다운로드한 Community Edition을 시스템에서 zip 파일을 압축 해지하고 Config 설정하면 설치는 완료된다.

2. CentOS 8 Install
2. CentOS 8 Install
2. CentOS 8 Install
2. CentOS 8 Install
2. CentOS 8 Install
2. CentOS 8 Install

나중에 버전 업데이트 등을 위해서 가능하면 소프트 링크를 설정하여 사용하도록 하자.

  • $ ln -s 설치 경로 소프트 링크될 경로
# 소프트링크 설정

$ ln -s /data/programs/sonarqube-9.3.0.51899 /data/programs/sonarqube

$ ls -alt
lrwxrwxrwx.  1 root     root      21  3월  6 14:33 sonarqube -> sonarqube-9.3.0.51899

2. CentOS 8 Install

이와 같이 sonarqube-9.3.0.51899 디렉터리 및 소프트 링크 설정된 sonarqube 디렉터리가 생성됨을 확인할 수 있다.

 

3. SonarQube DB 설정 및 확인

SonarQube를 사용하기 위해서는 PostgreSQL을 설치하여 사용해야 한다.

그럼 SonarQube의 계정 설정 및 데이터베이스 설정을 해보자.

먼저 psql을 이용하여 PostgreSQL로 접속하고 sonarqube 계정과 데이테베이스를 생성 및 권한을 주도록 하자.

일단 기본적으로 sonarqube 계정의 패스워드는 동일하게 sonarqube로 설정하였다.

  • postgres=# create user sonarqube with password 'sonarqube';
  • postgres=# create database sonarqube owner sonarqube;
  • postgres=# ALTER ROLE sonarqube WITH createdb;
  • postgres=# GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube;
# PostgreSQL DB 설정

$ psql -U postgres -W
postgres 사용자의 암호:
psql (10.14)
도움말을 보려면 "help"를 입력하십시오.

postgres=# create user sonarqube with password 'sonarqube';
CREATE ROLE
postgres=# create database sonarqube owner sonarqube;
CREATE DATABASE
postgres=# ALTER ROLE sonarqube WITH createdb;
ALTER ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE sonarqube TO sonarqube;
GRANT

3. SonarQube DB 설정 및 확인
3. SonarQube DB 설정 및 확인

이제 진행한 내용대로 정확히 생성되었는지 확인해보도록 하자.

  • postgres=# \du
  • postgres=# \l
# PostgreSQL 사용자 및 데이터베이스 정보 확인

postgres=# \du
                                 롤 목록
  롤 이름  |                      속성                      | 소속 그룹:
-----------+------------------------------------------------+------------
 postgres  | 슈퍼유저, 롤 만들기, DB 만들기, 복제, RLS 통과 | {}
 sonarqube | DB 만들기                                      | {}

postgres=# \l
                                  데이터베이스 목록
   이름    |  소유주   | 인코딩 |   Collate   |    Ctype    |       액세스 권한
-----------+-----------+--------+-------------+-------------+-------------------------
 postgres  | postgres  | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 |
 sonarqube | sonarqube | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 | =Tc/sonarqube          +
           |           |        |             |             | sonarqube=CTc/sonarqube
 template0 | postgres  | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 | =c/postgres            +
           |           |        |             |             | postgres=CTc/postgres
 template1 | postgres  | UTF8   | ko_KR.UTF-8 | ko_KR.UTF-8 | =c/postgres            +
           |           |        |             |             | postgres=CTc/postgres
(4개 행)

3. SonarQube DB 설정 및 확인
3. SonarQube DB 설정 및 확인

4. SonarQube Config 설정

이제 구동을 위해서 DB 정보, Web 구동 설정 등 SonarQube Config를 설정하도록 하자.

SonarQube 홈 디렉터리를 보면 config 설정이 있는 conf 디렉터리와 서비스 구동을 위한 bin 디렉터리가 존재한다.

여기서 conf 디렉터리로 접근 하자.

4. SonarQube Config 설정
4. SonarQube Config 설정

4.1 wrapper.conf 설정

이중 먼저 conf 디렉터리에서 wrapper.conf 파일을 열어 java 위치를 설정하기 위해서 우선 java version과 java 디렉터리 위치를 확인하도록 하자.

  • $ java -version
  • $ which java
# Java Version 확인
$ java -version
openjdk version "11.0.14.1" 2022-02-08
OpenJDK Runtime Environment Temurin-11.0.14.1+1 (build 11.0.14.1+1)
OpenJDK 64-Bit Server VM Temurin-11.0.14.1+1 (build 11.0.14.1+1, mixed mode)


# Java 디렉토리 위치 확인
$ which java
/usr/lib/java/bin/java

4.1 wrapper.conf 설정
4.1 wrapper.conf 설정

이제 확인한 java 위치를 wrapper.conf 파일 내 "wrapper.java.command" 항목에 추가하도록 하자.

  • wrapper.java.command : 시스템 내 java 위치
    • wrapper.java.command=/usr/lib/java/bin/java

4.1 wrapper.conf 설정
4.1 wrapper.conf 설정

4.2 sonar.properties 설정

두 번째로 sonar.properties 파일을 열어 DB 및 Web 구동 관련하여 설정을 하도록 하자.

  • sonar.jdbc.username : DB 계정
    • sonar.jdbc.username=sonarqube
  • sonar.jdbc.password : DB 패스워드
    • sonar.jdbc.password=sonarqube
  • sonar.jdbc.url : DB 연결할 경로
    • sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube

4.2 sonar.properties 설정
4.2 sonar.properties 설정

  • sonar.web.javaOpts : Java 구동 시 사용하는 최대 / 최소 메모리 설정
    • sonar.web.javaOpts=-Xmx4096m -Xms2048m -XX:+HeapDumpOnOutOfMemoryError
  • sonar.web.host : 웹 페이지 IP 오픈 설정
    • sonar.web.host=0.0.0.0
    • 0.0.0.0으로 설정 시 All Open(Default 설정)
  • sonar.web.port : 웹 페이지 Port 설정
    • sonar.web.port=9000
    • 9000 Port(Default 설정)

4.2 sonar.properties 설정
4.2 sonar.properties 설정

 

5. SonarQube 구동

이제 설정을 완료하였다면, 구동을 해보도록 하자.

지금까지 root로 설정을 했기 때문에 바로 구동 시 정상적으로 구동이 되지 않을 수 있다.

  • 같이 구동되는 Elasticsearch가 root 계정에서는 구동이 정상적으로 되지 않는다.
  • $ chown -R 계정:그룹 디렉터리 위치

5. SonarQube 구동
5. SonarQube 구동

자 소유자도 변경 하였으니 이제 구동해보자.

SonarQube 홈 디렉터리에서 서비스 구동을 위한 bin 디렉터리로 접근 하자.

이후 본인이 설치한 OS 정보 디렉터리로 접근 하자.

여기서는 CentOS(Linux)에 설치하였으니 "linux-x84-64"로 접근 하자.

5. SonarQube 구동
5. SonarQube 구동

  • $ ./sonar.sh start
# 서비스 구동
$ ./sonar.sh start
Starting SonarQube...
Started SonarQube.

5. SonarQube 구동
5. SonarQube 구동

이제 정상적으로 구동되었으니 웹 브라우저에서 접근해보도록 하자.

# Web 관리자 기본 ID Password
admin / admin

최초 로그인 이후 패스워드 변경 창이 나오고 정상적으로 변경 완료되면 이제 SonarQube에 접근된 것을 확인할 수 있다.

5. SonarQube 구동5. SonarQube 구동5. SonarQube 구동
5. SonarQube 구동

이제 SonarQube 설치를 완료하였다.

다음에는 SonarQube를 사용하는 방법 및 사용하면서 발생하는 내용에 대해서 정리하도록 하겠다.

 

728x90
728x90


🌵댓글

 

loading