トップ > 興味のあること > コンピュータ > ソフトウェア

redmine

2012年7月22日

redmineはいわゆるIssue Tracking Systemである。 Ruby on Railsベースで、tracよりもだいぶ洗練されている。 http://news.mynavi.jp/articles/2009/04/22/redmine/ や http://redmine.jp/guide/RedmineInstall/ を参考にして、 FreeBSD 8.3なマシンにインストール。 まずは下準備として、

  • ruby18-iconv
  • rubygem-sqlite3
  • rubygem-rake
  • rubygem-rails

をインストール。 ついで

 $ svn checkout http://redmine.rubyforge.org/svn/branches/2.0-stable redmine

でredmineを適切なディレクトリにコピーする。 redmineのディレクトリに移動してから、

 % gem install bundler
 % bundle --without development test rmagick mysql postgresql

で必要なgemをインストール。 config/database.ymlに

 production:
   adapter: sqlite3
   database: db/redmine.sqlite3

 development:
   adapter: sqlite3
   database: db/redmine_dev.sqlite3

として、とりあえずはsqliteで動かすことにする。

 $ rake generate_secret_token

でセッションストア秘密鍵を作成。

 $ RAILS_ENV=production rake db:migrate

で必要なデータベースを作成。 管理者アカウントもできあがる。

 $ RAILS_ENV=production rake redmine:load_default_data

で諸々のデータを作成する。 使用言語を聞いてくるので、jaにした。 後は

 $ rails server -d webrick -e production

で動かしてみる。 本当はPassengerとかを使った方がいいのだろうが、 とりあえず一人で使う分にはこれでもいいだろう。 速攻でログインしてもう一つ管理者アカウントを作成し、 デフォルトの管理者アカウントを削除する。 が、外からうまくアクセスできない。

仕方ないのでapacheとpassengerを入れてみる。

 % portinstall apache22
 % portinstall rubygem-passenger

指示に従って/usr/local/etc/apache22/httpd.conf に

 LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.13/ext/apache2/mod_passenger.so
 PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.13
 PassengerRuby /usr/local/bin/ruby18

の3行を追加する。 さらに

 DocumentRoot "/foo/redmine/public"

と、

 <Directory "/foo/redmine/public>
     RailsEnv "production"
     Options Indexes FollowSymLinks
     AllowOverride None
     Order allow,deny
     Allow from all
 </Directory>

を追加して、apacheをrestart。 これで、どこからでもアクセスできるようだ。

2012年7月30日

今まで使っていたtracからは、

 RAILS_ENV=production rake redmine:migrate_from_trac

でデータを移行できるようだ。 ただし、tracのデータベースがsqlite3で、 tracとredmine双方がローカルなファイルシステム上にある、 というのが前提。 まあ、tracのデータベースがsqlite3なら、 一端止めてtarでまとめてからコピーしちゃえばいいんだけど。

2013年4月7日

インストール

サーバーのOSをFreeBSD 9.1にしたので、 最初からインストールし直し。 redmineもバージョンがあがっているので、 微妙にインストール方法が変わっている。 今回は、ruby18とruby20をインストールして、 /usr/local/bin/ruby をruby20にリンクしておいた。 で、まずはruby-gemsをインストール。 が、まだruby-gemsはruby18に依存しているようだ。 rubyのハードリンクをruby18に戻す。 で、

  • ruby18-iconv
  • rubygem-sqlite3

をインストールしてから、

  $ git clone git://github.com/redmine/redmine.git

でリポジトリをまるごとコピー。

  # chown -R www:www redmine/
  # chmod -R g+w redmine/

でパーミッションを変更。 どうせgitのリポジトリなので、

  $ git co 2.3.0
  $ git co -b 2.3.0-local

で、おれおれブランチを作っておく。 redmineのディレクトリに移動してから、

  # gem install bundler
  # bundle --without development test mysql postgresql

で必要なgemをインストール。 config/database.ymlは

 production:
   adapter: sqlite3
   database: db/redmine.sqlite3

と、相変わらずお手軽にSQLiteである。

  $ rake generate_secret_token

でセッションストア秘密鍵を作成。

  $ RAILS_ENV=production rake db:migrate

でデータベーススキーマを作成。

  $ RAILS_ENV=production rake redmine:load_default_data

でデータ諸々を作成し、使用言語を設定。 なぜかpublic/plugion_assetsだけ作成されていないので、 mkdirで作成して所有者をwwwに変えておく。 テスト起動は

  $ ruby script/rails server webrick -e production

で、http://localhost:3000/ でアクセスできる。 まずはadminでログインして新しい管理者アカウントを作り、 adminは削除しておく。

passenger

passengerもバージョンが上がっているので、httpd.confには

  LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.19/ext/apache2/mod_passenger.so
  PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-3.0.19
  PassengerRuby /usr/local/bin/ruby18

である。

 DocumentRoot "/foo/redmine/public"

と、

 <Directory "/foo/redmine/public>
     RailsEnv "production"
     Options Indexes FollowSymLinks
     AllowOverride None
     Order allow,deny
     Allow from all
 </Directory>

はそのままでOKだった。

ただし、redmine/db/redmine.sqlite3 をapacheが読み書きできるように設定しておかないと、 Internal Server Errorになる。

tracからインポート

tracからのインポートは相変わらず

  $ RAILS_ENV=production rake redmine:migrate_from_trac

でいけるが、どうやらtrac側のデータベースはSQLite以外にも、 mysql2とpostgresqlに対応したようである。

gitリポジトリ

800コミットで容量にして3GB超えのリポジトリを設定すると、 もちろんTime OutでInternal Server Errorになる。 そこで最初に同じ名前で空のリポジトリを作って登録する。 これはすぐに終わるので、 ダミーのリポジトリを削除して本当のリポジトリと入れ替える。 これでなんとか表示してくれたが、 一番最初はだいぶ待たされた。 これでもダメなら、

  $ ./script/rails runner "Repository.fetch_changesets" -e production

という方法があるらしい。