(覚え書き) col redmine1.2→redmine2.3の準備

2013/03/27 ごろの作業

# 依存パッケージの準備

```bash
$ sudo yum install readline-devel curl-devel libyaml-devel
$ sudo yum install ImageMagick ImageMagick-devel
```

# (＊後付け) rbenv の準備

## rbenv

http://blog.kyanny.me/entry/2012/02/03/155652 を参考にsystem-wideにrbenvをインストール

```bash
$ su - 
# vi rbenv.sh 
# sh rbenv.sh 
# exit 
$ su - 
$ rbenv 
rbenv 0.4.0-42-g0556849 
```

## ruby のセットアップ

```bash
$ rbenv install 1.9.3-p392 
$ rbenv rehash 
$ rbenv global 1.9.3-p392 
$ ruby -v 
ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-linux] 
```

(2014/10) 今なら ruby 2.1.2 で大丈夫と思われる

```bash
$ rbenv install 2.1.2
$ rbenv rehash 
$ rbenv global 2.1.2 
$ ruby -v 
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-linux]
```

## rubygem&bundlerのセットアップ

rubygemはrbenvに入っているのでそれを利用。

```bash
$ sudo /usr/local/rbenv/shims/gem install bundler --no-rdoc --no-ri 
Fetching: bundler-1.3.5.gem (100%) 
Successfully installed bundler-1.3.5 
1 gem installed 
```

→ MySQLのセットアップの前まで終わり


# ~~Rubyの準備~~

~~Ruby 2.xにはPassengerが対応していないので1.9.3をインストールする。
http://www.ruby-lang.org/ja/downloads/ にて確認。~~

```bash
$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p392.tar.bz2
$ rpmbuild -tb ruby-1.9.3-p392.tar.bz2
エラー: ruby-1.9.3-p392.tar.bz2 から spec ファイルの読み込みに失敗しました。
```

~~specファイルがないため普通にmakeしていく~~

```bash
$ tar xjvf ruby-1.9.3-p392.tar.bz2
$ cd ruby-1.9.3-p392
$ ./configure --disable-install-doc
$ make
$ sudo /usr/local/sbin/checkinstall --exclude=/selinux
...(略)
/home/masashi/ruby-1.9.3-p392/lib/fileutils.rb:858:in `utime': No such file or directory - /usr/local/bin/ruby (Errno::ENOENT)
        from /home/masashi/ruby-1.9.3-p392/lib/fileutils.rb:858:in `block in install'
```

~~エラーする。どうもcheckinstallにバグがあるらしい。
--fstrans=no が必要だがこれもcheckinstallrcに設定してあるのだが効いていない（lib64側にないとだめなのか？...メッセージを読むと
```sudo cp /usr/local/lib/checkinstall/checkinstallrc /usr/local/```
と/usr/local 直下におく必要がある。Makefileをどこか書き換えれば良いか？）~~

```bash
$ sudo /usr/local/sbin/checkinstall --exclude=/selinux --fstrans=no
...(略,何回かEnter)

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

 Done. The new package has been saved to

 /root/rpmbuild/RPMS/x86_64/ruby-1.9.3-p392-1.x86_64.rpm
 You can install it in your system anytime using:

      rpm -i ruby-1.9.3-p392-1.x86_64.rpm

**********************************************************************
$ sudo yum localinstall /root/rpmbuild/RPMS/x86_64/ruby-1.9.3-p392-1.x86_64.rpm
...(略)
$ ruby -v
ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-linux]
```

# ~~RubyGemsのインストール~~

~~http://rubyforge.org/frs/?group_id=126 のサイトで最新版のURLを取得する。~~

```bash
$ wget http://rubyforge.org/frs/download.php/76729/rubygems-1.8.25.tgz
$ tar xzvf rubygems-1.8.25.tgz
$ cd rubygems-1.8.25
$ sudo /usr/local/bin/ruby setup.rb
```

# ~~bundlerのインストール~~

```bash
$ sudo /usr/local/bin/gem install bundler --no-rdoc --no-ri
```

# MySQLのセットアップ

my.cnfが /usr/my.cnf にあるがどうも /etc/my.cnf の読み込みが優先され、かつ、/usr の直下は見に来ない模様なので移動する。

```bash
$ sudo chkconfig mysql on
```

だけはやっておくこと。

# redmineの展開

http://rubyforge.org/frs/?group_id=1850 からredmineの最新版(2013/09/17では2.3.3)を取得する。

```bash
$ wget http://rubyforge.org/frs/download.php/77138/redmine-2.3.3.tar.gz
$ tar xzvf redmine-2.3.3.tar.gz
$ sudo mv redemine-2.3.3 /var/www
$ sudo ln -s /var/www/html/redmine /var/www/redmine-2.3.3/public
```

続いて古いバージョン(cybele）の移動

```bash
$ tar xjvf redmine-1.2.2.tar.bz2
$ sudo mv redmine-1.2.2 /var/www
$ sudo ln -s /var/www/html/redmine-old /var/www/redmine-1.2.2/public
```

# passengerの準備

(rbenv を使っているならパスは変更する必要がある)

```bash
$ sudo /usr/local/bin/gem install passenger --no-rdoc --no-ri
$ sudo /usr/local/bin/passenger-install-apache2-module
(...略)
--------------------------------------------
The Apache 2 module was successfully installed.

Please edit your Apache configuration file, and add these lines:

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

After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific
configuration!
```

# passenger.confを作成する

rubyのバージョンによってやはりパスがことなるので注意

```bash
$ sudo vi /etc/httpd/conf.d/passenger.conf
---
# Passengerの基本設定
# passenger-install-apache2-module の結果で表示された部分が以下になります。
# passenger-install-apache2-module --snippet で再確認もできます。

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.19/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.19
PassengerRuby /usr/local/bin/ruby
PassengerDefaultUser httpd
PassengerDefaultGroup httpd

# Passengerが追加するHTTPヘッダを削除するための設定（任意）。
#
Header always unset "X-Powered-By"
Header always unset "X-Rack-Cache"
Header always unset "X-Content-Digest"
Header always unset "X-Runtime"

# 必要に応じてPassengerのチューニングのための設定を追加（任意）。
# 詳しくはPhusion Passenger users guide(http://www.modrails.com/documentation/Users%20guide%20Apache.html)をご覧ください。
PassengerMaxPoolSize 20
PassengerMaxInstancesPerApp 4
PassengerPoolIdleTime 3600
PassengerHighPerformance on
PassengerStatThrottleRate 10
PassengerSpawnMethod smart
RailsAppSpawnerIdleTime 86400
RailsFrameworkSpawnerIdleTime 0

# redmine 用のパス設定
RackBaseURI /redmine
RackBaseURI /redmine-old

---

$ sudo service httpd configtest
Syntax OK
$ sudo service httpd restart
```
... passenger が期待通りに動かず、 http://x.x.x.x/redmine にアクセスしてもディレクトリ構造が表示されるだけ。
passenger.confが読み込まれていない模様・・・httpd.conf がまずい。

```bash
$ sudo vi /etc/httpd/conf/httpd.conf
--
Include "/etc/httpd/conf.d/*.conf"
--
$ sudo service httpd configtest
Syntax OK
$ sudo service httpd graceful
```

Include 文を追加してもう一回試してみると、とりあえずpassengerはOKでもエラー。
・・・redmine1.2.2 (rails) はruby1.9系には対応していないためだ。最低限1.4系にまであげてこないと動作確認ができない。