반응형
반응형

JIRA에서 사용자 관리를 모두 하게 하기 위해, JIRA에 사용자 서버를 생성하고, Confluence에서 동기화를 하는 방식으로 사용을 했더니, 기본 동기화 시간이 3600초라서 Confluence 사용만 하고 싶은 유저에게는 문제가 많았다.


동기화 시간을 Web UI에서 조절은 못하게 되어있기 때문에, DB에 직접 붙어서 수정을 해야 한다.

SELECT attribute_value 
FROM cwd_directory_attribute 
WHERE attribute_name = 'directory.cache.synchronise.interval';


위 쿼리를 날려서, 현재 시간을 확인하고 알맞게 조절 후 Confluence를 재시작해주면 반영된다.

반응형
,
반응형

Atlassian 제품들은 기본적으로, 로그인에 여러번 실패하면, Captcha 문자를 추가로 입력받게끔 되어있다.


근데 Hosting으로 운영하는 경우 Confluence에서 Captcha가 보이지 않는 현상이 발생하였다. Jira는 문제없음.


이런 현상이 있는 경우, 아래와 같은 시스템 파라미터를 {Install Directory}/bin/setenv.sh에 추가해주고, Confluene를 재시작하면 해결된다.

...
CATALINA_OPTS="-Dfile.encoding=UTF-8"
...
반응형
,
반응형

100GB정도 사용하는 Cloud Jira에서 Host Jira로 Migration 계획을 세워서 진행중인데, Cloud Jira는 북미서버고 Host Jira는 한국에 있다보니, 백업 -> 다운로드 -> 업로드 과정이 하루에 넘는 불상사가 일어났다.


결국 주말 이틀에 평일 하루까지껴서 작업이 계획되었는데, 다운로드 -> 업로드 과정을 없애고 Host서버에서 직접 다운로드 받으면, 시간이 몇 배는 줄어들 것 같아서, Atlassian에 선 문의를 했더니, Bitbucket URL을 하나 알려주며, 본인들은 그 스크립트로 자동으로 백업하고 다운로드 받으니 참고해서 다운로드 받아라! 라는 답변이 왔다.

(참고 링크 : https://bitbucket.org/atlassianlabs/automatic-cloud-backup)


소스 분석을 간단히 해보면 이렇다.


1. JIRA Rest API를 이용하여 인증을 하고, 로컬에 쿠키로 저장을 한다. (Curl 이용)

2. 로컬에 저장된 쿠키를 이용해서 백업을 뜬다. (인증정보가 담겨진 쿠키)

3. 백업을 뜨면서, 진행상황을 Rest API를 이용하여 수시로 체크하고, 완료되면 파일명을 추출하여, 로컬에 저장된 쿠키를 이용하여 다운로드 받는다. (Wget 이용)


그런데 내 환경에서는 이상하게 잘 동작을 하지 않아서, Curl이랑 Wget이랑 동시에 사용하다보니 발생하는 문제라고 판단을 하고,

인증과 다운로드 둘 다 Wget을 사용하도록, 아래와 같이 쉘을 만들어서 사용 했다.

#!/bin/bash

# 쿠키가 저장될 위치
COOKIE_FILE_LOCATION=jiracookie

# 사전에 있던 쿠키를 지운다.
rm -f $COOKIE_FILE_LOCATION

# 인증하고, 쿠키를 지정된 위치에 저장한다.
wget --save-cookies $COOKIE_FILE_LOCATION --keep-session-cookies --post-data '{"username":"Atlassian ID 입력", "password":"패스워드 입력"}' --header 'Content-Type: application/json' "https://JIRA인스턴스.atlassian.net/rest/auth/1/session" -O /dev/null

# 백업파일을 다운로드 받는다
wget --load-cookies $COOKIE_FILE_LOCATION -t 0 --retry-connrefused --show-progress "백업 URL" -O "저장할 위치"


이로써 PC에서 다운로드 받았다가, 원격에 업로드하는 미련한 짓은 안할 수 있게 되었고, 시간을 많이 절약하게 되었다. 

그나마 JIRA 인증 API를 제공하고 있어서 다행이지, 이마저 없었다면 답이 없었을 뻔했다.

반응형
,
반응형

JIRA같은 경우, WebUI에서 편리하게 변경이 가능한데,

Confluence는 WebUI에서 제공을 하지 않고, tomcat의 CATALINA_OPTS에 파라미터를 줘서 변경을 해주어야 한다.

(참고 링크 : https://confluence.atlassian.com/kb/setting-the-timezone-for-the-java-environment-841187402.html)


{Confluence가 설치된 폴더(홈 폴더 아님)}/bin/setenv.sh를 열어서 export CATALINA_OPTS라고 써있는 라인을 찾아서, 바로 위에다가 파라미터를 추가해주면 된다.

아래 예제에선 미국시간 기준으로 세팅을 한다. (위에 언급한 참고 링크에 보면 Confluence에서 지원하는 타임존 표가 있음)

...
CATALINA_OPTS="-Duser.timezone=America/Los_Angeles"
export CATALINA_OPTS
...


위와 같이 추가해준 후 Confluence를 재시작하면 반영된다.

Jira나 Confluence나 같은 회사에서 판매하는 제품인데 왜케 다름;;

반응형
,
반응형

클라우드에서 사용하던 Jira를 호스트 서버로 옮겨오게 되면서, Backup Manager에서 호스트 서버를 위한 백업을 제공하길래, 한 번에 될줄 알았는데, 거의 한 달째 Atlassian 고객센터와 씨름을 하며 주의할 점을 정리해본다.


[Cloud에서 주의할 점]

  1. 백업뜨기 전에, 무조건 re-index는 한 번 해준다.
    • (Cloud는 수시로 버전 업 및 버그 fix가 되기 때문에, 버그가 있던 버전에서 쌓였던 데이터는 key가 없는 등 문제가 많을 수 있음)
  2. 백업은 하루에 한 번만 뜰 수 있으니, 신중하게 백업한다.
    • (유지 기간은 일주일)
  3. 1년이상 열심히 사용한 경우, 백업에 걸리는 시간은 상상을 초월하므로, 업무 시간 마무리 직전에 걸어두는 것이 좋다. (아침에 보면 가끔 뻗어있기도 함;;)


[Host에서 주의할 점]

  1. Cloud에서 백업을 떠서 나온 zip파일엔, xml 2개와 avatar, attachment가 포함이 되어 있는데, 콘텐츠 내용 중 특수문자가 껴있었고, MySQL DB를 사용중이라면 특수문자를 넣을 수 없다는 에러가 발생한다.
  2. Cloud에서 가져온 데이터는 Full Restore(XML복원)만 지원하고, 프로젝트 가져오기 (Migration)는 불가능하다. (Atlassian Support의 답변)
  3. 백업 zip파일에 포함된 attachments폴더는 압축을 풀어서 따로 JIRA HOME/import/attachments폴더에 넣어주어야 한다. (안그러면 파일 다 깨짐)
  4. 가끔 3번처럼 했는데도 깨지는 경우는, 압축 파일에 들어있던 attachment, avatar에 들어있는 파일을 JIRA HOME/data 경로에 수동으로 넣어주면 원상복귀됨.
  5. 모든 과정을 거쳐 복원에 성공하였다면, 계정 관리를 조금 해야 한다. Cloud의 경우 계정 패스워드 관리가 Atlassian에서 통합관리 되기 때문에, 백업 간 계정 정보만 포함되고, sysadmin을 제외한 모든 계정이 DB에 (nopass)로 들어가게 된다.
    • 아래와 같이 SQL문으로 패스워드 보정을 해주자. (admin으로 들어가게되며, jira를 재시작해주어야 반영될 수도 있다.)
    • UPDATE cwd_user
      SET CREDENTIAL = '{PKCS5S2}8WEZjkCbLWysbcbZ5PRgMbdJgJOhkzRT3y1jxOqke2z1Zr79q8ypugFQEYaMoIZt'
      WHERE user_name = 'sysadmin';
      

비싼 돈 주고 사용하는 제품인데.. (뭐 내 돈은 아니지만;;)
마이그레이션 하기가 너무 힘든 것 같다.

말이 마이그레이션이지 그냥 데이터 가져다가 엎어치우는 것 밖에 안되고, 진짜 마이그레이션을 하려면, 기존에 쓰던 데이터를 백업떠서 다른 곳에 모셔다 놓고, Cloud데이터를 Full Restore(XML복원)한 후, 원래 있던 데이터를 프로젝트 가져오기로 넣어주어야 하는 것 같긴한데, 뭐 이리 복잡한지;;


반응형
,
반응형

Cloud에 있는 데이터를 Hosting된 Confluence로 땡겨올 일이 있었는데, Cloud에서 백업을 뜬 후, Hosting Server에서 Restore를 하니 한글이 전부 깨지는 현상이 발견되었다. (현재 포스팅 당시 최신버전 기준 6.3.1에서 발생하였으며, MySQL을 사용)


Confluence같은 경우 MySQL의 jdbc string에 인코딩에 대한 고려가 되어 있지 않아 발생하는 현상으로, Confluence Home 폴더에 있는 confluence.cfg.xml를 열어서 jdbc string에 유니코드(useUnicode) 및 인코딩 옵션(characterEncoding)을 utf-8로 추가해주고, 재시작해주면 해결된다.

...
    <properties>
     ...
         <property name="hibernate.connection.url">jdbc:mysql://localhost/confluencedb?autoReconnect=true&useSSL=false&useUnicode=true&characterEncoding=utf8</property>
     ...
    </properties>
...


기본 DB가 H2 DB이기 때문에, 외부 DB를 사용하는 경우에 대한 고려가 잘 안되어 있는 것 같고, MySQL 뿐만 아니라 다른 DB도 비슷하게 발생할 것으로 예상된다.

반응형
,
반응형

사내에서 Confluence & Jira를 도입했는데, Endpoint는 하나로 두고 싶다는 요청이 있어서, 앞단에 Https기반의 Apache Proxy를 두게 되었고, Apache Proxy를 통해 들어오는 요청이다 보니, 기본 프로토콜이 http로 되어 있는, Confluence, Jira에서는 인증서의 보안이 깨지는 현상이 발생하였다. (https -> http 요청 이슈로 보안이 깨지는 현상)


이런 경우 각 어플리케이션의 con/server.xml을 편집하여, 아래와 같이 proxy정보(proxyName, proxyPort)와 프로토콜(scheme)을 추가해주면 해결이 된다.


...
        <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"
                   proxyName="jira.domain.com"
                   proxyPort="443"
                   scheme="https"
                   bindOnInit="false"/>
...


반응형
,
반응형