Redmine を rbenv + ruby-build + bundler + sqlite3 で導入 / 構築する
追記 2012/07/26
現在のRedmineの最新バージョンは 2.0.3 で、それはいいんだけど
Redmine 1.4よりRedmineが依存するgemの管理のためにBundlerが使われるようになりました。依存するgemのインストール・アップデートを行うために、Redmineのインストールディレクトリで bundle update (Redmine 1.4以降) または bundle install (Redmine 1.3以前) を実行してください。
ってあるようにこの記事がうpされてる1.3.2では標準では bundler で導入ではなかったし GemFileも自作剃る必要があった。でも今では標準でbundlerを使うようになってるし、きっとたぶん標準でGemFileが用意されている。なので、以下の説明は若干古い可能性はある。
誰得
社内のBTSがRedmineで今日ちょっとなんかあったから、なんとなくRedmine鯖を立ててみようとした。せっかくだからrbenv+bundlerでサンドボックス化しようとしたらいろいろとハマったのでメモる。というかこの4時間くらいの調査と作業をまとめておきたい。
はっきり言って誰得である。ちゃんと使うならMySQLだろうしApacheなりNgingxなりで串ったり、そもそも専用鯖として立てるためにbundlerでいらないところでハマる必要ない。
前提::rbenv+ruby-build+bundler環境を整える
Sass環境を整えるためにrbenv+ruby-build+bundlerしたメモ - AtAsAtAmAtArA
これの続きなのでいちおう ruby 1.9.3-rc1 が global にはいっているという前提。まあ手順どおりにやればハマることはきっとない
あとOSはUbuntuです。なんか yum install sqlite3-devel とかいろいろ出てきたからみんなCentOSで立ててるんですか?
手順
だいたい公式ドキュメントに準じている。が、いろいろとハマった。
Redmineのインストール | Redmine.JP
Redmine本体の入手
以下のページから好きなバージョンを入手。現時点での最新版の Redmine 1.3.2 を構築する。
#tgzを入手 wget http://rubyforge.org/frs/download.php/75910/redmine-1.3.2.tar.gz #解凍 tar xzvf redmine-1.3.2.tar.gz #いらなかったら消す #rm redmine-1.3.2.tar.gz #これ以後は下記のディレクトリで作業する cd redmine-1.3.2 pwd #/home/atasatamatara/redmine-1.3.2
ruby 1.8.7 をインストール & 有効にする
rbenv install 1.8.7-p358 rbenv global 1.8.7-p358 #現在のバージョンを確かめる ruby -v #ruby 1.8.7 (2012-02-08 patchlevel 358) [x86_64-linux]
bundlerも 1.8.7 用にインストールする必要がある
rbenv exec gem install bundler
Gemfileの作成
ここが一番ハマったかもしれない。Redmineの必要条件にはRailsとRackしか書いてないけど、実際はこのあと必要になるもろもろをインストールしておいたほうがいい。
#atasatamatara@dev:~/redmine-1.3.2$ cat Gemfile source "http://rubygems.org" #公式ドキュメントに準じる gem "rails", "2.3.14" gem "rack", "1.1.1" #SQLite3を使うなら。現時点での最新は1.3.5だった気がするけど、それでははいらなかった #当然SQLite3自体は入れておくこと #sudo apt-get install sqlite3 gem "sqlite3-ruby", "1.3.3" #buildツール、らしい。これもバージョン依存が激しいらしい gem "rake", "0.8.7" #なんか必要らしい gem "rdoc", "2.4.2" #入れろといわれたからいれたけどよくわからない gem "rubytree", ">= 0" gem "coderay", "~> 1.0.0"
bundle install --path vendor/bundle
SQLite3の設定
デフォルトだとこんなエラーがでる
ERROR: Error installing sqlite3-ruby: ERROR: Failed to build gem native extension. /usr/bin/ruby1.8 extconf.rb checking for sqlite3.h... no sqlite3.h is missing. Try 'port install sqlite3 +universal' or 'yum install sqlite3-devel' *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/usr/bin/ruby1.8 --with-sqlite3-dir --without-sqlite3-dir --with-sqlite3-include --without-sqlite3-include=${sqlite3-dir}/include --with-sqlite3-lib --without-sqlite3-lib=${sqlite3-dir}/lib
おれはyumなんてつかえねぇ!portでもねぇ!とあちこち探してたらやっと同じ症状の人に巡り会えた。
Ubuntuならそのままだとsqlite3-rubyがインストールに失敗するはずなので以下を入れておく。
sudo apt-get install libsqlite3-dev
データベースまわりの設定
config/database.ymlを設定する
#サンプルからコピーしておく
cp config/database.yml.example config/database.yml
vi config/database.yml
sqlite3周りだけ設定して、あとはコメントアウトでもしておく
production: adapter: sqlite3 dbfile: db/redmine.db
セッションストア秘密鍵を言われるがままに作成する
#bundle 経由でこれからも操作を行う bundle exec rake config/initializers/session_store.rb
データベース上にテーブルを言われるがままに作成する
これも順番を間違えるとなんかうまくいかない
#環境変数? RAILS_ENV=production #これもこうやって引数をわたさないとなんかうまくいかない bundle exec rake db:migrate RAILS_ENV=production
デフォルトデータをデータベースに言われるがままに登録する
#さっき環境変数に登録したはずだけどいちおう RAILS_ENV=production #これもさっきと同じで引数に与えてやる感じ。なぜか公式ドキュメントと逆になってる…… bundle exec rake redmine:load_default_data RAILS_ENV=production
localeを聞かれるのでとりあえず ja って答えておいた
パーミッション言われるがままに登録する
公式ドキュメントではそうなってるが、その前に redmineユーザーを作らなくてはならない
sudo useradd redmine
で、登録
#今回はatasatamataraグループに所属させる。じゃないとあとでパーミッションでエラーになる。 #自分のhomeでやってるからこうなる sudo chown -R atasatamatara:redmine files log tmp public/plugin_assets #パーミッションの変更 sudo chmod -R 755 files log tmp public/plugin_assets
実際に起動する!
#これもbundle経由で行う bundle exec ruby script/server webrick -e production
実際にアクセスしてみましょう
http://localhost:3000/ #自分の場合はVirtualbox上で動いているのでこっちだった #サーバー自体は0.0.0.0:3000で動いてくれるからどっからでもアクセスできる #Djangoの開発サーバーみたいにデフォルトだと外部からみれれないとかなくてよかった…… #http://192.168.56.101:3000/
最初の管理者は admin:admin でいけます。とりあえず管理や設定から日本語にしたりプロジェクトつくったりユーザー登録したりできました。
Redmineの実践的な内容は他のエントリに譲ります。出オチですが、これは単にrbenv+ruby-build+bundler+sqlite3経由で環境を作ってみたかっただけです。
感想
Rubyは依存が激しいよママン。不思議な呪文が必要だよママン。