웹사이트 검색

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


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

  • 우분투 18.04(Bionic Beaver)
  • 우분투 16.04(Xenial Xerus)

이 페이지에서

  1. 전제 조건
  2. 시작하기\n
  3. 1 자바 설치
  4. 2 Apache 및 MariaDB 설치
  5. 3 MariaDB 구성
  6. 4 SonarQube 설치
  7. 5 Apache를 리버스 프록시로 구성\n
  8. 6 SonarQube 웹 인터페이스 액세스
  9. 결론

SonarQube는 코드 검사를 자동화하는 데 사용할 수 있는 무료 오픈 소스 품질 관리 시스템 플랫폼입니다. 소스 코드 파일을 분석하고 메트릭 집합을 계산하며 웹 기반 대시보드에 결과를 표시할 수 있습니다. Java 언어로 작성되었으며 Perl, PHP 및 Ruby와 같은 다른 언어도 지원합니다. 기본적으로 SonarQube는 h2 데이터베이스를 지원하지만 확장할 수는 없습니다. 따라서 MSSQL, PostgreSQL, Oracle 및 MySQL과 같은 다른 데이터베이스 서버와 SonarQube를 통합할 수 있습니다. SOnarQube는 리포지토리에서 소스 코드를 자동으로 통합하는 많은 플러그인과 함께 제공됩니다. 이를 통해 개발자는 20개 이상의 언어로 버그와 취약성을 감지하고 코드 냄새를 줄일 수 있습니다. SonarLint 플러그인을 통해 SolarQube를 Eclipse, Visual Studio 및 IntelliJ IDEA 개발 환경과 쉽게 통합할 수 있습니다.

이 튜토리얼에서는 Ubuntu 16.04 서버에 SonarQube를 설치하는 방법을 알아봅니다.

전제 조건

  • 시스템에 Ubuntu 16.04 서버를 새로 설치합니다.\n
  • 최소 4GB의 RAM.
  • sudo 권한이 있는 루트가 아닌 사용자.\n

시작하기

시작하기 전에 기본 시스템을 최신 버전으로 업데이트하는 것이 좋습니다. 다음 명령을 실행하여 이를 수행할 수 있습니다.

sudo apt-get update -y
sudo apt-get upgrade -y

시스템을 업데이트한 후 Java 설치를 진행할 수 있습니다.

1 자바 설치

Sonarqube는 Java 기반 애플리케이션이므로 먼저 Java 8을 설치해야 합니다. 기본적으로 Java 8은 Ubuntu 리포지토리에서 사용할 수 없습니다. 시스템에 webupd8team PPA 리포지토리를 추가하여 Java 8을 설치할 수 있습니다.

먼저 다음 명령을 실행하여 PPA를 추가합니다.

sudo add-apt-repository ppa:webupd8team/java

다음으로 다음 명령을 사용하여 저장소를 업데이트합니다.

sudo apt-get update -y

리포지토리가 최신 상태이면 다음 명령을 실행하여 Java 8을 설치할 수 있습니다.

sudo apt-get install oracle-java8-installer -y

Java를 설치한 후 다음 명령을 사용하여 Java 버전을 확인할 수 있습니다.

java -version

다음 출력이 표시되어야 합니다.

Java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

완료되면 다음 단계로 진행할 수 있습니다.

2 Apache 및 MariaDB 설치

리버스 프록시에 Apache를 사용하고 데이터베이스로 MariaDB를 사용하므로 Apache와 MariaDB도 설치해야 합니다. 다음 명령을 실행하여 둘 다 설치할 수 있습니다.

sudo apt-get install apache2 mariadb-server -y

설치가 완료되면 Apache 및 MariaDB 서비스를 시작하고 다음 명령을 사용하여 부팅 시 시작할 수 있도록 활성화합니다.

sudo systemctl start apache2
sudo systemctl enable apache2
sudo systemctl start mysql
sudo systemctl enable mysql

Apache와 MariaDB가 설치되고 작동하면 다음 단계로 진행할 수 있습니다.

3 MariaDB 구성

기본적으로 MariaDB 설치는 보안되지 않으므로 MariaDB 설치를 보호해야 합니다. mysql_secure_installation 스크립트를 실행하여 이를 수행할 수 있습니다.

sudo mysql_secure_installation

이 과정에서 루트 암호를 설정하고, 익명 사용자를 제거하고, 원격으로 루트 로그인을 허용하지 않고, 테스트 데이터베이스를 제거하라는 메시지가 표시됩니다. 아래와 같이 모든 질문에 답하십시오.

Enter current password for root (enter for none):
Change the root password? [Y/n] n
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

MariaDB가 보호되면 다음 명령을 사용하여 MariaDB 셸에 로그인합니다.

mysql -u root -p

메시지가 표시되면 루트 비밀번호를 입력하고 SonarQube용 데이터베이스를 생성합니다.

MariaDB [(none)]> CREATE DATABASE sonardb;

다음으로 새 데이터베이스 사용자를 생성하고 생성한 데이터베이스에 대해 데이터베이스 사용자에게 적절한 권한을 제공합니다.

MariaDB [(none)]> GRANT ALL PRIVILEGES ON sonardb.* TO 'sonar'@'localhost' IDENTIFIED BY 'yourpassword';

다음으로 다음 명령을 사용하여 변경 사항을 데이터베이스 권한에 적용합니다.

MariaDB [(none)]> FLUSH PRIVILEGES;

마지막으로 다음 명령을 사용하여 MariaDB 셸을 종료합니다.

MariaDB [(none)]> \q

데이터베이스가 구성되면 다음 단계로 진행할 수 있습니다.

4 소나큐브 설치

SonarQube의 최신 버전은 공식 웹사이트에서 다운로드할 수 있습니다. wget 명령으로 다운로드할 수 있습니다.

wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.4.zip

다운로드가 완료되면 다음 명령을 사용하여 다운로드한 아카이브의 압축을 풉니다.

sudo unzip sonarqube-6.4.zip -d /opt

그런 다음 다음 명령을 사용하여 디렉터리 이름을 바꿉니다.

sudo mv /opt/sonarqube-6.4 /opt/sonar

다음으로 SonarQube 기본 구성 파일인 sonar.properties를 수정해야 합니다.

sudo nano /opt/sonar/conf/sonar.properties

다음과 같이 변경합니다.

##Database User credentials:
sonar.jdbc.username=sonar
sonar.jdbc.password=yourpassword
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false

파일을 저장하고 닫은 다음 SonarQube용 systemd 서비스 파일을 생성합니다.

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

다음 줄을 추가합니다.

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

[Service]
Type=forking

ExecStart=/opt/sonar/bin/linux-x86-64/sonar.sh start
ExecStop=/opt/sonar/bin/linux-x86-64/sonar.sh stop

User=root
Group=root
Restart=always

[Install]
WantedBy=multi-user.target

완료되면 파일을 저장하고 SonarQube 서비스를 시작하고 다음 명령을 사용하여 부팅 시 시작되도록 활성화합니다.

sudo systemctl start sonar
sudo systemctl enable sonar

SonarQube 프로세스는 데이터베이스 생성 및 데이터 채우기를 완료하는 데 다소 시간이 걸립니다. 다음 명령어로 SonarQube의 상태를 확인할 수 있습니다.

sudo systemctl status sonar

/opt/sonar/logs/sonar.log 파일의 내용을 조사하여 프로세스를 모니터링할 수도 있습니다. 완료되면 다음 단계로 진행할 수 있습니다.

5 Apache를 리버스 프록시로 구성

기본적으로 SonarQube는 포트 9000에서 수신 대기합니다. 여기서는 포트 80을 사용하여 SonarQube에 액세스할 수 있도록 apache를 리버스 프록시로 사용합니다.

먼저 다음 명령을 사용하여 Apache 프록시 모듈을 활성화합니다.

sudo a2enmod proxy
sudo a2enmod proxy_http

다음으로 다음 명령을 사용하여 SonarQube용 새 가상 호스트 파일을 생성합니다.

sudo nano /etc/apache2/sites-available/sonar.conf

다음 줄을 추가합니다.

<VirtualHost *:80>
    ServerName 192.168.15.189
    ServerAdmin 
    ProxyPreserveHost On
    ProxyPass / http://localhost:9000/
    ProxyPassReverse / http://localhost:9000/
    TransferLog /var/log/apache2/sonar_access.log
    ErrorLog /var/log/apache2/sonar_error.log
</VirtualHost>

파일을 저장하고 닫은 후 다음 명령을 실행하여 새 가상 호스트를 활성화합니다.

sudo a2ensite sonar

마지막으로 다음 명령을 사용하여 Apache 서비스를 다시 시작합니다.

sudo systemctl restart apache2

6 SonarQube 웹 인터페이스에 액세스

필요한 모든 구성 요소가 설치 및 구성되었습니다. 이제 SonarQube 웹 인터페이스에 액세스할 시간입니다.

액세스하기 전에 UFW 방화벽을 통해 포트 80을 허용해야 합니다. 기본적으로 UFW는 Ubuntu에서 비활성화되어 있으므로 먼저 활성화해야 합니다. 다음 명령을 실행하여 활성화할 수 있습니다.

sudo ufw enable

UFW 방화벽이 활성화되면 다음 명령을 실행하여 UFW를 통해 포트 80을 허용할 수 있습니다.

sudo ufw allow 80/tcp

이제 다음 명령을 실행하여 UFW 방화벽의 상태를 확인할 수 있습니다.

sudo ufw status

이제 웹 브라우저를 열고 URL http://192.168.15.189로 이동하면 다음 화면이 표시됩니다.

이제 "로그인" 버튼을 클릭하면 다음 화면이 표시됩니다.

기본 사용자 이름 "admin"과 암호 "admin"으로 로그인하면 다음 화면이 표시됩니다.

SonarQube 대시보드에 로그인한 후 Administration > System > System Info 버튼을 클릭합니다. 다음 화면에 현재 시스템 정보가 표시되어야 합니다.

그런 다음 관리 > 시스템 > 업데이트 센터 버튼을 클릭하면 다음 화면에 설치된 모든 플러그인이 표시됩니다.

여기에서 기존 플러그인을 업데이트하고 사용 가능한 플러그인을 설치할 수도 있습니다. 필요한 플러그인을 설치하거나 업데이트한 후 변경 사항을 업데이트하려면 "다시 시작" 버튼을 클릭하여 시스템을 다시 시작해야 합니다.

결론

위의 튜토리얼에서는 Ubuntu 16.04에 SonarQube를 설치하는 방법과 SonarQube의 기본 사용법을 배웠습니다. 이제 프로덕션 환경에서 쉽게 배포할 수 있습니다. 도움이 필요하시면 언제든지 저에게 댓글을 달아주세요.