Friday, September 26, 2014

TURN 서버 설치

TURN 서버란?
TURN 서버는 Traversal Using Relays around NAT의 줄임말로 간단히 이야기 하자면 미디어 스트림을 Relay하는 Relay Server입니다. TURN 서버는 STUN 서버와 같이 WebRTC 어플리케이션에서 Firewall/NAT 문제를 해결할 때 사용되며 TURN 서버의 프로토콜에 대한 자세한 사항은 RFC 5766에 기술되어 있으니 참조바랍니다. (http://tools.ietf.org/html/rfc5766)

  • TURN 서버 설치 전에 필요한 것
    • CentOS 6.5 (64-bit)가 설치된 시스템 (또는 VM)
    • 최신 버전의 'libevent' 라이브러리 다운로드, 빌드, 인스톨
      • Download libevent from its github: https://github.com/libevent/libevent
      • tar xvfz libevent-[latest-version].tar.gz
      • cd libevent-[latest-verstion]
      • ./configure
      • make
      • make install 
  • TURN 서버 다운로드
    • 웹사이트: https://code.google.com/p/rfc5766-turn-server/wiki/newDownloadsSite?tm=2
    • 예: turnserver-3.2.3.94-CentOS6.5-x86_64.tar.gz (이 블로그에서는 이 패키지를 사용해서 설명하겠습니다.)

  • TURN 서버 빌드와 인스톨
    • 다운로드 받은 패키지를 '/opt' 폴더로 이동 후 압축해제
      •  mv turnserver-3.2.3.94-CentOS6.5-x86-64.tar.gz /opt
      • tar xvfz turnserver-3.2.3.94-CentOS6.5-x86-64.tar.gz
    • 압축을 푼 패키지의 폴더로 이동한 후 TURN 서버를 인스톨
      • cd turnserver-3.2.3.94-CentOS6.5-x86-64
      • ./install.sh
  • Long term credential 정보 추가
    • '/etc/turnserver/' 폴더에 생성된 'turnuserdb.conf' 파일에 'long term credential' (긴 기간 인증) 정보를 추가 (아래의 turnuserdb.conf 예 참조)
  • TURN 서버 시작
    • TURN 서버를 아래와 같은 옵션과 함께 시작
      • turnserver -v -a -r -n --userdb=/etc/turnserver/turnuserdb.conf
  • Sources
  • turnuserdb.conf의 예

#This file can be used as user accounts storage for long-term credentials 
#mechanism.
#
#username1:key1
#username2:key2
# OR:
Isley:abcd1234
#username1:password1
#username2:password2
#
# Keys must be generated by turnadmin utility. The key value depends
# on user name, realm, and password:
#
# Example:
# $ turnadmin -k -u ninefingers -r north.gov -p youhavetoberealistic
# Output: 0xbc807ee29df3c9ffa736523fb2c4e8ee
# ('0x' in the beginning of the key is what differentiates the key from
# password. If it has 0x then it is a key, otherwise it is a password).
#
# The corresponding user account entry in the userdb file will be:
#
#ninefingers:0xbc807ee29df3c9ffa736523fb2c4e8ee
# Or, equivalently (less secure):
#ninefingers:youhavetoberealistic
#



Friday, September 19, 2014

SonarQube 설치 (CentOS 6.5 64-bit)

  1. SonarQube 설치 전에 필요한 것
    1. CentOS 6.5 (64-bit)가 설치된 시스템 (또는 VM)
    2. Java 설치 (최소 1.6 버전 이상)
  2. SonarQube 설치
    1. http://www.sonarqube.org/downloads 에서 최신 버전 다운로드 (이 포스트에서는 4.3.2 버전이 사용되었습니다.)
    2. 압축을 푼 후 '/opt' 폴더로 이동
  3. PostgreSQL 설치 
    1. SonarQube를 사용하기 위해서는 기본적으로 DB가 설치 되어 있어야 하며 이 포스트에서는 PostgreSQL을 사용하도록 하겠습니다. 
    2. Dependency 관련 문제 발생을 막기 위해 '/etc/yum.repos.d/CentOS-Base.repo' 파일에 있는 '[base]' 부분과 '[update]' 부분에 아래의 라인을 추가.
      1. exclude=postgresql*
    3. CentOS 6 64-bit 버전용 PostgreSQL 9.3의 PGDG RPM 파일 인스톨
      1. yum localinstall http://yum.postgresql.org/9.3/redhat/
        rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm
      2. 추가설명: 이 버전은 2014년 9월 현재 가장 최신 버전이며 만약 더 나중 버전이
        나왔다면 그 버전의 RPM 파일을 인스톨 하시기 바랍니다. 
    4. PostgreSQL 인스톨
      1. 아래의 명령어를 이용해서 인스톨 가능한 poastgreSQL 패키지들을 출력한 후
        1. yum list postgres*
      2. 가장 최근의 stable한 버전의 PostgreSQL 패키지를 찾아서 인스톨하면 됩니다.
        예를 들어 가장 기본적인 PostgreSQL 9.3 Server 패키지를 인스톨하려고 한다면
        아래의 명령어를 실행하세요. 
        1. yum install postgresql93-server
  4. PostgreSQL JDBC 드라이버 다운로드
    1. 웹사이트 (https://wiki.postgresql.org/wiki/YUM_Installation)에서 JDBC4
      Postgresql 드라이버를 다운로드하세요.
    2. 다운로드 받은 드라이버를 '/opt/sonarqube-4.3.2/extensions/jdbc-driver/postgresql' 폴더로 옮기고 기존에 있던 'postgresql-[version].jebc4.jar' 파일은 삭제를 하세요. (참고로 sonarqubu-4.3.2는 postgresql-9.1-901-1.jdbc4.jar를 기본으로 포함하고 있습니다.)
  5. 'root' 아이디로 'sonar' 아이디 생성
    1. adduser sonar
      passwd sonar
      New password: sonar
      Retype new password: sonar
  6. 'sonarqube' 폴더의 owner를 새로 생성한 'sonar'로 변환
    1. chown -R sonar /opt/sonarqube-4.3.2
  7. PostgreSQL 셋팅 설정
    1. PostgreSQL 설정 파일을 다른 네트워크나 웹서버에서 유저 아이디와 패스워드를 이용해서 접속할 수 있도록 변경
      1. vim /var/lib/pgsql/9.3/data/pg_hba.conf
      2. pg_hba.conf 파일의 'local'과 'host'의 method 부분을 아래와 같이 'trust'로 변경
      3. local all all              trust
        host  all all 127.0.0.1/32 trust
    2. PostgreSQL 서비스를 시작하고 유저를 'postgres'로 변경
      1. service postgresql-9.3 start
        su - postgres
    3. PostgreSQL에 접속(실행)한 후 PostgreSQL 안에서 새 유저 sonar를 생성한 후 실행 종료
      1. psql
        postgres=# CREATEUSER -d sonar;
        postgres=# CREATE DATABASE sonar OWNER sonar;
        postgres=# ALTER USER sonar SET search_path to sonar;
        postgres=# \q
    4. 리눅스 시스템에서 유저를 'sonar'로 변경한 후 PostgreSQL을 다시 실행하고 'sonar' 스키마를 생성
      1. su - sonar
        psql
        sonar=# CREATE SCHEMA sonar;
        sonar=# \q
  8. SonarQube 셋팅 설정
    1. '/opt/sonarqube-4.3.2/conf/sonar.properties' 에 있는 파일에 있는 데이터베이스 관련 설정을 아래와 같이 변경
      1. sonar.jdbc.username=sonar
        sonar.jdbc.password=sonar
        sonar.jdbc.url=jdbc:postgresql://localhost/sonar
  9.  SonarQube 서비스 시작
    1. /opt/sonarqube-4.3.2/bin/sonar.sh start
  10. SonarQube의 웹 UI 화면 Access
    1. 웹브라우저에서 http://localhost:9000 을 입력하면 아래와 같은 화면이 나옵니다. 

  11. Troubleshooting
    1. Firewall 문제
      1. 만약 웹 UI에 접속이 안된다면 리눅스 시스템의 Firewall을 아래의 리눅스 커맨드를 이용해서 disable한 후에 다시 시도하세요
        1. service iptables stop
  12. Sources
    1. http://docs.codehaus.org/display/SONAR/Requirements
    2. https://wiki.postgresql.org/wiki/YUM_Installation
    3. http://www.cyberciti.biz/faq/psql-fatal-ident-authentication-failed-for-user/ 
    4. http://docs.codehaus.org/display/SONAR/Installing