【Redmine】Redmine導入

Redmine導入の簡単なお仕事(?)が降ってきたためやってみました。
※前提、元々apacheとかmysqlとかしか入ってない程度のまっさらな状態のサーバ
メモ程度にまとめます

メイン参考サイト

http://labs.qui-no.com/140

1. 既存Rubyのアンインストール

Redmineが使用するRubyライブラリはRuby1.8.6以上のバージョンが必要になります。
yumインストールされているRubyのバージョンが古い場合は、一旦アンインストールします。
yum list installed | grep ruby

何も表示されなかったので、何もせずに進みます(※出た場合はrpm -e --nodeps ruby ruby-libs)

2. Rubyのインストール

Rubyの最新版1.9系だとRedmineでテンプレートエラーが発生してしまうため、1.8系の最終バージョンをRPMビルドしてインストールします。

参考サイトを参考に以下のようにします。
現在のバージョンが1.8.7-p249よりも新しいものがあるので、
http://www.ruby-lang.org/ja/downloads/
を見て、最新版のアドレスに読み替えました。

user@centos ~]$ cd /usr/local/src

# ソースコードをダウンロードします。
[user@centos src]$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.gz

# tarボールを解凍します。
[user@centos src]$ tar zxvf ruby-1.8.7-p249.tar.gz

# Makeして実行ファイルを生成します。
[user@centos src]$ cd ruby-1.8.7-p249
[user@centos ruby-1.8.7-p249]$ ./configure --prefix=/usr
[user@centos ruby-1.8.7-p249]$ make

# RPMパッケージングします。
# checkinstallは別途yum install checkinstall でインストールしてください。
[user@centos ruby-1.8.7-p249]$ checkinstall --fstrans=no
毎回止まるところ
[user@centos ruby-1.8.7-p249]$ checkinstall --fstrans=no

で、checkinstallというコマンドはありません的なエラーが出ます。
そこで、

# checkinstallは別途yum install checkinstall でインストールしてください。

の通りに

yum install checkinstall

しても、

No package checkinstall available.

などと言われてしまい、インストール出来ません。
そのため、
http://fujiiyuuki.blogspot.com/2010/03/centosrails.html
を参考に進めます。

# wget http://www.asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.2.tar.gz
# tar xzf checkinstall-1.6.2.tar.gz
# cd checkinstall-1.6.2
# make
# make install

忘れずに

yum install rpm-build

実行した後最後に、
インストールしますか?[y/N]
というのが表示されますが、しっかりyを入力してエンターを押しておきます。
rubyのディレクトリ名が、バージョンで微妙に違うので注意しておきつつ、

# cd /tmp/ruby-1.8.7-p249
# ./configure --prefix=/usr
# make
# checkinstall --fstrans=no

もし、

*** The "rpmbuild" program is not in your PATH!
*** RPM package creation aborted

のエラーが出たりした場合は、yum install rpm-buildがうまく入っていないようなので、もう一度実行すると、大丈夫だと思います。(最後にちゃんとyを入力して、インストールさせているかどうかちゃんとチェック!)

また、もとの参考サイトの続きに戻ります。

[user@centos ruby-1.8.7-p249]$ checkinstall --fstrans=no
...
いくつか質問されますが、全て[Enter]で進めます。

以下のメッセージが表示されたら「R」を回答します。
Slackware [S], RPM [R] or Debian [D]? R ← RPMを回答
...

**********************************************************************

 Done. The new package has been saved to

 /usr/src/redhat/RPMS/i386/ruby-1.8.7-p249-1.i386.rpm
 You can install it in your system anytime using:

      rpm -i ruby-1.8.7-p249-1.i386.rpm

**********************************************************************

# RPMパッケージをインストールします。
[user@centos ~]$ rpm -ivh /usr/src/redhat/RPMS/i386/ruby-1.8.7-p249-1.i386.rpm

# インストールされたRubyを確認します。
[user@centos ~]$ ruby -v
ruby 1.8.7 (patchlevel 249) [i686-linux]

# 完了

3. RubyGemsのインストール

Rubyのパッケージ管理システムであるRubyGemsをインストールします。
[user@centos ~]$ cd /usr/local/src

# ソースコードをダウンロードします。
[user@centos src]$ wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz

# tarボールを解凍します。
[user@centos src]$ tar zxvf rubygems-1.3.5.tgz

# セットアップを実行します。
[user@centos src]$ ruby rubygems-1.3.5/setup.rb

# インストールされたRubyGemsを確認します。
[user@centos ~]$ gem -v
1.3.5
毎回止まるところ
# 念のため最新版にアップデートします。
# 以降はこのコマンドで最新版にアップデートできます。
[user@centos ~]$ gem update --system

zlibどうとか怒られます。

参考サイト(http://d.hatena.ne.jp/double_m/20090224/1235451299)

# cd /usr/local/src/ruby-1.8.6/ext/zlib/
# ruby extconf.rb --with-zlib-include=/usr/include --with-zlib-lib=/usr/lib
# make
# make install

うまく行かなかった場合は、先にさっきと同じ参考サイト(http://fujiiyuuki.blogspot.com/2010/03/centosrails.html)で

# yum install zlib-devel
# ruby extconf.rb --with-zlib-include=/usr/include -with-zlib-lib=/usr/lib
# make
# make install

をしたらうまく行くかもしれません。
(私は先にこれをしていますが、必須かどうかは?)


また主な参考サイトの続きに戻って、

# 念のため最新版にアップデートします。
# 以降はこのコマンドで最新版にアップデートできます。
[user@centos ~]$ gem update --system
Updating RubyGems
Nothing to update

# 完了

4. Rubyライブラリのインストール

Redmineが使用するフレームワークやその他のパッケージをインストールします。
Railsフレームワーク
[user@centos ~]$ gem install rails --include-dependencies
...
# しばらく時間がかかりますが、そのままにしておきます。
# 完了
MySQL用のライブラリ
RedmineのデータベースにMySQLを使用します。
SQLiteを使用する場合は「sqlite3-ruby」をインストールします。
※テスト用途の場合はSQLite、運用ではMySQLを利用する方が良いです
[user@centos ~]$ gem install mysql --include-dependencies
...
# 完了
毎回止まるところ
gem install mysql
ERROR: Error installing mysql:ERROR: Failed to build gem native extension.

このサイト(http://www.pistolfly.jp/weblog/2008/08/gem-install-mysql.html)を参考に、

# gem install mysql -- --with-mysql-config
Building native extensions.  This could take a while...
Successfully installed mysql-2.8.1
1 gem installed
Installing ri documentation for mysql-2.8.1...

No definition for next_result

No definition for field_name
…メッセージは続く

5. データベース作成

参考サイト通り

[user@centos ~]$ mysql -u root -p
******* ← パスワード

# redmineデータベースを作成します。
mysql> CREATE DATABASE `redmine` CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)

# 作成したデータベースを確認します。
# ※データベース名は任意の値に変更してください。
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| redmine            | ← 作成したデータベース
+--------------------+
3 rows in set (0.01 sec)

# redmineデータベースを操作するユーザーを作成します。
# ユーザー名:redmine_user、パスワード:redmine_password
# ※ユーザー名、パスワードは任意の値に変更してください。
mysql> GRANT ALL PRIVILEGES ON `redmine`.`*` TO 'redmine_user'@'localhost' IDENTIFIED BY 'redmine_password';
Query OK, 1 row affected (0.00 sec)

mysql> \q

# 完了

6. Redmineのインストール

参考サイト通り
最新版の確認(http://rubyforge.org/frs/?group_id=1850)

[user@centos ~]$ cd /usr/local/src

# ソースコードをダウンロードします。
[user@centos src]$ wget http://rubyforge.org/frs/download.php/69052/redmine-0.9.2.tar.gz

# tarボールを解凍します。
[user@centos src]$ tar zxvf redmine-0.9.2.tar.gz

# ソースコードを配置します。※場所は任意
# ここでは、/usr/local/redmine-0.9.2 にソースを配置し、
# /usr/local/redmine でアクセスできるようにシンボリックリンクを作成しておきます。
[user@centos src]$ mv redmine-0.9.2 /usr/local/
[user@centos src]$ ln -s /usr/local/redmine-0.9.2 /usr/local/redmine

# 完了

7. Redmineの設定

データベースの環境設定

参考サイト通り

# 設定ファイルを作成します。
[user@centos ~]$ mv /usr/local/redmine/config/database.yml.example \
/usr/local/redmine/config/database.yml

# データベース設定を編集します。
# 環境に応じて項目を変更します。
[user@centos ~]$ vi /usr/local/redmine/config/database.yml
# MySQLを使用する場合
production:
  adapter: mysql
  database: redmine ← 作成したデータベース名
  host: localhost
  username: redmine_user ← 作成したユーザー名
  password: redmine_password ← 作成したパスワード
  encoding: utf8

# SQLiteを使用する場合
production:
  adapter: sqlite3
  database: db/redmine.db

# 保存して完了
メールの環境設定

よくわからなかったので、していません

環境設定

expectパッケージがないため、mkpasswdコマンドが使えないのであえて以下だけにします

# 設定ファイルを作成します。
[user@centos ~]$ mv /usr/local/redmine/config/additional_environment.rb.example \
config/additional_environment.rb

# 環境設定ファイルを編集します。
[user@centos ~]$ vi /usr/local/redmine/config/additional_environment.rb
# 以下を追加します。
# :secret の部分は生成したランダム文字列を記述しま<del>す。</del>せん。
config.action_controller.session = { :key => "_myapp_session", :secret => "some secret phraseとかいうデフォルトの状態でいじらない" }

後でエラーがでないように、/config/environment.rbに追記する。
参考サイト(http://www.sakuttoly.com/blog/2010/01/redmine-centos.html)

 ${REDMINE_ROOT}/config/environment.rb に追加すれば良いみたいです。

“some secret phrase”という部分は変更しなくてはなりませんが、とりあえず今は無視して早速追加します。
# vi config/environment.rb

? 省略

Rails::Initializer.run do |config|
  config.action_controller.session = { :key => "_myapp_session", :secret => "some secret phrase" }

? 省略

# 保存して完了

8. Redmineの初期化

参考サイトでは()を使った書き方がされていますが、エラーがでたため、あえて以下のようにします

#cd /usr/local/redmine;
#rake db:migrate RAILS_ENV=production;

rakeコマンドに失敗し、

RubyGem version error: rack(1.2.1 not ~> 1.0.1)

が表示されたときは、参考(http://fusougomu.jugem.jp/?eid=554)にして、

# gem uninstall rack
 Remove executables:
     	rackup
 
 in addition to the gem? [Yn]  Y
 Removing rackup
 
 You have requested to uninstall the gem:
     	rack-1.2.1
 passenger-2.2.15 depends on [rack (>= 0)]
 If you remove this gems, one or more dependencies will not be met.
 Continue with Uninstall? [Yn]  Y
 Successfully uninstalled rack-1.2.1
# gem install rack -v 1.0.1
 Successfully installed rack-1.0.1
 1 gem installed
 Installing ri documentation for rack-1.0.1...
 Installing RDoc documentation for rack-1.0.1...

このままrakeすると、opensslのエラーが出るので、参考(http://d.hatena.ne.jp/hata-hata/20080416)

$ cd /usr/local/src/ruby-1.8.6/ext/openssl/
$ ruby extconf.rb
# make
# make install

再度、rake db:migrate RAILS_ENV=production;を実行すると、

(in /usr/local/redmine-1.0.2)
rake aborted!
Secret should be something secure, like "de5c3e8ec3f9adc32e2119c98e3db003".  The value you provided, "jkl23iojfeaekjflaeioe", is shorter than the minimum length of 30 characters

先に放置していた、

  config.action_controller.session = { :key => "_myapp_session", :secret => "some secret phrase" }

のsome secret phrase部分です。
先の参考サイト(http://www.sakuttoly.com/blog/2010/01/redmine-centos.html)

上記エラーメッセージ内に自動生成された32文字のランダムな文字列が例としてありますのでこれを使っても良いですし、何か自分で好きに作ってみるのも良いでしょう。

上のエラー文の中のlike以降に書かれている文字列をsome secret phraseの部分に書き換えてしまいましょう。

つまり、
vi /usr/local/redmine/config/additional_environment.rb

vi /usr/local/redmine/config/environment.rb

のsome secret phrase部分を書き換えます。


もう一度rake db:migrate RAILS_ENV=production;
もし、

Mysql::Error: CREATE command denied to user 'redmine_user'@'localhost' for table 'schema_migrations': CREATE TABLE `schema_migrations` (`version` varchar(255) NOT NULL) ENGINE=InnoDB

が出た場合は、

GRANT ALL PRIVILEGES ON redmine.* TO 'redmine_user'@'localhost';

参考サイト(http://d.hatena.ne.jp/name-3333/20100411/1271000161)

エラー等無くrakeが実行されると成功です

9. Redmineの起動

# サーバを起動します。
[user@centos ~]$ /usr/local/redmine/script/server -e production
=> Booting WEBrick
=> Rails 2.3.5 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
...

# サーバを終了する場合は Ctrl-C でシャットダウンします。

これで終了です。


もし、上のコマンドを売って、同じようにCtrl-C to shutdown serverなどと表示されているにもかかわらず、
:3000でアクセス出来ないときは、そもそものapacheの設定(3000ポートにアクセス出来るように設定しているか)辺りを確認です。


今回は3000ポートを許可していなかったので、
passengerを使って、:80でアクセス出来るようにしました。


passengerの設定の参考サイト(http://labs.qui-no.com/170)



ひとまず寝ますおやすみなさい…