태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
BLOG main image
분류 전체보기 (100)
Perforce (4)
Agile Game Project (31)
mac (4)
Web 2.0 (2)
Resource (17)
diary [미공개] (0)
Stared [미공개] (0)
Dev (21)
45385 Visitors up to today!
Today 29 hit, Yesterday 88 hit
daisy rss
tistory 티스토리 가입하기!
2008/02/14 12:19

예전 글에서 BitNami Redmine 좋다고 좀 흥분했는데... ㅎㅎ 테스트 용도로는 충분하지만 실제로 서비스 하려면 결국 이것저것 손을 봐야합니다.
다행히도 서비스 등록, 시작/정지 등등... 기본 세팅이 충실히 되 있어서 한결 편하게 세팅할 수 있다는 장점은 여전합니다.^^;

한글 환경에서 Redmine을 서비스하기 위해서는 크게 MySQL을 UTF-8로 변신시키기, Redmine 최신 소스 일부 손보기 정도가 있습니다.

1. MySQL UTF-8로 변신시키기
    BitNami에서 깔아주는 MySQL은 latin1으로 셋팅됩니다. 웹에서 잘 보여지고 잘 저장되지만 나중에 분명 골치아픈 문제가 생길 것이기 때문에 애초에 제대로 세팅을 해보겠습니다.

  • \BitNami Redmine Stack\mysql\my.ini를 열어서 아래 내용을 추가/수정 합니다.

[client]
default-character-set=utf8

[mysqld]
init_connect=SET collation_connection = utf8_general_ci
init_connect=SET NAMES utf8
default-character-set=utf8
character-set-server=utf8
collation-server=utf8_general_ci

[mysql]
default-character-set=utf8

  • MySQL 서비스를 새로 시작하고 ( 실행 창에서 services.msc 치고 redmineMySQL을  중지/시작 하면 빠릅니다.) 콘솔로 로그인해서 서버 설정 상태를 확인 합니다.

c:\program files\BitNami Redmine Stack\mysql\bin\mysql -uroot -p
Enter password: ***********

mysql> show variables like 'c%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
| collation_connection     | utf8_general_ci            |
| collation_database       | utf8_general_ci            |
| collation_server         | utf8_general_ci            |
| concurrent_insert        | ON                         |
| connect_timeout          | 5                          |
+--------------------------+----------------------------+
12 rows in set (0.00 sec)

이렇게 utf8이 잔뜩 나오면 제대로 된겁니다. ^^

  • redmine_production DB 새로 생성

mysql> drop database redmine_production;
mysql> CREATE DATABASE redmine_production DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

     이제 MySQL과 DB는 준비가 됐습니다.


2. 이왕 건들기 시작한거 redmine도 최신 소스로 가져와서 붙여보기
   
우선 서비스를 모두 내리고, 기존 redmine 폴더는 redmine_old로 바꿔줍니다.

  • redmine 저장소에서 최신 개발소스 가져오기

c:\program files\BitNami Redmine Stack\svn export http://redmine.rubyforge.org/svn/trunk redmine

기존 redmine_old 폴더에서 database.yml와 scripts 폴더를 복사해 옵니다.


C:\Program Files\BitNami Redmine Stack\redmine\config\database.yml을 열어서 아래와 같이...

production:
  adapter: mysql
  database: redmine_production
  host: localhost
  username: root
  password: root_paddword
  encoding: utf8

3. 빈 redmine_production 채워넣기

  • Ruby on Rails에는 db:migrate가 있죠
  • 당연히 이 작업을 하기 전에 MySQL이 실행되고 있어야합니다.

C:\Program Files\BitNami Redmine Stack\redmine\rake db:migrate RAILS_ENV="production"

4. redmine 각종 기본데이터 넣어주기

\BitNami Redmine Stack\redmine\rake redmine:load_default_data RAILS_ENV="production"


4. 기존 redmine_old폴더에 scripts 폴더만 새로 만들어진 redmine 폴더로 옮깁니다.
(서비스 시작과 관련한 스크립트들이 들어있어요. 이거 안해주면 사이트가 안뜨고 503 에러 납니다. )

5. http://localhost 로 접근해서 redmine 사이트가 잘 뜨면 성공! 로그인은 admin / admin으로 하시면 됩니다.

* 0.7.X 버전부터 한글 파일 업로드/다운로드 문제가 해결됐습니다.
아래 내용은 참고 정도로만...

이제 드뎌 한글 파일 업로드 / 다운로드가 되도록 수정을 해보겠습니다.

아래 내용은 한글 Windows XP SP2 환경하에서만 확인됐습니다. 아마도 UTF-8 이 잘 지원되는 Mac이나 Linux에서는 그냥 잘 될 수도 있습니다.

1. redmine은 파일 업로드 관련 코드는 모두 attachment 모델에 들어있습니다.

   인터넷을 검색해본 결과 UTF-8에서 EUC-KR로 변환하면 윈도우에서 파일 읽고/쓰기가 가능하다고 해서 아래와 같이 수정했습니다.

  • C:\Program Files\BitNami Redmine Stack\redmine\app\models\attachment.rb 수정 (Bold가 추가/수정되는 내용입니다.)

require "digest/md5"
require "iconv"

# Copy temp file to its final location
def before_save
    if @temp_file && (@temp_file.size > 0)
        logger.debug("saving '#{self.diskfile}'")
        logger.debug("saving '#{euc_kr_diskfile}'")
        File.open(euc_kr_diskfile, "wb") do |f|
            f.write(@temp_file.read)
        end
        self.digest = Digest::MD5.hexdigest(File.read(euc_kr_diskfile))
    end
    # Don't save the content type if it's longer than the authorized length
    if self.content_type && self.content_type.length > 255
      self.content_type = nil
    end
end

# Returns file's location on disk
def diskfile
    "#{@@storage_path}/#{disk_filename}"
end

# 한글 파일추가 되는 메소드
def euc_kr_diskfile
    "#{@@storage_path}/#{Iconv.new('EUC-KR','UTF-8').iconv(disk_filename)}"
end

  • 이제 다운로드도 잘 되게 해야겠지요.
    Notepad++이나 editplus 같은 에디터 등에서 파일 찾기로 diskfile 메소드를 쓰는 모든 파일을 찾아봅니다.

    현재 redmine 버전은 총 3개의 컨트롤러에서 해당 메소드를 호출하고 있습니다.

C:\Program Files\BitNami Redmine Stack\redmine\app\controllers\attachments_controller.rb
C:\Program Files\BitNami Redmine Stack\redmine\app\controllers\documents_controller.rb
C:\Program Files\BitNami Redmine Stack\redmine\app\controllers\versions_controller.rb

해당 파일에서

send_file @attachment.diskfile, :filename => filename_for_content_disposition(@attachment.filename)... 로 되있는 부분을
send_file @attachment.euc_kr_diskfile, :filename => filename_for_content_disposition(@attachment.filename) 로 바꿔주시면 됩니다.

- 끝 -

이올린에 북마크하기(0) 이올린에 추천하기(0)
Trackback Address :: http://twiny.tistory.com/trackback/1676
Tracked from 손님, 그리고. | 2008/03/08 13:51 | DEL
프로젝트 관리 툴인 redmine 과 소스코드 매니지먼트 시스템= 형상관리시스템 (SCM) 의 일종인 subversion 을 깔려고 했다. redmine 은 특정 프로젝트를 구현하는데 도움을 주는 관리 툴. 어떤 개발이나 유지보수 프로젝트를 수행한다 하면, 일단 설계를 끝내고, 구현해야 할 기능들을 뽑아낸 후에, 일정에 맞춰서 구현을 할때, 각종 구현해야 할 task들을 다 여기에 집어넣어두고, 하나하나 실행하면서 진행...
BlogIcon twiny | 2008/03/12 16:19 | PERMALINK | EDIT/DEL | REPLY
말씀하신데로 서브버전 연동시 한글 파일 , 한글 폴더명은 정상적으로 처리하지 못하더군요. mingle은 깔끔하게 되던데...
BlogIcon 괴영감오비완 | 2008/03/13 10:54 | PERMALINK | EDIT/DEL | REPLY
아 네 mrsohn입니다.
네 그렇더군요, 저장소에는 일단 소스코드가 주로 들어가니, 파일명 폴더명 정도는 영어만으로도 크게 불편함이 없을 듯 해서, 일단 이대로 써보려고 합니다. 좋은 글 감사했습니다. ^^
BlogIcon twiny | 2008/03/13 12:50 | PERMALINK | EDIT/DEL
오비완님 블로그 갔더니 자전거 잔뜩 나오네요^^;
폴딩되는 초보 자전거 하나 추천해주세요... 주말에 동생이랑 한강변 좀 달려 보려구요.
BlogIcon 괴영감오비완 | 2008/03/17 11:37 | PERMALINK | EDIT/DEL
아 네 티스토리는 자전거 블로그로 사용중 쿨럭;
다혼 XXX D7 중에서 디자인 맘에 드는 걸로 사시면 일단 괜찮습니다. (XXX=>보드웍,스피드,비테스)

꼭 접히는 것일 필요는 없다면,
베네통 미니스프린터 라는 제품도 좋구요.

자세한 건 http://cafe.naver.com/dahon 음...
김흥준 | 2008/05/20 18:26 | PERMALINK | EDIT/DEL | REPLY
PDF export하면 한글이 깨지던데 혹시 해결하셨나요 ?
Name
Password
Homepage
Secret
prev"" #1 ... #7 #8 #9 #10 #11 #12 #13 #14 #15 ... #100 next