시작하며

개인 업무로 레드마인을 사용하고 있습니다. 형상관리에 버전관리까지 필요한 기능을 탑재하고, 혼자 사용하는 중이기 때문에, 기능의 간편성도 훌륭해서 마음에 들어하며 잘 사용하고 있습니다. 하지만, 설치까지 가는데 많은 시간을 소요하는데가, 개인적인 기준으로는 좀 복잡합니다. 아파치에, My SQL에, 루비에...

그러다가  Bitnami 라는 곳에서는 Open Source로 구성된 다양한 서버 제품을 간단하게 설치할 수 있는 패키지를 만들어 배포하는데, 그 곳에서 Redmine도 같이 배포를 하더군요. 그래서 남는 개인 PC에다 Windows Server를 설치한 뒤, 그 위에 Bitnami에서 배포하는 Redmine을 설치했습니다. 이 Installer를 통해 설치를 하니, 아파치 + MySQL + 루비에다 Subversion 서버 까지 같이 한 셋으로 설치가 되더군요. 이거 마음에 흡족했습니다.

그리고, 한 1년 정도를 사용했을까요. 제가 당시에 설치했을 때 1.3.1 버전은 벌써, 2.1.3 버전으로 훌쩍 올라왔더군요. 조금은 많이 당황스러웠습니다. 내부적으로 무엇이 업그레이드 되었는지는 모르겠지만, 최소한 Major 버전 ( 1.X -> 2.X 로 변한)의 업그레이드다 보니, 내부적인 큰 변화가 알게 모르게 있을 것입니다. 기왕지사 쓰는거 최신 버전을 활용하는게 좋을 것이다라는 생각이 들더군요.

하지만, 애석하게도 Bitnami에서 제공하는 패키지는 업그레이드를 지원하지 않습니다. 오로지 설치, 설치, 설치. 즉 새로 설치하라는 의미인 것이였죠. 하지만, 지금까지 쌓아온 데이터가 있는데, 그리 쉽게 포기하기는 쉽지 않습니다.

그래서 계속 다양한 방법으로 시도해보려 했지만, 쉽게 성공치 못하고 있다가, 우연히 살펴본 "채윤이네집"님의 사이트에서 [CentOS] bitnami Redmine stack 업그레이드기( 1.2.X -> 2.0.X) 라는 글을 보게 되었습니다.

그리고 시도했고, 성공했습니다. 이에 대한 기록입니다.

 

전제조건

  • 이 모든 기록은 제 Redmine에 대한 설정을 기반으로 설명합니다. 설치 경로나 구성이 다소 다를 수 있습니다. 이 부분에 대한 차이는 각기 구축한 형태에 맞게 적용해보시면 됩니다.
    • 설치 경로 : D:\Redmine
  • Redmine 내에 사용자 플러그인을 전혀 사용하지 않았습니다. 간혹 Bitnami 포럼에 보면, 업그레이드 도중 오류가 발생하는 경우에 대한 포스팅이 많은데, 대개의 경우 이 플러그인에 걸리는 경우가 많습니다. 메인 Redmine의 큰 판 업그레이드가 되다보니, 플러그인에서 미처 대응이 안되는 경우 오류가 발생되는 것이죠. 만일 개인적으로 플러그인을 다양하게 사용한다면, 업그레이드 전에 플러그인의 호환성을 먼저 체크하셔야 될 겁니다.
  • SQL 서버로는 My SQL을 사용합니다. Redmine 자체가 다양한 DB 서버를 사용하다 보니, 고급 사용자의 경우 다른 DB 서버를 연결해 사용할 수 있습니다. 이 경우 저와는 완전히 다른 작업을 수행해야 할지 모릅니다.
  • 현재 사용중인 Redmine 사이트의 포트는 80이 아닌 4500 이라는 괴이한 포트를 사용 중입니다. 하나의 공유기를 통해 사용 하다가 보니, 다른 곳에서 이미 80을 사용하기 때문에, 할 수 없이 그리 된 것입니다. 
  • 만일 SVN을 Redmine에서 제공하는 기본 SVN 서버를 사용 중이시라면, 반드시 Redmine 설치 위치를 기준으로 subversion 폴더도 같이 백업하시기 바랍니다. 아래의 내용은 SVN 내용에 대해서는 언급하지 않기 때문에, 그대로 따라하다가 SVN 데이터까지 날릴 수 있습니다.!

 

백업

[ 백업하기 전 알아야 할 점 ]

먼저 기존에 설치되어 있던 Redmine 정보를 백업합니다.

1.x 대 버전의 Bitnami Redmine과 2.x 대 Redmine의 경로가 약간 다릅니다.

1.x 대 버전의 경우 Redmine의 소스 경로는 "%BITNAMI설치위치%\apps\redmine" 인 반면에,
2.x 대 버전의 경우 "%BITNAMI설치위치%\apps\redmine\htdocs" 입니다.
( 위의 %BITNAMI설치위치% 는 Bitnami를 이용해 설치한 위치가 됩니다. 기본값은 "C:\Bitnami\Redmine-x.x.x" 입니다. )

먼저 설치된 Redmine 위치를 먼저 파악하시기 바랍니다.
( 여기의 예제는 모두 D:\Redmine 의 위치를 기준으로 설명합니다. )

제일 먼저 수행하는 작업은 서비스 종료입니다.

Bitnami 설치 위치의 폴더를 보면, manager-windows.exe 라는 프로그램이 있읍니다.

redmine001

, 이것을 실행하면 아래와 같이 나옵니다. mysql을 제외한 나머지들을 모두 Stop 시켜주시기 바랍니다.

redmine002

 
[ 첨부파일 백업 ]

제일 먼저 수행하는 작업은 첨부 파일 백업입니다.

"D:\Redmine\apps\redmine\files" 라는 폴더가 있습니다. ( 2.x 버전에서는 "D:\Redmine\apps\redmine\htdocs\files" 입니다. 이하부터는 1.x 버전에서 2.x 버전으로 마이그레이션하는 것을 기준으로 설명합니다. 만일 2.x 에서 상위 버전으로 한다면 그에 맞게 htdocs를 넣어주시기 바랍니다. )

이 폴더의 내용이 Redmine 상에 저장된 첨부파일 들 입니다. 이 내용을 폴더 채로 모두 압축 복사하시기 바랍니다.

redmine003

첨부 파일 백업이 끝났으면 이젠 mysql 에 저장된 Redmine 정보들을 모두 백업합니다.

[ DB Backup ]

Redmine 에서는 다양한 DB를 지원하지만, Bitnami Redmine에서는 MySQL을 기본적으로 제공합니다. 그래서 백업도 MySQL을 통해서 백업을 수행합니다. 여기서 잠깐. MySQL을 접속하기 위한 정보를 먼저 알아야 합니다. 계정 정보 및 관련 접속 정보를 직접 확인해야 합니다.

확인되어야 할 위치는 D:\Redmine\apps\redmine\config 위치에 있는 database.yml 파일입니다. 접속에 관련된 모든 정보가 이 파일 안에 담겨져 있습니다.

redmine004

이 파일을 메모장(Notepad)를 열어보시면 됩니다.

redmine005

파일 내용 중에 production 부분에서 database, username, password 이 세가지 부분을 파악하시면 됩니다.
별도로 적어두시거나 아니면 화면 구석에 띄워두시기 바랍니다.

이제 먼저 명령 줄 창을 띄웁니다. ( 실행 창을 띄워 - Windows Key + R - 그 안에 cmd라고 입력합니다). 띄워진 창에서 아래의 명령을 입력합니다.

mysql 경로로 이동했으면 이제 mysql을 실행해서 데이터를 백업합니다. 실행하기 위한 명령은 아래와 같습니다.

D:\Redmine\mysql\bin\mysqldump.exe -u bitnami -p bitnami_redmine > D:\backup.sql

-u 다음 위치에 username을,
-p 다음 위치에 database name을 넣어주시고,

">" 다음에 백업 결과물 위치와 파일이름을 전체 경로로 해서 적어주시면 됩니다.

그리고 난 뒤, password 가 나오면 password를 입력합니다. 정상적으로 완료 되면 백업할 위치에 해당 파일이 저장됩니다.

redmine006

 

새 버전 설치

이제 모든 정보에 대한 백업은 완료되었습니다. 이제 Bitnami Redmine을 새로 설치합니다. Bitnami Redmine Stack 이라는 언인스톨 항목이 남아 있으면 그것을 통해 언인스톨을 해주시기 바랍니다. 만일 언인스톨이 불가능하다면, 앞서 소개 드린 서비스 관리해주는 manager-windows.exe 라는 프로그램을 통해 모든 서비스를 종료하시고 강제로 해당 폴더의 모든 내용을 삭제해주시기 바랍니다.

기존 버전을 삭제한 후, 새로운 버전을 받아 설치하시기 바랍니다. 설정 방법은 기존에 설정했던 방식대로 해주시기 바랍니다. 웹 서버 설정 값이라든가, 관리자 메일등 각종 설정 내용을 넣어주시기 바랍니다.

모든 사항이 설치되었다면 이제 복원 작업을 수행합니다.

 

복원

[ DB 복원 ]

기본적으로 새로 설치하면 redmine 서비스가 올라오지 않은 상태입니다. 일단 그대로 둔 상태로 진행하시기 바랍니다. 만일 서비스가 시작된 것이 있다면 mysql 을 제외하고 모두 종료해주시기 바랍니다.

이제 앞서 소개 시켜드린 대로 database.yml 파일을 찾아 다시 열어 주시고, database name, username, password 정보를 다시 열어 보시기 바랍니다. 새로 설치했기 때문에, 암호 설정이 바뀌었기 때문에, 이 정보를 꼭 확인하시기 바랍니다.

확인되었으면 이제 도스창을 다시 열어서 아래처럼 mysql에 접속하시기 바랍니다.

D:\Redmine\mysql\bin\mysql.exe -u bitnami -p

그러면 명령창을 통해 mysql 에 접속하게 되는데, password를 물어보면 앞서 얻은 정보를 통해 입력해주시기 바랍니다. 정상적으로 접속되었으면 아래와 같이 "mysql>" 의 프롬프트가 뜰 것입니다.

redmine007

이제 아래와 같은 sql 명령을 한 줄 씩 입력합니다.
아래의 명령은 새로 설치하면서 자동으로 구성된 redmine용 Database를 삭제한 뒤,
새로 빈 Database를 생성합니다.

drop database bitnami_redmine;

create database bitnami_redmine;

exit

이제 Redmine용 빈 데이터베이스가 준비되었습니다. 이것을 복원합니다. 복원은 간단합니다. "<" 라는 부분만 넣고, 아까 백업했던 파일을 맨 뒤에 적어주시면 됩니다. 아까 백업할 때, D:\Backup.sql 파일로 백업을 수행했는데, 이 파일로 복원하는 것입니다.

아래와 같은 명령 줄을 넣고, password에 암호를 입력해주시면 됩니다.

D:\Redmine\mysql\bin\mysql -u bitnami -p bitnami_redmine < D:\Backup.sql

정상적으로 종료가 되었으면 별다른 메시지 없이 종료될 것입니다.

 

[ DB Migration - 이전 작업 ]

Database를 복원하는데까지는 성공했지만, 문제는 백업할 때의 DB 내용은 예전 버전의 DB라는 사실이다. 그러므로, 이것을 새로운 버전으로 변경해주는 작업을 해야 합니다. 이 작업을 하려면, ruby 실행에 관련된 파일들이 필요합니다. 즉시 적용이 될 수 있도록 도스창에서 다음과 같은 줄을 입력하시기 바랍니다.

PATH=D:\Redmine\ruby\bin;%PATH%

저렇게 입력하면 어디서든 ruby 명령을 입력할 수 있게 됩니다. (다만 도스 창이 닫히면 PATH 설정이 날라가므로, 새로 열었을 때는 반드시 위의 명령을 다시 넣어주시기 바랍니다. )

자 이제 다음 명령을 입력하여, redmine 관련된 위치로 이동합니다.

cd /d "D:\Redmine\apps\redmine\htdocs"

이동했으면 다음 명령을 한 줄 씩 실행해주시기 바랍니다.

rake db:migrate RAILS_ENV=production

rake redmine:plugins:migrate RAILS_ENV=production 

그러면 기존 복원했던 DB의 정보를 모두 현재 버전에 맞게 이전 해주면서 정리가 됩니다.

 

[ 첨부 파일 복원 ]

D:\Redmine\apps\redmine\htdocs\files 경로에 앞서 압축했던 files 내용을 그대로 부어주시기 바랍니다. delete.me 파일을 덮어쓸 거냐고 나오는데, 그냥 덮어쓰셔도 무방합니다.

 

[ 서비스 실행 ]

서비스 관리해주는 manager-windows.exe 라는 프로그램을 통해 Stop 된 서비스를 모두 Start 해주시면 완료됩니다. 레드마인에 접속하여 정상적으로 잘 되었는지 확인하시기 바랍니다.

 

정리

지금까지 계속 1.3.1 버전을 사용하다가, 요즘 나온 2.1.4 버전으로 업그레이드 했습니다.
일전에 Redmine 관련 도구를 만들려다가 보니, REST API 지원 문제로 2.X 버전으로 업그레이드 하려다가 정보 부족으로 업그레이드에 실패했습니다. Bitnami 사이트 내에서는 Upgrade에 대한 문서를 찾을 수 없었고, 기타 블로그에서는 CentOS 나, Linux용 Bitnami에 대한 소개가 대부분이였습니다.

그러다가, 우연히 채윤이네 님의 홈페이지를 통해 찬찬히 보니 Windows에서도 될 것 같다는 생각에 진행해봤고, 다행히 성공적으로 마무리 지어졌습니다.

다소 내용의 난이도가 오르락 내리락 해서 내용이 어렵게 보일 수 있겠지만, 잘 보시면 별로 어려운 내용은 없습니다. 요약하면 다음과 같습니다.

  1. MySQL 백업과 복원
  2. 첨부파일 목록 백업과 복원
  3. ruby의 rake 도구를 사용하여, Database 업그레이드 하는 작업

이 세가지 규칙만 이해하시고 진행하시면 간단하게 하실 수 있을 겁니다.

728x90


gantt.zip

레드마인을 Bitnami 버전으로 설치해서 사용 중이다. Windows 기반의 서버에 설치해서 잘 사용 중인데, 애석하게도 Gantt 차트를 열어서 PNG로 내보내기를 하려는데, 한글이 깨져 나온다.

일단 Gantt 차트를 꺼내 보면 한글은 큰 이상 없이 나온다. ( Bitnami 버전의 레드마인 중, 1.1.2-1 버전 이상을 설치하면 무조건 UTF-8 형태로 지원된다. 지금(2012년 10월 23일 기준) 최신 버전은 2.1.2-0 이다. )


내보내기하는데, PDF의 경우에는 문제가 안되지만, PNG일 때 한글이 깨져 나오는 문제가 있다.
가끔 문서에 첨부해야 해서 PNG로 뽑아야 할 때 난감하다.

그래서 이런 저런 글들을 참고했는데, Redmine 사이트 내에서 해당 Issue가 나왔었고, 해당 Issue에 대해서 어떻게 대처하는지가 나왔다.
( http://www.redmine.org/issues/4787 )

레드마인 소스가 있는 위치를 먼저 알아야 한다. Bitnami로 설치했다면, 대개 Program Files 라든가, 기타 설치 시 결정한 경로에 설치가 되어 있는데, 그 위치를 %Bitnami% 라고 한다면...

%Bitnami%\apps\redmine\lib\redmine\helpers

라는 폴더 안에 gantt.rb 라는 파일이 있는데, 그 파일 안을 수정해야 한다.

해당 파일을 열고 아래의 소스가 있는 위치까지 이동한다.

imgl = Magick::ImageList.new
imgl.new_image(subject_width+g_width+1, height)
gc = Magick::Draw.new

# Subjects
gc.stroke('transparent')

그리고

gc = Magick::Draw.new
다음 줄에
gc.font = "C:\\Windows\\Fonts\\malgun.ttf" 
라는 코드를 넣는다.

결론 적으로 다음 코드같이 되어 있어야 한다.

imgl = Magick::ImageList.new
imgl.new_image(subject_width+g_width+1, height)
gc = Magick::Draw.new
gc.font = "C:\\Windows\\Fonts\\malgun.ttf"
		
# Subjects
gc.stroke('transparent')

즉 Draw 안에 Font 경로를 넣어 해당 TTF 폰트 파일을 읽어서 처리하도록 하는 것이다.(만일 맑은고딕이 아닌 굴림체인 경우 Gulim.ttf 라고 넣으면 된다.  )

자체적으로 컴파일 하기 때문에, gantt.rb 파일을 수정한 뒤, 다시 PNG로 내보내기를 해보면, 정상적으로 한글이 출력된 PNG를 받을 수 있다.
( 만일 내부 캐쉬가 있는 경우 새로운 PNG 파일을 안 만들고 기존에 만든 것을 자꾸 뿌려줘서 수정이 안된 것 처럼 느낄 수도 있지만, 웹 브라우저의 다시 읽기나, 완전 다시 읽기 - Ctrl + F5를 누르는 등- 의 재시도를 시도하면 정상적으로 출력되는 것을 확인할 수 있다. )

 일단 Gantt.rb 파일을 첨부하긴 했는데, 가급적 직접 소스를 손대는 것을 추천한다.
그 이유가 현재 필자가 가진 소스의 버전과 실제 적용할 소스의 버전이 틀려 오류가 발생할 수 있기 때문이다.
( 필자의 소스는 BitNami Redmine Stack 1.3.1-1 이다 )

728x90

+ Recent posts

728x90