Info |
---|
Confluence URL: |
#### 목차
## 데이터베이스설치하기[다양한종류](https://docs.sonarqube.org/display/SONAR/Requirements#Requirements-Requirements-SupportedPlatforms)의데이터베이스를지원합니다. 사용하는데이터베이스에따라아래요구사항을확인합니다. 아래요구사항은권장사항이아닌필수요구사항입니다.Panel | ||||
---|---|---|---|---|
| ||||
|
데이터베이스 설치하기
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](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.jdbc.username`혹은`sonar.jdbc.password`의주석처리가되어있는지확인합니다. 주석처리가되어있지않은경우 SonarQube는 SQL authentication을사용합니다.
sonar.jdbc.url=jdbc:sqlserver://localhost;databaseName=sonar;integratedSecurity=true
SQL authentication을사용하고자하는경우, 아래의컨넥션스트링을사용합니다. `sonar.jdbc.username`, `sonar.jdbc.password`가올바르게설정되어있는지확인합니다.
sonar.jdbc.url=jdbc:sqlserver://localhost;databaseName=sonar
sonar.jdbc.username=sonarqube
sonar.jdbc.password=mypassword
### MySQL
MySQL은 MyISAM, InnoDB의두가지엔진을사용하도록설정할수있습니다. MyISAM은두엔진중보다오래된엔진이며, 점차 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이발생할수있습니다.