[오픈소스컨설팅] atlassian webinar 기본 트러블슈팅(1 of 2)

27
아아아아아 아아아 [ 아아 아아 ] 03:00 아아아아아 아아 아아아아아 04:00 아아 아아 아아 아아아아 아아아아아아 아아

Upload: osc-osc

Post on 22-Feb-2017

778 views

Category:

Software


9 download

TRANSCRIPT

아틀라시안 웨비나[진행 순서 ]

03:00 아틀라시안 기본 트러블슈팅04:00 우리 회사 업무 시스템과 아틀라시안의 만남

아틀라시안 기본 트러블슈팅 1/2

오픈소스컨설팅 정명훈 이사 ([email protected])

3

아틀라시안 제품 (Jira, Confluence, Crowd 등 ) 설치부터 , 운영 , 유지보수까지 일련의 과정 확인

각 과정에서 고려해야 할 사항들과 부딪힐 수 있는 기술적 이슈들에 대한 고찰

아틀라시안 제품을 제대로 써보자 !!

개요 및 목표

4

애플리케이션 개발 라이프싸이클 관리

문서 관리

프로젝트 포탈( 이슈 및 일정 관리 )

소스 형상관리

소스 리뷰

소스 변경 추적

코드 품질 관리

코드 동적 분석

개발 서버

Project Manager

라이브러리 관리

실행 / 테스트 코드

개발자

코드 정적 분석

개발툴

요구사항산출물

이슈에 따른소스 수정변경 내용저장

Reviewer

고객

전체 프로젝트관리

QA/Test

빌드 및 배포

5

애플리케이션 개발 라이프싸이클 관리 + SSO 및 계정 관리LDAP 계정

Database( 계정정보 )

통합 계정 관리

계정정보

설치부터 유지보수까지

7

(1) 설치

(2) 서비스 기동

(3) 웹서버 연동 (Proxying)

(4) SSL 설정

(5) 한글팩 적용 및 각종 한글 관련 설정

(6) Crowd( 또는 Jira) 이용한 사용자 관리

(7) Jira 프로젝트 및 대시보드 생성

(8) 프로젝트 관리 및 사용자 권한 설정

(9) Confluence Wiki 스페이스 생성

(10) 유지보수

(11) Plugin/API 확장을 통한 업무시스템 연동

8

(1) 설치

(2) 서비스 기동

(3) 웹서버 연동 (Proxying)

(4) SSL 설정

(5) 한글팩 적용 및 각종 한글 관련 설정

(6) Crowd( 또는 Jira) 이용한 사용자 관리

(7) Jira 프로젝트 및 대시보드 생성

(8) 프로젝트 관리 및 사용자 권한 설정

(9) Confluence Wiki 스페이스 생성

(10) 유지보수

(11) Plugin/API 확장을 통한 업무시스템 연동

9

Atlassian 각 제품 설치 Jira Linux: https://confluence.atlassian.com/jira/installing-jira-on-linux-191501165.html Jira Window: https://confluence.atlassian.com/jira/installing-jira-on-windows-191501140.html Confluence Linux:

https://confluence.atlassian.com/doc/installing-confluence-on-linux-143556824.html Confluence Window:

https://confluence.atlassian.com/doc/installing-confluence-on-windows-255362047.html

(1) 설치 – 가이드에 따라서 10 분이면 OK

플랫폼 별 , 버전 별 가이드 한 군데 정리되어 있어 편리

10

기본 설치 위치 : /opt/atlassian/< 제품명 >Home( 데이터 ) 디렉토리 : 통상 /var/atlassian/application-data/< 제품명 > 제품 업그레이드 시 , 새로운 버전 설치 후에도 데이터 재 사용 하기 위함

Tomcat 기본 내장 Jira 의 경우 <JIRA>/bin/catalina.sh, setup.sh 등

- 예를 들어 Java 프로세스에 대한 Garbage Collection 정보를 보고 싶으면 setenv.sh 에JVM_EXTRA_ARGS="-XX:+PrintGCDateStamps -XX:-OmitStackTraceInFastThrow -verbose:gc"

Crowd 의 경우 <CROWD>/apache-tomcat 디렉토리 아래 conf/server.xml 에서 제품의 기본 Listen Port 수정 가능

- 예 : <Connector port="8080"> logs/ 디렉토리에 각종 Tomcat 로그 파일

- catalina.out, access.log <JIRA>/bin/config.sh : 각종 JIRA 관련 설정 , DB, Connection Pool 등

- https://confluence.atlassian.com/jira/using-the-jira-configuration-tool-214865525.html

(1) 설치 – 제품 디렉토리 구조

동영상 : https://youtu.be/yBpFC8CtPhE

11

Setup Wizard 제품 설치 후 최초 구성을 하는 과정 주로 설치 관련 문제 발생 시 , 구성 Reset 목적

Jira <JIRA Home>/dbconfig.xml 삭제 후 Jira 재 시작 https://confluence.atlassian.com/jira060/restarting-jira-from-the-setup-wizard-37070

5059.html

Confluence <Confluence Home>/confluence.cfg.xml 삭제 후 Confluence 재 시작 https://confluence.atlassian.com/confkb/how-to-restart-the-setup-wizard-after-install

ing-confluence-179443224.html

Crowd <Crowd Home> 디렉토리 삭제 후 Crowd 재 시작 https://confluence.atlassian.com/display/CROWD/Restarting+the+Setup+Wizard+fr

om+Scratch

(1) 설치 – Setup Wizard 재 실행

동영상 : https://youtu.be/snsubv0D0FQ

12

제품 시작 / 중단 스크립트 start-OOOO.sh : 제품 설치 시 만들어진 계정 ( 예 : Jira 의 경우 jira) 으로 시작 startup.sh : 스크립트를 실행하는 Shell 에 로그인 된 계정으로 시작 ( 비 권고 )

운영체제 서비스 사용 sudo service jira( 또는 제품 명 ) start/stop 만약 존재하지 않으면 다음과 같이 /etc/init.d 에 스크립트 생성 (RHEL/CentOS

기준 )

(2) 서비스 기동

[osc@atldemo74 /opt/atlassian/jira/bin]$ cat /etc/init.d/crowd#!/bin/bash

# Crowd Linux service controller scriptcd "/opt/crowd"

case "$1" in    start)        ./start_crowd.sh        ;;    stop)        ./stop_crowd.sh        ;;    *)        echo "Usage: $0 {start|stop}"        exit 1        ;;esac

동영상 : https://youtu.be/wYM5Q2FdNzE

13

HTTP Proxy 설정의 목적 Atlassian 제품의 특성 상 , Add-On 설치 등을 위해 Market Place 등 접속 회사 정책 상 , Proxy 를 통한 후회 접속만 허용하는 경우

다음과 같은 옵션 시작 스크립트에 추가

Jira 의 경우 <JIRA>/bin/setenv.sh 의 CATALINA_OPTS Confluence 의 경우 <Confluence>/bin/setenv.sh 의 CATALINA_OPTS Crowd 의 경우 <Crowd>/apache-tomcat/bin/setenv.sh 의 CATALINA_OPTS 참고 :

https://confluence.atlassian.com/jirakb/how-to-configure-an-outbound-http-and-https-proxy-for-jira-applications-247857187.html

참고로 JAVA_OPTS 는 프로세스 시작 , 종료 시에도 사용되는 옵션 , CATALINA_OPTS 는 Tomcat 프로세스 기동 시에만 사용되는 옵션

(2) 서비스 기동 – HTTP Proxy 설정

-Dhttp.proxyHost=proxy.example.org -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy.example.org -Dhttps.proxyPort=8080 -Dhttp.nonProxyHosts=localhost

14

웹서버 연동 다음 페이지 " 웹서버 연동 아키텍처 예시 " 참고 보안성 강화 및 운영 편의성 ( 예 : 부하 조절 ) 향상

Apache HTTPD 설정 다음 구성을 /etc/httpd/conf.d/vhost.conf 에 추가 (conf.d 아래의 구성은 자동 포

함 ) VirtualHost 기능

- 여러 개의 Atlassian 제품들을 하나의웹서버에서 Domain URL 을 구분하여 연결

Atlaissna 제품 연결- 웹서버와 동일 서버의 경우

localhost 주소 사용- 원격일 경우 원격 IP 주소 사용

(3) 웹서버 연동 (Proxying) – Apache HTTPD 연결

<VirtualHost *:80>        DocumentRoot "/var/www/html"        ServerName atl74-jira.osci.kr

        ProxyPass         /  http://localhost:8080/        ProxyPassReverse  /  http://localhost:8080/

</VirtualHost>

<VirtualHost *:80>        DocumentRoot "/var/www/html"        ServerName atl74-wiki.osci.kr

        ProxyPass         /  http://localhost:8090/        ProxyPassReverse  /  http://localhost:8090/</VirtualHost>

동영상 : https://youtu.be/yAanKxR0lgc

15

방화벽

JIRA

MySQL(jiradb)

웹서버 연동 아키텍처 예시

Apache HTTPDmod_proxy

Crowd

MySQL(crowd)

Conflu-ence

MySQL(conflu-ence)

방화벽

DMZ 구간

16

Apache HTTPD 트러블슈팅 SELinux 옵션으로 인한 문제

- SELinux 가 활성화 되어 있으면 웹서버에서 원격 Atlassian 서버로 Proxy 제한- 다음 두 가지 방법 중 하나 적용 (RHEL/CentOS 기준 )- 웹서버 디버그 로그 활성화하면

에러 메시지 확인 가능

Atlassian 서버쪽 Linux Firewall 제한으로 인한 문제- 다음 명령으로 파이어월 개방

웹서버 로그 분리- 웹서버의 로그 (/var/log/httpd/) 를 확인- 다음과 같이 로그를 제품 별로 분리해서

남김

기타 문제 디버깅- 가장 확실한 방법은 tcpdump 명령을

통해 웹서버 요청이 Atlassian 쪽으로전달되는지 확인하는 방법

(3) 웹서버 연동 (Proxying) – Apache HTTPD 트러블슈팅

(1) sudo setsebool -P httpd_can_network_connect 1 (2) /etc/sysconfig/selinux" 파일에서 아래와 같이 설정하여 SELinux 기능을 OFF

SELINUX=permissive

sudo firewall-cmd --permanent --zone=public --add-port=8080/tcpsudo firewall-cmd --permanent --zone=public --add-port=8090/tcp…sudo firewall-cmd --reload

<VirtualHost *:80>  ...  ErrorLog "|/usr/sbin/rotatelogs /var/log/httpd/error_wiki_log.%y%m%d 86400"  CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/access_wiki_log.%y%m%d 86400" combined</VirtualHost>

sudo tcpdump -i lo port 8080 -A (8080 포트로 들어오는 요청을 출력 )

동영상 : https://youtu.be/kB-OpoflZc4

17

Base URL Atlassian 제품에서 브라우저 렌더링을 할

때 사용하는 기본 Domain URL 웹서버로 Prxoying 할 경우 웹서버 URL 이

지정되어야 함 각 제품의 기본 설정에서 Title 과 함께

정확하게 세팅되어야 함 Crowd 의 경우 오른쪽과 같이 지정

Proxy Name 웹서버를 거치지 않고 Atlassian 제품으로 들어왔을 때 , 웹서버 URL 로

Redirect(Rewrite) 하는 방법 다음과 같이 제품 별 Tomcat 설정 파일에서

지정- <JIRA>/conf/server.xml- <Confluence>/conf/server.xml- <Crowd>/apache-tomcat/conf/server.xml

(3) 웹서버 연동 (Proxying) – Base URL, Proxy Name

다음은 JIRA 의 예 . 각 제품에 맞게 URL 변경하면 됨

        <Connector port="8080"                   maxThreads="150"                   minSpareThreads="25"                   connectionTimeout="20000"                   proxyName="atl74-jira.osci.kr" proxyPort="80"                   enableLookups="false"                   maxHttpHeaderSize="8192"                   protocol="HTTP/1.1"                   useBodyEncodingForURI="true"                   redirectPort="8443"                   acceptCount="100"                   disableUploadTimeout="true"/>

<CROWD_HOM>/crowd.properties 에서

crowd.server.url=http\://atl74-sso.osci.kr/services/application.name=crowdapplication.login.url=http\://atl74-sso.osci.kr

18

IIS 는 두 가지 방법 제공 Tomcat Connector

- 전통적인 방법으로 여러 개의 Properties 파일을 설정해야 하는 불편함- https://confluence.atlassian.com/jira/integrating-jira-with-iis-185729648.html

ARR(Application Request Routing)- IIS 7 이상에서 지원하는 방법으로 Request Filter 와 URL Rewriting 사용한 편리한 방법- https://confluence.atlassian.com/jirakb/integrating-jira-applications-with-iis-using-arr-313467089.html

NginX 다음 구성을 /etc/nginx/nginx.conf 에 추가

- VirtualHost 기능을 사용할 경우 server 설정을 여러 개 추가

- NginX 로 Proxying 을 할 경우 whitelist remote ip 인식 못하는 문제

- 오른쪽 Italic체와 같이 client ip 를 전달하도록 해서 해결

(3) 웹서버 연동 (Proxying) – IIS, NginX 연결

  server {        listen       80;        listen       [::]:80;        server_name  atl74-wiki.osci.kr;           // virtualhost 사용        root         /usr/share/nginx/html;        include /etc/nginx/default.d/*.conf;        location / {       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:8090;          // confluence 서버        client_max_body_size 10M;        } …    }…  server {        listen       80;        listen       [::]:80;        server_name  atl74-jira.osci.kr;           // virtualhost 사용 … }

19

Apache HTTPD SSL 설정 현재 CentOS 에서 사용되는 Apache 2.x 의 경우 SSL 모듈이 기본 내장되어 있음 /etc/httpd/conf.d/ssl.conf 에 SSL 설정 포함 기본 내장 인증서 사용하거나

별도로 인증서를 신청해서 설정 ( 치환 )

HTTPS Proxy 설정 HTTPS(443) 으로 들어왔을 때 , 해당 요청을

Atlassian 제품으로 Proxying 설정 이 때 , HTTPS 가 아닌 HTTP 로 연결

(SSL Termination) "SSL 사용 시 , 웹서버 연동 아키텍처 " 참고 HTTP 로 요청이 왔을 때 , 자동으로 HTTPS 로

변경되도록 URL Rewrite 설정 Atlassian 쪽에서 Proxy Name 설정 변경

(4) SSL 설정

동영상 : https://youtu.be/H3ggomeJE5k

SSLCertificateFile /etc/pki/tls/certs/localhost.crt…SSLCertificateKeyFile /etc/pki/tls/private/localhost.key…SSLCertificateChainFile /etc/pki/tls/certs/server-chain.crt

<VirtualHost *:80>        DocumentRoot "/var/www/html"        ServerName atl74-jira.osci.kr

        ProxyPass         /  http://localhost:8080/        ProxyPassReverse  /  http://localhost:8080/

        RewriteEngine On        RewriteCond %{HTTPS} !=on        RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R=301,L]</VirtualHost>

<VirtualHost *:443>        DocumentRoot "/var/www/html"        ServerName atl74-jira.osci.kr

        ProxyPass         /  http://localhost:8080/        ProxyPassReverse  /  http://localhost:8080/</VirtualHost>Proxy Name 설정

        <Connector port="8080"                  scheme="https" proxyName="atl74-jira.os-ci.kr" proxyPort="80" secure="true" …

20

방화벽

JIRA

MySQL(jiradb)

SSL 사용 시 , 웹서버 연동 아키텍처 예시

Apache HTTPDmod_proxy

Crowd

MySQL(crowd)

Conflu-ence

MySQL(conflu-ence)

방화벽

DMZ 구간HTTPS(SSL)

SSL Termination

HTTP(Plain)

21

설치 시 , MySQL Database 문자셋을 UTF8 로 설정 DB 생성 시 오른쪽과 같은 옵션 지정 기존 생성된 DB 는 다음과 같이 확인

제품 별 한글팩 적용 화면 인터페이스를 한글로 사용 버전에 맞는 언어팩을 아래 싸이트에서 다운로드

- https://translations.atlassian.com/ 자세한 방법은 동영상 참고 Indexer 는 반드시 CJK 로 두어야 함 - 한글 검색을 위해서 Confluence 의 경우 브라우저 언어에 따라 디폴트 선택되며 , 변경하고자 할 경우

(5) 한글팩 적용 및 각종 한글 관련 설정

CREATE DATABASE confluence CHARACTER SET utf8 COLLATE utf8_bin;

동영상 : https://youtu.be/Wp1LL-GVtnw

동영상 : https://youtu.be/R_F2qx8twK8

<Confluence>/bin/setenv.sh 에 다음을 추가

CATALINA_OPTS="-Dconfluence.browser.language.enabled=false ${CATALINA_OPTS}"

22

Jira 에 한글팩을 적용하면 , 날짜 포맷을 맞게 변경해야 함 오른쪽과 같이 Issue 에서 기한 (Due Date) 을

지정할 때 , 날짜 포맷이 맞지 않는 문제

날짜 포맷을 아래와 같이 지정 System General Configuration Advanced Settings 변경 시 , 적용되는 날짜 포맷

- "2015/11/25 13:01"

(5) 한글팩 적용 및 각종 한글 관련 설정 – Jira 날짜 지정 문제

23

Linux 시스템에 필요한 폰트가 없어서 한글이 깨지는 현상 한글 부분이 네모 박스로 나오는 현상 Linux 폰트 , JDK 폰트 설정 맵핑이 정상적으로 이루어져야 함 아래 과정을 거쳐 필요한 폰트 설치하면 해결

(5) 한글팩 적용 및 각종 한글 관련 설정 – 차트 한글 for CentOS 6

필요 패키지 설치 $ yum install rpm-build $ yum install ttmkfdir $ yum install xfs $ yum install chkfontpath

폰트 설치 $ yum install cabextract $ wget http://centos.karan.org/el4/extras/stable/x86_64/RPMS/cabextract-1.1-2.x86_64.rpm $ rpm -ihv cabextract-1.1-2.x86_64.rpm $ wget http://corefonts.sourceforge.net/msttcorefonts-2.5-1.spec $ rpmbuild -ba msttcorefonts-2.5-1.spec $ yum localinstall --nogpgcheck /root/rpmbuild/RPMS/noarch/msttcorefonts-2.5-1.noarch.rpm $ yum install fonts-korean $ yum install kde-i18n-Korean $ yum groupinstall korean-support -x xorg-x11-server-Xorg $ fc-cache -fv

Jira 또는 Confluence 중지캐시된 차트 이미지 삭제 <Jira 의 경우 > $ rm –rf <JIRA Home>/caches/workflowimages/*

<Confluence 의 경우 > $ cd <Confluence Home> $ rm -rf bundled-plugins plugins-cache plugins-osgi-cache plugins-temp

Jira 또는 Confluence 재 시작

다음 페이지의 간단한 폰트 복사 방법 권고

24

RHEL/CentOS 7 에서는 패키지가 달라 필요한 폰트를 설치할 수 없음 결국 폰트만 필요하므로 , 아래 디렉토리에 필요한 폰트 설치 후 폰트 캐시 생성

- /usr/share/fonts ( 필요한 폰트 저장 위치 )- sudo fc-cache -fv ( 폰트 캐시 )- fc-list (Linux 운영체제에 설치된 폰트 목록 보기 )

Jira/Confluence 의 캐시 삭제 후 재 시작

(5) 한글팩 적용 및 각종 한글 관련 설정 – 차트 한글 간단한 방법

동영상 : https://youtu.be/8n4W3swwt8w

<Jira 의 경우 > $ rm –rf <JIRA Home>/caches/workflowimages/*

<Confluence 의 경우 > $ cd <Confluence Home> $ rm -rf bundled-plugins plugins-cache plugins-osgi-cache plugins-temp

폰트 다운로드https://github.com/OpenSourceConsulting/atlassian-apps/blob/master/linux-fonts/mstt.z https://github.com/OpenSourceConsulting/atlassian-apps/blob/master/linux-fonts/ppt.z https://github.com/OpenSourceConsulting/atlassian-apps/blob/master/linux-fonts/un-core.z

25

Confluence 오피스 첨부 파일 한글 한글이 모두 네모 박스로 표시되는 현상 다음 문서를 참고하여 오피스 렌더링을 위한 폰트를 명시적으로 지정

- https://jira.atlassian.com/browse/CONF-36557 /usr/share/fonts 아래에 있는 모든 폰트 파일 (*.ttf, *.ttc) 들을 다음으로 복사

- Confluence 에 포함된 JDK 의 <JRE>/lib/fonts/fallback - 윈도우 폰트 (<Window>/Fonts/gulim.ttc) 도 복사 후 지정 가능

Confluence 의 JDK 옵션에 다음을 지정- 오피스 렌더링에 사용할 폰트 위치와 이름을 강제로 지정- 폰트가 존재하지 않을 경우 디폴트로 사용할 폰트를 ' 은 돋음 ' 으로 지정

• 폰트 이름 확인은 Linux 에서 'fc-list' 명령으로 가능

(5) 한글팩 적용 및 각종 한글 관련 설정 – 오피스 첨부 파일

<Confluence>/bin/setenv.sh

CATALINA_OPTS="-Dconfluence.document.conversion.fontpath=/opt/atlassian/confluence/jre/lib/fonts/fallback ${CATALINA_OPTS}"CATALINA_OPTS="-Dconfluence.document.conversion.words.defaultfontname=UnDotum ${CATALINA_OPTS}"CATALINA_OPTS="-Dconfluence.document.conversion.slides.defaultfontname.regular=UnDotum ${CATALINA_OPTS}"CATALINA_OPTS="-Dconfluence.document.conversion.slides.defaultfontname.asian=UnDotum ${CATALINA_OPTS}"CATALINA_OPTS="-Dconfluence.document.conversion.slides.defaultfontname.symbol=UnDotum ${CATALINA_OPTS}"

$ cd <Confluence Home>$ rm -rf bundled-plugins plugins-cache plugins-osgi-cache plugins-temp $ rm -rf shared-home /dcl*

Confluence 재 시작

동영상 : https://youtu.be/He4MpqgLBeQ

26

Confluence 에서 Wiki 페이지 일부 또는 전체를 PDF 로 Export 할 때 한글 부분이 네모 박스로 나오는 현상 General Settings 의 PDF Export Language Support 에서 적당한 폰트를 선택해서

Install 하면 됨 ( 예 : <WINDOW>/Fonts/batang.ttc, NanumGothic.ttf)

Space tools 의 Look and Feel 에서 PDF Export Stylesheet 에다음을 추가

(5) 한글팩 적용 및 각종 한글 관련 설정 – Confluence PDF Export

.code pre, .preformatted pre {    font-family:ConfluenceInstalledFont,Courier,monospace;}

동영상 : https://youtu.be/Org5e1teeEA

" 아틀라시안 기본 트러블슈팅 2/2"

에서 계속