Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Info

Confluence URL: Installing the Server



Panel
borderColor#888888

Table of Contents
indent16px


데이터베이스 설치하기

SonarQube는 다양한 종류의 데이터베이스 엔진을 지원합니다. 사용하고자 하는 데이터베이스에 따라 다음 요구사항(필수)을 확인합니다.

데이터베이스스키마하나와 sonarqube 사용자하나를생성합니다. sonarqube 사용자는스키마의오브젝트 (create), 업데이트(update) 삭제(delete) 권한을가져야합니다. 데이터베이스의문자셋은 "UTF-8", 언어(데이터베이스사용자) "English"설정해야합니다.

Microsoft SQL Server

Collation반드시대소문자구분(CS) 액센트구분(AS)설정되어야합니다.

통합된보안정책을사용하고자 하는 경우, http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774에서 Microsoft SQL JDBC Driver 4.2 패키지를다운로드한뒤, `sqljdbc_auth.dll`원하는경로에복사합니다. 사용하는서버머신에따라 x86 혹은 x64 버전의 dll복사해야합니다.

SoanrQube윈도우서비스로운영하면서통합된보안정책을사용하고자 하는 경우, 서비스를 실행하는 윈도우 계정이 SQL Server대한접근권한을가지고있는지확인합니다. 해당 계정은 db_owner 데이터베이스권한가지고있어야합니다.

커맨드 라인 명령어로 SonarQube를 실행하면서 통합된 보안 정책을 사용하고자 하는 경우, 해당 계정 역시 db_owner 데이터베이스 권한을 가지고 있어야 합니다. 이와 함께 ```sonar"sonar.jdbc.username``` 혹은 username" 혹은 "sonar.jdbc.password의 주석처리가 password" 속성이 주석 처리가 되어 있는지 확인합니다. 주석처리가 되어 있지 (sonar.properties). 주석 처리를 하지 않은 경우, SonarQube는 SQL authentication을 사용합니다.

Code Block
sonar.jdbc.url=jdbc:sqlserver://localhost;databaseName=sonar;integratedSecurity=true

SQL authentication사용하고자하는경우, 아래의컨넥션스트링을사용합니다.

`sonar

"sonar.jdbc.

username`

username",

`sonar

"sonar.jdbc.

password`

password"올바르게설정되어있는지확인합니다.

Code Block
sonar.jdbc.url=jdbc:sqlserver://localhost;databaseName=sonar

sonar.jdbc.username=sonarqube

sonar.jdbc.password=mypassword
###

MySQL

MySQL MyISAM, InnoDB가지엔진을사용하도록설정할있습니다. MyISAM엔진보다오래된엔진이며, MyISAM은 InnoDB에 비해 오래된 엔진으로, 점차 InnoDB바뀌어가는 변경되는 추세입니다. InnoDB MyISAM SonarQube에서분석하는프로젝의수가증가할때도속도가빠르며스케일링이됩니다. 여러분이 SonarQube초기부터사용했다면여전히 MyISAM 엔진을사용하는테이블들을가지고있을있습니다. SonarQube성능을개선하기위해모든테이블들을 InnoDB 엔진으로변경해야합니다

SonarQube사용하는모든테이블들이 InnoDB 엔진을사용하도록변경하고나면, 다음으로가장ㅁ먼저  `innodb_buffer_pool_size`파리미터를변경헤 MySQL최대한의 RAM할당하고`query_cache_size`파라미터에 15MB설정합니다. 보다자세한내용은[InnoDB 성능최적화](http://www.mysqlperformanceblog.com/2007/11/01/innodb-performance-optimization-basics/)참조합니다.


### Oracle


하나의  Oracle 인스턴스에개의 SonarQube 스키마를가진경우--특히스키마의버전이서로다른경우--SonarQube가장먼저탐색된스키마를선택합니다. 문제점은아래의방법으로해결합니다:


- SonarQube Oracle 사용자에게할당된 priviledges제거하거나

- Oracle자동으로새로운컨텍션을만들경우 SonarQube Oracle 사용자를변경하도록합니다


ALTER SESSION SET current_schema="MY_SONARQUBE_SCHEMA"


(WARN) 드라이버버전


Oracle 드라이버 12.1.0.1 12.1.0.2 버전은주요한오류를포함하고있어 SaonrQube 에코시스템과의사용을권장하지않습니다([세부내용참고](https://groups.google.com/d/msg/sonarqube/Ahqt1iarqJg/u0BVRJZnBQAJ)).


### PostgreSQL


"public"아닌커스텀스키마를사용하고자하는경우, PostgreSQL`search_path`속성은다음과같이설정해야합니다:


ALTER USER mySonarUser SET search_path to mySonarQubeSchema


## 서버설치하기


먼저. [요구사항](https://docs.sonarqube.org/display/SONAR/Requirements)확인합니다.


다음으로[배포패키지](http://www.sonarqube.org/downloads/)다운로드받아압축을풉니다(숫자로시작하는디렉토리명을사용하지마십시오). [네이티브패키지](http://sonar-pkg.sourceforge.net/)리눅스용으로도배보하고있습니다.


_<install\_directory>_ SonarQube 배포패키지의압축이풀린디렉토리를의미합니다.


### 데이터베이스접근권한설정하기


_<install\_directory>_/conf.sonar.properties에서데이터베이스를설정합니다. 지원하는모든데이터베이스에대한설정템플릿을제공합니다. 사용하고자하는데이터베이스와관련된설정템플릿의주석을해제하고 H2 데이터베이스와관련된설정내용을주석처리합니다:


#### Example for PostgreSQL


sonar.jdbc.username=sonarqube

sonar.jdbc.password=mypassword

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


### JDBC 드라이버추가하기


지원하는데이터베이스(Oracle 제외)관련된드라이버는 SonarQube 패키지에번들되어있습니다. 번들된드라이버만정상동작하므로, 해당드라이버를변경해서는안됩니다.


Oracle사용할경우 _<install\_directory>_/extensions/jdbc-driver/oracle 드라이버를복사합니다.


### 서버시작하기


기본포트는 "9000"이고, 기본 context 경로는 "/"입니다. 값은  _<install\_directory>_/conf/sonar.properties에서변경할있습니다:


#### sonar.properties


sonar.web.host=192.0.0.1

sonar.web.port=80

sonar.web.context=/sonar


다음스크립트를실행새서버를시작합니다:


- Linux/Mac OS: bin/\<YOUR OS>\/sonar.sh start

- On Windows: bin/windows-x86-XX/StartSonar.bat



브라우저에서 http://localhost:9000으로 SonarQube접속할있습니다 (기본 System administrator 계정은 admin, 비밀번호는 admin입니다).


### 서버튜닝하기


기본적으로 SonarQube단순한하나의 Java JRE설치된컴퓨터에서실행되도록설정되어있습니다.


성능개선을원하는경우, SonarQube 인스턴스를설치하면서가장먼저해야할일은 Java JDK사용하는것과 _<install¥_directory>_/conf/sonar.properties수정해서버모드를활성화하는것입니다:


sonar.web.javaOpts=-server


SonarQube사용하는 Java JVM변경하고자경우, _<install\_directory>_/conf/wrapper.conf다음라인을변경합니다:


wrapper.java.command=/path/to/my/jdk/bin/java


### 설치관련고급기능


- Windows 혹은 Linux에서 SonarQube Servie작동하기

- Proxy 뒤에서 Sonarqube운용하기


## 다음


서버설치가정상적으로완료되었다면, 원하는[플러그인을설치](https://docs.sonarqube.org/display/SONAR/Installing+a+Plugin)있습니다. 원하는플러그인을설치했다면언제든지[소스코드를분석](https://docs.sonarqube.org/display/SONAR/Analyzing+Source+Code)시작할있습니다.


## 트러블슈팅 / 자주하는질문


#### 서버 / 연산엔진 / 엘라스틱서치에더욱많은메모리할당 (Grant more memory to the web server / compute engine / elastic search)


서버사이드프로세스에많은메모리를할당하고자하는경우, $SONARQUBE_HOME/conf/sonar.properties 파일에서관련된`javaOpts`속성을편집합니다:


- sonar.web.javaOpts (최소값: -server -Xmx768m)

- sonar.ce.javaOpts

- sonar.search.javaOpts


#### MySQL 데이터베이스에접속불가 (Cannot connect to MySQL database)


기본적으로 MySQL 데이터베이스서버에원격으로접속하는것은보안상의이유로활성화되어있지않습니다. 데이터베이스서버에원격으로접속하고자하는경우, 링크된[가이드(영문)](http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html)참조합니다.


#### Windows Vista에서구동실패 (Failed to start on Windows Vista)


SonarQube Windows Vista _Program Files_ 디렉토리아래설치된경우, 정상적으로시작되지않을있습니다. 해당디렉토리를사용하지않을것을권장합니다.



#### 잘못된 USERS 테이블구조로인해 SonarQube Oracle 데이터베이스사용시구동실패 (Failed to start SonarQube with Oracle due to bad USERS table structure)


다른 USERS 테이블이 Oracle 데이터베이스에존재하고, sonarqube 사용자가다른 USERS 테이블에읽기권한을가지고있는경우 SonarQube 웹서버는다음과같인예외를발생하며구동하지않습니다:


ActiveRecord::ActiveRecordError: ORA-00904: "TOTO": invalid identifier

: INSERT INTO users (login, name, email, crypted_password, salt, 

created_at, updated_at, remember_token, remember_token_expires_at, toto, id)

VALUES('admin', 'Administrator', '', 'bba4c8a0f808f9798cf8b1c153a4bb4f9178cf59', '2519754f77ea67e5d7211cd1414698f465aacebb',

TIMESTAMP'2011-06-24 22:09:14', TIMESTAMP'2011-06-24 22:09:14', null, null, null, ?)

ActiveRecord::ActiveRecordError: ORA-00904: "TOTO": invalid identifier

 

: INSERT INTO users (login, name, email, crypted_password, salt, 

created_at, updated_at, remember_token, remember_token_expires_at, toto, id)

VALUES('admin', 'Administrator', '', 'bba4c8a0f808f9798cf8b1c153a4bb4f9178cf59', 

'2519754f77ea67e5d7211cd1414698f465aacebb', TIMESTAMP'2011-06-24 22:09:14', TIMESTAMP'2011-06-24 22:09:14', null, null, null, ?)


문제를수정하기위해서는 sonarqube Oracle 사용자가다른 USERS 테이블을읽을있는권한을제거해야합니다.


#### 프록시를통해 Update Cetner 접근실패 (Failed to connect to the Update Center via proxy)


SONARQUBE_HOME/conf/sonar.properties 파일의프록시설정이올바른지확인합니다

프록시 username "\"(백슬래시) 문자가포함된경우, 특수문자처리를해주어야합니다예를들어 username "domain\user"경우, 아래와같이설정합니다:


http.proxyUser=domain\\user


일부프록시의경우, 잘못된 username 혹은 password 설정의원인으로`"java.met.ProtocolException: Server redirected too many times"` exception발생할있습니다.