Redmine 설치하기

Bookmark and Share

다음의 두 가지 방식으로 레드마인을 설치할 수 있다.
(설명은 우분투 리눅스를 기반으로 하고 있으나 데비안에서도 같은 설정이 가능할 것이라고 생각한다.)

안정 버전 설치

(doc:install-redmine-stable)

Ubuntu 14.04 기준으로, Redmine의 최신 안정 버전(2.5.2)을 설치하는 과정을 설명한다. 기본적으로, Redmine 공식 페이지의 설명과 다르지 않다. (공식문서)

준비

Redmine은 Ruby On Rails 애플리케이션으로, Ruby/Rails를 위한 기본 패키지가 설치되어 있어야 한다.

$ sudo apt-get install ruby ruby-dev gem

위 명령으로 ruby와 gem을 설치해준다. (ruby-dev는 Native Gem을 Build할 때 필요하다) 또한, 아래와 같이 Ruby와 직접적인 관련은 없지만, 우리의 환경에 필요한 Build 도구를 함께 설치해준다.

$ sudo apt-get install build-essential 
$ sudo apt-get install git
$ sudo apt-get install postgresql-server-dev-9.3

다음은, Bundler를 준비하는 과정인데, 이것은 Ubuntu 패키지를 쓰는 것 보다 이미 설치된 gem을 이용하는 방식으로 하였다.

$ sudo gem install bundler
Fetching: bundler-1.7.3.gem (100%)
Successfully installed bundler-1.7.3
1 gem installed
Installing ri documentation for bundler-1.7.3...
Installing RDoc documentation for bundler-1.7.3...
$

ruby on rails와 관련된 내용은 위와 같고, 다음은 데이터베이스의 설정이다.
개인적으로 요즘은 PostgreSQL을 사용하고 있다.

superhero@server:~$ sudo -i -u postgres
postgres@server:~$ pwd
/var/lib/postgresql
postgres@server:~$ psql
psql (9.3.5)
Type "help" for help.

postgres=# CREATE ROLE redmine LOGIN PASSWORD 'my_password';
CREATE ROLE
postgres=# CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;
CREATE DATABASE
postgres=# \q
postgres@server:~$

위와 유사한 방식으로, 사용자 redmine 과 데이터베이스 redmine을 만들어주면 된다.

본격적인 설치

앱이 설치될 위치로 이동하여, 다운로드한 패키지를 풀어준다.

$ cd /var/www/apps/
$ tar xvf ~/redmine-2.5.2.tar.gz 
$ ln -s redmine-2.5.2 redmine
$ cd redmine
$

로컬 변경이 일어날 때 기억하기 위하여 앱 전체에 대한 버전관리를 적용한다.

$ git init
Initialized empty Git repository in /var/www/apps/redmine-2.5.2/.git/
$ git add . 
$ git commit -m "initial commit"

이제 번들 gem을 설치할 차례. 운영환경에는 불필요한 것들을 제외하기 위해, —without 옵션을 활용한다.

$ bundle install --without development test rmagick
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Installing rake 10.1.1
Installing i18n 0.6.11
Installing multi_json 1.10.1
Installing activesupport 3.2.19
Installing builder 3.0.0
Installing activemodel 3.2.19
Installing erubis 2.7.0
Installing journey 1.0.4
Installing rack 1.4.5
Installing rack-cache 1.2
Installing rack-test 0.6.2
Installing hike 1.2.3
Installing tilt 1.4.1
Installing sprockets 2.2.2
Installing actionpack 3.2.19
Installing mime-types 1.25.1
Installing polyglot 0.3.5
Installing treetop 1.4.15
Installing mail 2.5.4
Installing actionmailer 3.2.19
Installing arel 3.0.3
Installing tzinfo 0.3.41
Installing activerecord 3.2.19
Installing activeresource 3.2.19
Installing awesome_nested_set 2.1.6
Using bundler 1.7.3
Installing coderay 1.1.0
Installing rack-ssl 1.3.4
Installing json 1.8.1
Installing rdoc 3.12.2
Installing thor 0.19.1
Installing railties 3.2.19
Installing jquery-rails 2.0.3
Installing net-ldap 0.3.1
Installing pg 0.17.1
Installing ruby-openid 2.3.0
Installing rack-openid 1.4.2
Installing rails 3.2.19
Installing redcarpet 2.3.0
Your bundle is complete!
Gems in the groups development, test and rmagick were not installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

그리고, 이제 실행환경용 데이터(보안 토큰) 및 데이터베이스를 초기화해준다.

$ rake generate_secret_token
$ RAILS_ENV=production rake db:migrate
$ RAILS_ENV=production rake redmine:load_default_data

Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, et, 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, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] 
====================================
Default configuration data loaded.

웹서버의 설정

Redmine의 설정이 끝났으면, 앱을 구동하기 위한 환경을 준비한다. 여기서는 NginX와 Unicorn을 활용할 것이다.

Nginx의 설정

upstream unicorn_redmine {
    server 127.0.0.1:9494;
}

server {
    listen 80;
    listen 443 default_server ssl;
    ...

    location /redmine {
        alias /var/www/apps/redmine/public;
        try_files $uri/index.html $uri.html $uri @redmine;
    }
    location @redmine {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://unicorn_redmine;
        expires off;
    }
    ...
}

Unicorn의 설정

첨부 파일 참조

Redmine의 수정

Unicorn+Nginx 환경과 함께, redmine의 경로를 '/'가 아닌 곳으로 잡아주기 위하여 다음과 같은 변경을 하였다.

diff --git a/config/application.rb b/config/application.rb
index 58d949a..7bfb879 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -57,5 +57,7 @@ module RedmineApp
     if File.exists?(File.join(File.dirname(__FILE__), 'additional_environment.r
       instance_eval File.read(File.join(File.dirname(__FILE__), 'additional_env
     end
+
+    config.assets.prefix = '/redmine/assets'
   end
 end
diff --git a/config/routes.rb b/config/routes.rb
index 6be563d..177cc7a 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -15,7 +15,9 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, US
 
+Redmine::Utils::relative_url_root = "/redmine"
 RedmineApp::Application.routes.draw do
+scope Redmine::Utils::relative_url_root do
   root :to => 'welcome#index', :as => 'home'
 
   match 'login', :to => 'account#login', :as => 'signin', :via => [:get, :post]
@@ -354,3 +356,4 @@ RedmineApp::Application.routes.draw do
     end
   end
 end
+end

다양한 구동환경에 따른 예시가 공식 사이트에 있다.

이상의 설정으로 기본적인 동작은 완성

개발 버전 설치

(doc:install-redmine-trunk)

Redmine의 최신 기능을 사용하고픈 생각과, 작게라도 Redmine의 개발에 참여해보려는 욕심에 최신 개발 버전을 사용해보기로 했다.

먼저 subversion을 설치한다. 물론, 앞으로 개발하게 될 뭔가를 위한 것이기도 하지만, 그에 앞서 redmine의 최신 버전을 가져올 방법이 subversion checkout이기 때문이다. (redmine은 subversion으로 관리되고 있고 또한 동시에 github에 미러되고 있다.)

$ sudo apt-get install subversion

다음은 프로젝트를 위한 저장소 환경을 만들어줄 차례.(redmine 설치의 일부라고 볼 수는 없지만…) 이번 설치는 전용의 가상머신 위에서 이루어지고 있어서 가상머신 정책에 의하여 응용/데이터를 /opt 아래에 두기로 한다. (FHS 측면에서 애매한 부분은 있지만 완전히 어긋난다고 볼 수도 없다. 가장 중요한 것은, 이렇게 하는 것이 가상머신 관리에 편리해서…)

sio4@ubuntu:/opt$ sudo chown sio4 .
sio4@ubuntu:/opt$ mkdir repository
sio4@ubuntu:/opt$ svnadmin create repository/vios
sio4@ubuntu:/opt$ ls repository/vios/
README.txt  conf  db  format  hooks  locks
sio4@ubuntu:/opt$

그리고, 그 옆에서 아래와 같이 최신버전의 redmine을 가져온다.

$ svn co http://redmine.rubyforge.org/svn/trunk redmine

redmine은 ruby on rails 응용프로그램이므로 구동을 위해 ruby platform을 마련해야 한다. 다음의 명령을 이용하여 일단 ubuntu 8.10에 포함되어있는 ruby와 일부 관련 패키지를 설치한다. 주의할 점은, 이 단계에서 rails, rake 등이 빠져있다는 점인데, redmine과의 버전 호환성 때문에 다음 단계에서 gem 명령을 이용하여 별도로 설치할 것이다.

$ sudo apt-get install ruby rubygems sqlite3 libsqlite3-ruby libopenssl-ruby

이제 rails 차례. 다음과 같이 gem 명령을 이용하여 rails를 설치해준다. 이 과정에서 호환되는 버전의 rake가 함께 설치된다. 이렇게 gem 명령을 일반 사용자 계정으로 실행하게 되면 해당 gem이 사용자 경로에 설치되게 된다. 이렇게 설치된 rails를 freeze 명령으로 redmine의 vendor 아래에 설치하도록 한다. (필수적인 것은 아니지만 독립성 확보를 위하여)

$ gem install rails -v=2.2.2 --no-rdoc --no-ri
$ export PATH=$PATH:~/.gem/ruby/1.8/bin
$ rake rails:freeze:gems

다음은 기본 설정. 데이터베이스와 메일시스템을 설정해준다. (역시 간단한 sqlite3가 좋다.)

거의 끝나간다. 다음은 데이터베이스를 초기화할 시간. 아래와 같이 데이터베이스를 구성하고, 함께 배포되는 기본값들을 반영하도록 한다.

$ rake db:migrate RAILS_ENV=production
$ rake redmine:load_default_data RAILS_ENV=production

참고: 현재 설치한 리비전(r2791)에는 초기 데이터 적재 내용 중 일부 내용(문서형식, 이슈우순선위, 작업분류 등의 Enum 값)이 정상적으로 반영되지 않는 문제가 있었다. (patch-default-enums)

다음은 보안을 위한 session 정보 생성. 전에 없던 것인데…

sio4@ubuntu:/opt/redmine$ rake config/initializers/session_store.rb
(in /opt/redmine)
sio4@ubuntu:/opt/redmine$

끝! 이제 돌려보자!

sio4@ubuntu:/opt/redmine$ ruby script/server webrick -e production -p 7180
=> Booting WEBrick...
=> Rails 2.2.2 application started on http://0.0.0.0:7180
=> Ctrl-C to shutdown server; call with --help for options
[2009-06-11 23:57:09] INFO  WEBrick 1.3.1
[2009-06-11 23:57:09] INFO  ruby 1.8.7 (2008-08-11) [x86_64-linux]
[2009-06-11 23:57:09] INFO  WEBrick::HTTPServer#start: pid=3114 port=7180
<...>
^C[2009-06-11 23:59:35] INFO  going to shutdown ...
[2009-06-11 23:59:36] INFO  WEBrick::HTTPServer#start done.

또는, mongrel을 써보자

$ sudo apt-get install mongrel
$ mongrel_rails start -d -e production -p 7080

Bookmark and Share


따로 명시하지 않는 한에서 이 사이트의 모든 콘텐츠는 다음의 라이선스를 따릅니다: Creative Commons Attribution-NonCommercial 3.0 License