読者です 読者をやめる 読者になる 読者になる

matsukaz's blog

Agile, node.js, ruby, AWS, cocos2d-xなどなどいろいろやってます

hetemlにRedmineを入れてみた

結論から言うと、本日(2010/11/17)時点ではRedmineの1.0系と0.9系は無理で、0.8系であればインストールできました。ただし、CGIでの呼び出しになるので非常に遅いです。体感的にはページ表示に5秒以上かかってるような・・・実用に耐えられないかも。

以下、その理由と0.8系でのインストール手順です。

Redmine 1.0系と0.9系がインストールできない理由

まずhetemlの環境では自由にポートを解放できないので、既に用意されている80番ポートのWebサーバ(Apache 2.0.x)を利用するしかないです。httpd.confをいじることもできないので、Railsのアプリケーションを実行させようとするとCGIでの呼び出しのみが可能です(Webrickでの動作は確認できたので、ポートの解放さえ出来れば・・・だったんですが)。

CGIでの呼び出しというのが実は問題で、Rails2.3系?ではCGIからの呼び出しが正しく動作しないらしいです。ソースは以下。

というわけで、Rails 2.3.5で作られているRedmine 1.0系と0.9系は利用できなくて、Rails2.1.2で作られているRedmine 0.8系は利用できるということです。

Redmine 0.8系のインストール手順

RubyGemsインストール

以下を参考にさせて頂きました。

まずはRubyGemsを展開します。

cd ~/
mkdir -p temp/rubygems_src
cd temp/rubygems_src

wget http://rubyforge.org/frs/download.php/70696/rubygems-1.3.7.tgz
tar xvzf rubygems-1.3.7.tgz
cd rubygems-1.3.7

続いてlib/rubygems.rbを修正します。

:bindir            => RbConfig::CONFIG["bindir"],

:bindir            => '/usr/bin',

にします。
あとはsetup.rbを実行します。

mkdir ~/.gem
ruby setup.rb --prefix=~/.gem

.bash_profileあたりに環境変数を設定します。

cd ~/
vi .bash_profile

設定内容は以下で。

export GEM_HOME=~/.gem
export PATH=$GEM_HOME/bin:$PATH
export RUBYLIB=$GEM_HOME/lib

設定を反映してRubyGemsが設定できたことを確認します。

source .bash_profile
gem -v
Rakeインストール
gem install rake

一応確認。

rake --version
Ruby on Railsインストール
gem install rails -v=2.1.2

こちらも一応確認。

rails -v
MySQLの設定

hetemlのコントロールパネルでMySQLのデータベースを作成します。データベース名、ユーザ名、パスワードを覚えておきます。

Redmine 0.8.7インストール

以下を参考にしました。

まずはRedmineを展開します。

cd ~/
wget http://rubyforge.org/frs/download.php/73140/redmine-0.8.7.tar.gz
tar xvzf redmine-0.8.7.tar.gz
cd redmine-0.8.7

データベースの接続情報を修正します。

cp config/database.yml.example config/database.yml
vi config/database.yml

修正内容は以下の通りです。

production:
  adapter: mysql
  database: データベース名
  host: mysql[ユーザ固有の番号].heteml.jp
  username: データベース名
  password: パスワード
  encoding: utf8

セッション暗号化用鍵の生成とDBの初期化を行います。

rake config/initializers/session_store.rb
rake db:migrate RAILS_ENV=production
rake redmine:load_default_data RAILS_ENV=production

メールの送信情報を修正します。

cp config/email.yml.example config/email.yml
vi config/email.yml

修正内容は以下の通りです。

production:
  delivery_method: :smtp
  smtp_settings:
    address: smtp0.heteml.jp
    port: 587
    domain: [自ドメイン名]
    authentication: :login
    user_name: [メール送信時の認証に利用するユーザ名]
    password: [パスワード]


***RedmineとApacheとの連携(CGI呼び出し)
以下を参考にしました。
-[http://moooori-blog.undo.jp/archives/661:title=pop().stack().jump(); » Blog Archive » さくらのレンタルサーバーにRuby on Railsを入れる]

まずhetemlのドメイン・メール設定で、Webサーバのドキュメントルートとなっているディレクトリを確認します(独自ドメインを利用していない場合は /home/sites/heteml/[ユーザ固有のパス]/web)。確認できたら、redmine-0.8.7/publicに対するシンボリックリンクを作成します。
>|sh|
cd ~/
ln -s /home/sites/heteml/[ユーザ固有のパス]/redmine-0.8.7/public /home/sites/heteml/[ユーザ固有のパス]/web/redmine

redmine-0.8.7/public/.htaccessファイルを修正します。

cd redmine-0.8.7
vi public/.htaccess

修正内容は以下の通りです。

#AddHandlerを全てコメント
#<IfModule mod_fastcgi.c>
#       AddHandler fastcgi-script .fcgi
#</IfModule>
#<IfModule mod_fcgid.c>
#       AddHandler fcgid-script .fcgi
#</IfModule>
#<IfModule mod_cgi.c>
#       AddHandler cgi-script .cgi
#</IfModule>
#Options +FollowSymLinks +ExecCGI

# (中略)

#<IfModule mod_fastcgi.c>
#       RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
#</IfModule>
#<IfModule mod_fcgid.c>
#       RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
#</IfModule>
#<IfModule mod_cgi.c>
#       RewriteRule ^(.*)$ dispatch.cgi [QSA,L]
#</IfModule>

#dispatch.cgiに対するRewriteRuleを追加
RewriteRule ^(.*)$ dispatch.cgi [QSA,L]

dispatch.cgiを修正します。

cp public/dispatch.cgi.example public/dispatch.cgi
chmod 755 public/dispatch.cgi
vi public/dispatch.cgi

以下の記述を、

#!/usr/bin/env ruby
require "dispatcher"

以下のように修正します。

#!/usr/bin/ruby
#require "dispatcher"
require "/home/sites/heteml/[ユーザ固有のパス]/.gem/gems/rails-2.1.2/lib/dispatcher"

また、config/environment.rbの修正も行います。

vi config/environment.rb

修正内容は、productionモードの有効化と、環境変数やモジュール読み込みです。

ENV['RAILS_ENV'] ||= 'production'
$LOAD_PATH.push("/usr/lib/ruby/1.8")
$LOAD_PATH.push("/home/sites/heteml/users31/j/u/n/jun116/.gem/lib")
ENV['GEM_HOME'] ||= '/home/sites/heteml/users31/j/u/n/jun116/.gem/'

最後にディレクトリの権限を変更します。

chmod -R 777 files log tmp vendor public/plugin_assets

以上で起動するはず。お疲れさまでした。