2011년 9월 28일 수요일

redmine project 식별자(identifier) 변경


보통은 식별자를 Admin모드에서 바꿀 수 없다.
하지만 누구나 실수는 하는 법.
mysql 을 뒤져보니 간단하게 바꿀 수 있더라.

$ dotcloud ssh redmine.db
$ mysql -uroot -p<암호>
mysql> use redmine;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+-------------------------------------+
| Tables_in_redmine                   |
+-------------------------------------+
| attachments                         |
| auth_sources                        |
| boards                              |
| changes                             |
| changesets                          |
| changesets_issues                   |
| comments                            |
| custom_fields                       |
| custom_fields_projects              |
| custom_fields_trackers              |
| custom_values                       |
| documents                           |
| enabled_modules                     |
| enumerations                        |
| groups_users                        |
| issue_categories                    |
| issue_relations                     |
| issue_statuses                      |
| issues                              |
| journal_details                     |
| journals                            |
| member_roles                        |
| members                             |
| messages                            |
| news                                |
| open_id_authentication_associations |
| open_id_authentication_nonces       |
| projects                            |
| projects_trackers                   |
| queries                             |
| repositories                        |
| roles                               |
| schema_migrations                   |
| settings                            |
| time_entries                        |
| tokens                              |
| trackers                            |
| user_preferences                    |
| users                               |
| versions                            |
| watchers                            |
| wiki_content_versions               |
| wiki_contents                       |
| wiki_pages                          |
| wiki_redirects                      |
| wikis                               |
| workflows                           |
+-------------------------------------+
47 rows in set (0.00 sec)

슬쩍보니까 projects 라는 테이블이 있다.

mysql> desc projects;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int(11)      | NO   | PRI | NULL    | auto_increment |
| name        | varchar(255) | NO   |     |         |                |
| description | text         | YES  |     | NULL    |                |
| homepage    | varchar(255) | YES  |     |         |                |
| is_public   | tinyint(1)   | NO   |     | 1       |                |
| parent_id   | int(11)      | YES  |     | NULL    |                |
| created_on  | datetime     | YES  |     | NULL    |                |
| updated_on  | datetime     | YES  |     | NULL    |                |
| identifier  | varchar(255) | YES  |     | NULL    |                |
| status      | int(11)      | NO   |     | 1       |                |
| lft         | int(11)      | YES  | MUL | NULL    |                |
| rgt         | int(11)      | YES  | MUL | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+

음 이놈맞네. identifier 를 바꿔주자.

mysql> update projects set identifier='<변경할ID>' where identifier ='<이전ID>';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

영향도가 있을까봐 걱정했는데 현재 버전(redmine 1.2.1)에선 별 영향없단다.
그래도 처음에 긴장하고 identifier 는 신중하게 잘 짓자.

2011년 9월 22일 목요일

dotcloud 에 redmine 등록 후 Domain 도 연결해보자

redmine 을 dotcloud.com 에 올렸습니다. 무료니까요.
이후 할것들이 몇가지가 있다.

하나는 Domain 연결이고
나머지 하나는 mail notification 인데 차근차근 보자

잘 등록했다면 list 를 보았을때

$ dotcloud list
redmine:
  - db      (type: mysql; instances: 1)
  - redmine (type: ruby; instances: 1)

라고 나올 것이다.

http://docs.dotcloud.com/guides/domains/ 가이드대로

$ dotcloud alias add ramen.www www.example.com 형식으로 써보자

어플리케이션명이 redmine 이고 모듈도 redmine 이니까

$ dotcloud alias add redmine.redmine www.<니가 쓰는 도메인> 형식이 되겠다.

아래와 같이 나오면 정상.

Ok. Now please add the following DNS record:
www.<니가 쓰는 도메인>. IN CNAME gateway.dotcloud.com.

내 경우엔 서브도메인으로 쓰고 싶어서

$ dotcloud alias add redmine.redmine redmine.<내 도메인> 형식으로 썼다.

브라우저에서  http://redmine.<내 도메인> 으로 접근했을때 CNAME Alias 를 줘서 호스팅 서비스쪽에서 gateway.dotcloud.com 을 바라보게 하고 gateway.dotcloud.com 에서 해당 어플리케이션으로 연결되게 하는 구조다.
netfirms.com 이란 곳에서 도메인 호스팅을 받고 있는데 관련 설정을 보면 이런 식이다.


CNAME (Alias)

A CNAME record (also known as an alias record) is a subdomain that points to a domain name (sales.yourdomain.com >> yourdomain.com)

HostPoints To:Action
redmine
gateway.dotcloud.com
       

CNAME 설정을 이렇게 했다. 쓰고 있는 도메인 호스팅 서비스마다 차이가 있겠지만 알아서 잘 하면 된다.

2011년 9월 20일 화요일

redmine 을 dotcloud.com 에 올렸습니다. 무료니까요.


PaaS(Platform as a Service)의 시대입니다.
지금 배타고 물들어올때 잽싸게 올라타자 하는 마음으로
http://www.dotcloud.com 에 계정을 하나 만들어놓았습니다.
소프트웨어(ex.ASP) 뿐만이 아니라 플랫폼마저도 빌려쓰는 세상이라니 좋은 세상입니다.

자 바로 본론입니다.
먼저 http://dotcloud.com 에 가입하시고 http://docs.dotcloud.com/firststeps/install 에서 cli 도 설치하고 기본 준비를 하세요.
이런건 패스합니다. 읽어보면 멸치라도 할 수 있어요. 봐도 모르시겠다고요. 그럼 Backspace : )
현재는 Free Plan 뿐입니다만 너무도 훌륭한 서비스입니다.

http://yanitime4u.fluxflex.com/56 를 보고 해보니까 쉽더군요.
근데 보실 필요는 없어요. 왜냐면 이 아래에 쓸 내용도 같은 내용이니까요 :)

https://www.dotcloud.com/settings/ 에서 유저명을 바꿔주세요.
API Key, Username,First name, Last name, E-mail address 순으로 있죠?
두번째 Username을 바꿔줍니다. 최종 우리가 사용할 URL은 http://redmine-<Username>.dotcloud.com 이 될테니까요.

일단 지금 홈디렉토리라고 가정하고 복사하고 붙여봅니다.
현재 최신버전인 redmine 1.2.1 을 사용합니다.

$ mkdir redmine
$ cd redmine
$ wget http://rubyforge.org/frs/download.php/75097/redmine-1.2.1.tar.gz
$ tar zxvf redmine-1.2.1.tar.gz

일단 압축을 풀으셨으면 디플로이할때 걸리적거리니까 redmine-1.2.1.tar.gz 일단 지워주고 dotcloud.yml 파일을 만듭니다.
우리는 redmine 을 쓰고 mysql을 db로 쓸테니 다음과 같은 파일을 만듭니다.

$ vi dotcloud.yml
---- 아래 복사하세요 -----
redmine:
  type: ruby
  approot: redmine-1.2.1
  config:
    ruby-version: ree

db:
  type: mysql
---- 여기까지 ----

이제 Application 을 생성해봅니다.

$ dotcloud create redmine
$ dotcloud push redmine

오케이 redmine 이라고 꼭 할 필욘없습니다. 이게 Application 명이니까요 다른 이름을 써도 무방. 설명은 이걸 redmine으로 합니다.

$ dotcloud list
로 확인하거나
https://www.dotcloud.com/dashboard/ 에서 확인해볼 수 있습니다.

여기까지 했다면 준비는 끝났습니다.
이제 남은 건 세세한 설정 뿐이죠.

$ dotcloud info redmine
$ dotcloud info redmine.redmine
$ dotcloud info redmine.db

설정을 보고 어딘가에 복사해놓습니다. 다 쓸데가 있어요
대충 이런식으로 나올겁니다.

$ dotcloud info redmine
db:
    config:
        mysql_password: <mysql 암호>
    instances: 1
    type: mysql
redmine:
    config:
        rack-env: production
        ruby-version: ree
    instances: 1
    type: ruby
    url: http://redmine-<Username>.dotcloud.com/
$ dotcloud info redmine.redmine
aliases:
- redmine-<Username>.dotcloud.com
build_revision: rsync-1316499221.6
cluster: wolverine
config:
    rack-env: production
    ruby-version: ree
created_at: 1316499226.2593739
image_version: aec61048b63c (latest)
ports:
-   name: ssh
    url: ssh://dotcloud@redmine-<Username>.dotcloud.com:13631
-   name: http
    url: http://redmine-<Username>.dotcloud.com/
state: running
type: ruby
$ dotcloud info redmine.db
cluster: wolverine
config:
    mysql_password: <mysql 암호>
created_at: 1316499226.5895569
image_version: 57db01da2848 (latest)
ports:
-   name: ssh
    url: ssh://mysql@redmine-<Username>.dotcloud.com:13632
-   name: mysql
    url: mysql://root:<mysql 암호>@redmine-<Username>.dotcloud.com:13633
state: running
type: mysql

대인배입니다. ssh 까지 제공하다니요. 그저 고맙습니다.
mysql 설정 먼저 합니다.
redmine DB 생성하고 redmine 유저를 만듭니다. 암호는 <mysql 암호> 를 사용합니다.

$ dotcloud ssh redmine.db
$ mysql -u root -p<mysql 암호>
create database redmine character set utf8;
grant all on redmine.* to redmine@"%" identified by "<mysql 암호>";
FLUSH PRIVILEGES;
quit
$ exit

바로 어플리케이션 설정도 들어갑니다.
필요한 ruby gem 들을 설치합니다.

$ dotcloud ssh redmine.redmine
$ gem install mysql
$ gem install rack -v=1.1.1
$ gem install i18n -v=0.4.2
$ exit

거의 다왔습니다.
이제 redmine 압축 푼 경로에 config.database 를 만듭시다.
아까 복사한 것들 잘 붙여넣습니다.

$ cd redmine-1.2.1/
$ vi config/database.yml

production:
  adapter: mysql
  database: redmine
  host: redmine-<Username>.dotcloud.com
  port: <mysql Port>
  username: redmine
  password: <mysql 암호>
  encoding: utf8

이제 내 서버 셋팅만 하면 끝입니다.

$ dotcloud push redmine

이제까지 한 작업을 push 합니다.
서버에 올라가고 나면

$ dotcloud ssh redmine.redmine

ssh 로 다시 어플리케이션 접근해서

$ cd current

현재 버전으로 들어가서
rake 합니다.

$ rake config/initializers/session_store.rb
$ rake db:migrate RAILS_ENV="production"

마지막으로 디폴트데이터를 적재하는데 언어를 묻습니다. 한글을 쓸거니까 ko 라고 입력해줍니다.

$ rake redmine:load_default_data
(in /home/dotcloud/rsync-1316495751.45/redmine-1.2.1)

Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] ko
====================================
Default configuration data loaded.

자 끝났습니다!

http://redmine-<Username>.dotcloud.com 해서 확인해봅니다.

초기 어드민 계정은 admin/admin 이므로 최초 로그인 후 암호 변경합니다.