Jira?

Atlassian사에서 개발한 Issue Tracking System 이며, 프로젝트 스케쥴에 대한 관리도구와 개발원간에 작업을 배분하고 커뮤니케이션하는 도구로 사용 합니다.

JIRA_Architectural_Overview
Figure 1. JIRA Architectural Overview

 

본 문서는 CentOS 6.x 에서 테스트 되었으며, Front-end는 Nginx가 위치하며 Reverse Proxy로 Jira에 연결 해주며,
Jira는 standalone 형태로, RDBMS는 MariaDB로 사용하여 설치를 진행 하였습니다.

 

1. CentOS 설정

– Selinux 비활성화

[root@ruo91 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

 

– iptables HTTP 80번 포트 허용

[root@ruo91 ~]# nano /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

 

– iptables 재시작

[root@ruo91 ~]# service iptables restart
iptables: 방화벽 규칙을 지웁니다: [ OK ]
iptables: 체인을 ACCEPT 규칙으로 설정 중: filter [ OK ]
iptables: 모듈을 언로드하는 중: [ OK ]
iptables: 방화벽 규칙 적용 중: [ OK ]

 

2. Nginx

– Nginx 설치

[root@ruo91 ~]# rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
[root@ruo91 ~]# yum install -y nginx

 

– Reverse Proxy 설정

# Jira
server {
	listen  80;
	server_name jira.yongbok.net;
	
	location / {
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-Host $host;
		proxy_set_header X-Forwarded-Server $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://localhost:8080;
		client_max_body_size 10M;
	}
}

 

– Nginx 시작

[root@ruo91 ~]# service nginx start
nginx (을)를 시작 중: [ OK ]

 

3. MariaDB

– MariaDB repo 추가

[root@ruo91 ~]# nano /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
enabled=0

 

– MariaDB 설치

[root@ruo91 ~]# yum --enablerepo=mariadb install -y MariaDB-server MariaDB-client MariaDB-devel

 

– my.cnf 설정

[root@ruo91 ~]# rm -f /etc/my.cnf.d/*
[root@ruo91 ~]# ln -s /usr/share/mysql/my-huge.cnf /etc/my.cnf.d/mariadb.cnf

 

– MariaDB 실행

[root@ruo91 ~]# service mysql start
Starting MySQL......... SUCCESS!

 

– MariaDB root 비밀번호 설정

[root@ruo91 ~]# mysqladmin -u root password '비밀번호'

 

– Jira 사용자 및 데이터베이스 생성

[root@ruo91 ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 4
Server version: 5.5.33a-MariaDB-log MariaDB Server
Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
MariaDB [(none)]> CREATE DATABASE jira CHARACTER SET utf8;
MariaDB [(none)]> CREATE USER 'jira'@'127.0.0.1' IDENTIFIED BY '비밀번호';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON jira.* TO 'jira'@'127.0.0.1';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

 

4. Jira

– Jira 사용자 추가

[root@ruo91 ~]# adduser jira
[root@ruo91 ~]# passwd jira
jira 사용자의 비밀 번호 변경 중
새 암호:
새 암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.
[root@ruo91 ~]# su - jira

 

– JDK 설치

[jira@ruo91 ~]$ curl -LO "http://download.oracle.com/otn-pub/java/jdk/7u55-b13/jdk-7u55-linux-x64.tar.gz" \
-H 'Cookie: oraclelicense=accept-securebackup-cookie'
[jira@ruo91 ~]$ tar xzvf jdk-7u55-linux-x64.tar.gz && rm -f jdk-7u55-linux-x64.tar.gz
[jira@ruo91 ~]$ mv jdk1.7.0_55 jdk
[jira@ruo91 ~]$ echo '# JDK' >> $HOME/.bash_profile
[jira@ruo91 ~]$ echo 'export JAVA_HOME=$HOME/jdk' >> $HOME/.bash_profile
[jira@ruo91 ~]$ echo 'export PATH=$PATH:$JAVA_HOME/bin' >> $HOME/.bash_profile
[jira@ruo91 ~]$ source $HOME/.bash_profile

 

– Jira 다운로드

https://www.atlassian.com/software/jira/download

[jira@ruo91 ~]$ wget http://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-6.2.6.tar.gz
[jira@ruo91 ~]$ tar xzvf atlassian-jira-6.2.6.tar.gz && rm -f atlassian-jira-6.2.6.tar.gz
[jira@ruo91 ~]$ mv atlassian-jira-6.2.6-standalone jira

 

– Jira 홈디렉토리 설정

[jira@ruo91 ~]$ mkdir $HOME/jira_home
[jira@ruo91 ~]$ sed -i "/^\#JIRA_HOME/ s:.*:JAVA_HOME=$HOME/jdk \&\& JIRA_HOME=$HOME/jira_home:" $HOME/jira/bin/setenv.sh
[jira@ruo91 ~]$ sed -i "/^jira.home/ s:.*:jira.home=$HOME/jira_home:" $HOME/jira/atlassian-jira/WEB-INF/classes/jira-application.properties

 

– Jira Base URL

[jira@ruo91 ~]$ nano $HOME/jira/conf/server.xml
    <Service name="Catalina">
        <Connector port="8080"
                   maxThreads="150"
                   minSpareThreads="25"
                   connectionTimeout="20000"
                   enableLookups="false"
                   maxHttpHeaderSize="8192"
                   protocol="HTTP/1.1"
                   useBodyEncodingForURI="true"
                   redirectPort="8443"
                   acceptCount="100"
                   disableUploadTimeout="true"
                   scheme="http"
                   proxyName="jira.yongbok.net"
                   proxyPort="80"
        />

 

– MySQL JDBC Driver

https://mariadb.com/kb/en/about-the-mariadb-java-client/

[jira@ruo91 ~]$ wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.30.tar.gz
[jira@ruo91 ~]$ tar xzvf mysql-connector-java-5.1.30.tar.gz
[jira@ruo91 ~]$ mv mysql-connector-java-5.1.30/mysql-connector-java-5.1.30-bin.jar $HOME/jira/lib
[jira@ruo91 ~]$ rm -rf mysql-connector-java*

 

– Jira 실행

[jira@ruo91 ~]$ $HOME/jira/bin/start-jira.sh
To run JIRA in the foreground, start the server with start-jira.sh -fg
executing as current user
                .....
          .... .NMMMD.  ...
        .8MMM.  $MMN,..~MMMO.
        .?MMM.         .MMM?.

     OMMMMZ.           .,NMMMN~
     .IMMMMMM. .NMMMN. .MMMMMN,
       ,MMMMMM$..3MD..ZMMMMMM.
        =NMMMMMM,. .,MMMMMMD.
         .MMMMMMMM8MMMMMMM,
           .ONMMMMMMMMMMZ.
             ,NMMMMMMM8.
            .:,.$MMMMMMM
          .IMMMM..NMMMMMD.
         .8MMMMM:  :NMMMMN.
         .MMMMMM.   .MMMMM~.
         .MMMMMN    .MMMMM?.

      Atlassian JIRA
      Version : 6.2.6

Detecting JVM PermGen support...
PermGen switch is supported. Setting to 384m

If you encounter issues starting or stopping JIRA, please see the Troubleshooting guide at http://confluence.atlassian.com/display/JIRA/Installation+Troubleshooting+Guide


Server startup logs are located in /home/jira/jira/logs/catalina.out
Using CATALINA_BASE:   /home/jira/jira
Using CATALINA_HOME:   /home/jira/jira
Using CATALINA_TMPDIR: /home/jira/jira/temp
Using JRE_HOME:        /home/jira/jdk
Using CLASSPATH:       /home/jira/jira/bin/bootstrap.jar:/home/jira/jira/bin/tomcat-juli.jar
Using CATALINA_PID:    /home/jira/jira/work/catalina.pid

 

– Web UI

http://your-domain.com/ or http://your-domain.com:8080/

* 데이터베이스 설정
첫 화면에서는 데이터베이스에 대한 정보를 입력 하는 페이지 입니다. 적절하게 설정 하시고 다음 단계로 넘어 갑니다.

jira_0

 

* 데이터베이스 설치
데이터베이스와 연결이 성립 되면 jira에 관련 된 데이터베이스를 설치하는 과정이 진행 됩니다. 시스템에 따라서 최대 몇분이상 소요 될수 있습니다.

jira_1

 

* 어플리케이션 등록 설정
적절하게 수정 합니다.

jira_2
* Jira 계정 등록 및 License Key 등록
Jira 계정이 없는 경우 “I don’t have an account”를 눌러 계정 등록을 하시고, 계정은 이미 존재하나 License Key가 없는 경우 “I have an account but no key”를 선택, 계정도 있고 License Key도 가지고 있다면 “I have a key”를 눌러 진행 하시면 됩니다.

jira_3
* Jira 관리자 계정 설정
Jira에서 사용할 관리자 계정 설정에 대한 부분입니다. 적절하게 변경 해줍니다.

jira_4
* 이메일 알람 설정
이메일로 알람을 받을건지 설정하는 부분입니다. 나중에 설정해도 되는 문제이므로 Later를 선택 하겠습니다.

jira_5
* DashBoard 화면
위 과정을 올바르게 진행 해왔다면 보이는 화면입니다. 이제 용도에 맞게 사용하시면 됩니다.

jira_6