二週目、今回は奇麗なやり方。

実際には元のサーバはどうにかこうにか動かせるようになってしまって、
今更戻すわけにはいかないので、今回はAWSのCentOSイメージを使って検証。

AMI-ID:ami-10b55379 Manifest:cent53-base/ami-centos5.3-base.manifest.xml

を使用する。

こういう検証のやり方は結構便利だ。そのうち実機サーバーのイメージを作ってそれを
EC2で動かしてテストすればさらに便利そう。

では何事もなかったように最初から。(AWSにしたのでインストールしたものとか全部やり直し)

一応、再びRubyとRailsのバージョンあわせから。

yum install -y mysql-server mysql-devel

wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p383.tar.gz

tar zxvf ruby-1.8.6-p383.tar.gz

cd ruby-1.8.6-p383

./configure --prefix=/usr

make

checkinstall

rpm -ivh --nomd5 /usr/src/redhat/RPMS/i386/ruby-1.8.6-1.i386.rpm

checkinstallってなんやねんって人は前の記事を参考。

また、既にRubyをインストールしちゃってて競合が起きてる場合で、
yumでインストールしている人はアンインストールしませう。

yum remove ruby ruby-libs ruby-irb ruby-rdoc ruby-devel

でうまくいくはず。

*ただし、既に他のバージョンに依存するものがある場合は要注意。

次にRubyGemsをインストール

wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz

tar zxvf rubygems-1.3.5.tgz

cd rubygems-1.3.5

ruby setup.rb

Railsのインストール。記録用にログとか残す。
Redmineが使用するRailsバージョンは2.2.2なので、指定してインストールする。

gem install rails --include-dependencies -v2.2.2
Successfully installed activerecord-2.2.2
Successfully installed actionpack-2.2.2
Successfully installed actionmailer-2.2.2
Successfully installed activeresource-2.2.2
Successfully installed rails-2.2.2
5 gems installed
Installing ri documentation for activerecord-2.2.2...
Installing ri documentation for actionpack-2.2.2...
Installing ri documentation for actionmailer-2.2.2...
Installing ri documentation for activeresource-2.2.2...
Installing ri documentation for rails-2.2.2...
Installing RDoc documentation for activerecord-2.2.2...
Installing RDoc documentation for actionpack-2.2.2...
Installing RDoc documentation for actionmailer-2.2.2...
Installing RDoc documentation for activeresource-2.2.2...
Installing RDoc documentation for rails-2.2.2...

…残す意味ないような

Mongrelインストール。こっちもついでに。

gem install mongrel
Successfully installed gem_plugin-0.2.3
Successfully installed daemons-1.0.10
Successfully installed cgi_multipart_eof_fix-2.5.0
Successfully installed mongrel-1.1.5
4 gems installed
Installing ri documentation for gem_plugin-0.2.3...
Installing ri documentation for daemons-1.0.10...
Installing ri documentation for cgi_multipart_eof_fix-2.5.0...
Installing ri documentation for mongrel-1.1.5...
Installing RDoc documentation for gem_plugin-0.2.3...
Installing RDoc documentation for daemons-1.0.10...
Installing RDoc documentation for cgi_multipart_eof_fix-2.5.0...
Installing RDoc documentation for mongrel-1.1.5...

mkdir /var/redmine

cd /var/redmine

svn checkout http://redmine.rubyforge.org/svn/trunk/ .

次にMysqlのRedmine用データベースを作成する。

mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

にゅ?
ググってみるとmysqlが起動してない模様。そりゃ接続できんね。

/etc/rc.d/init.d/mysqld start

ついでに起動時に動くよう設定。

chkconfig mysqld on
chkconfig --list mysqld
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off

んだば再度

mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or ¥g.
Your MySQL connection id is 2
Server version: 5.0.45 Source distribution

Type 'help;' or '¥h' for help. Type '¥c' to clear the buffer.

mysql> create database redmine character set utf8;
Query OK, 1 row affected (0.00 sec)
mysql> exit
Bye

ここで明示的にredmineデータベースをUTF8に設定しておかないと色々文字化けで
苦しんだりするかもしれないので注意しましょう。

で、次はRedmineの設定を弄る。

サンプル用の設定ファイルをコピーして使う。
usernameとpasswordは先ほど決めたものに変更、developmentとtestのdatabaseをredmine
にするのは、元のままだと同名のデータベースを作らなければならず、Redmineでは最初から
運用するため使わないので無駄となる。よって運用用のデータベースと同じにしてしまう。

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

以下のようにデータベースの設定を行う。

production:
  adapter: mysql
  database: redmine
  host: localhost
  username: root
  password:
  encoding: utf8
  socket: /var/lib/mysql/mysql.sock

development:
  adapter: mysql
  database: redmine
  host: localhost
  username: root
  password:
  encoding: utf8

test:
  adapter: mysql
  database: redmine
  host: localhost
  username: root
  password:
  encoding: utf8

まあ、実際にはProductionしか使わないのであるが、後学のために
三つとも書いておく。今後のRailsプロジェクトでコピペに使えるし。
databaseのところ書き換え忘れてエラー出しそうである。

Railsのデータベースのマイグレーション

rake db:migrate RAILS_ENV="production"

!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
rake aborted!
no such file to load -- mysql

マタデスカ

gem install mysql

では再度

rake db:migrate RAILS_ENV="production"

==  Setup: migrating ==========================================================
-- create_table("attachments", {:force=>true})

省略

==  FixMessagesStickyNull: migrating ==========================================
==  FixMessagesStickyNull: migrated (0.0005s) =================================

あっさり成功

次はデフォルトデータの読み込み

rake load_default_data RAILS_ENV="production"
(in /var/redmine)

Select language: bg, bs, ca, cs, da, de, el, en, es, fi, fr, gl, he, hu, it, ja, ko, lt, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sv, th, tr, uk, vi, zh, zh-TW [en] ja

さて、いよいよサーバーを起動する

ruby script/server

Status: 500 Internal Server Error Content-Type: text/html
500 Internal Server Error

…?

コンソールの方を確認。

A secret is required to generate an integrity hash for cookie session data. Use config.action_controller.session =
{ :session_key => "_myapp_session", :secret => "some secret phrase of at least 30 characters" } in config/environment.rb

yum -y install expect

mkpasswd -l 32

vim config/environment.rb

config.action_mailer.perform_deliveries = false

config.action_controller.session = { :session_key => "_myapp_session", :secret => "さっき生成した文字列" }

ruby script/server

成功。
いやー一週目の苦労はなんだったんだ…

後はAdmin:Adminでログインし、パスワードの変更、ユーザーの登録を行う。
ログイン後MyAccount<Languageで日本語を選択すると日本語化できる。

下記サイトを参照。
http://blog.apecell.com/2008/04/02/id/38
http://blog.livedoor.jp/leaveanest/archives/846257.html
http://uprush.net/2009/06/redmine%E3%82%92centos5%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/
http://d.hatena.ne.jp/snusmum/20090827/1251380110
http://blog.livedoor.jp/maru_tak/archives/50664746.html