Rubyのインストール

本番サイトではCentOS4のためRubyの最新版がyumで入手できない。
このためソースからコンパイルしてインストールする。

yum に RPMforge リポジトリを追加する

Rubyをインストールするためのcheckinstallをインストールするために、インストール
多くの有用なサードパーティ・パッケージを供給している RPMforge のリポジトリを yum に追加する。

http://centos.oss.sc/fundamentals/yum_rpmforge/

 # wget http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.i386.rpm
 # rpm -Uhv rpmforge-release-0.3.6-1.el4.rf.i386.rpm
 # vi /etc/yum.repos.d/rpmforge.repo
 -----
 enabled = 1
    ↓
 enabled = 0  
 -----
 # wget http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
 # rpm --import RPM-GPG-KEY.dag.txt
 # yum --enablerepo=rpmforge list
checkinstallインストール

Rubyをインストールするためcheckinstallをインストールする。
tar ボールからのインストールを監視して RPM を作ってくれる便利なツールです。

http://centos.oss.sc/fundamentals/checkinstall/

yum --enablerepo=rpmforge install checkinstall
Ruby本体
 # wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p111.tar.bz2
 # tar jxf ruby-1.8.6-p111.tar.bz2
 # ./configure --prefix=/usr
 # make
 # checkinstall --fstrans=no
 checkinstall 1.6.0, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran
           This software is released under the GNU GPL.

 The package documentation directory ./doc-pak does not exist.
 Should I create a default set of package docs?  [y]: y

 Preparing package documentation...OK
 Please choose the packaging method you want to use.Slackware [S], RPM [R] or Debian [D]? r

 Please write a description for the package.
 End your description with an empty line or EOF.>>
 後はEnterを押し続ける。
 # rpm -Uvh /usr/src/redhat/RPMS/x86_64/ruby-1.8.6-p111-1.x86_64.rpm
 # ruby -v
 ruby 1.8.6 (2007-09-24 patchlevel 111) [x86_64-linux]

Railsインストール

まずはzlib
# yum install zlib-devel -y
# cd /root/src/ruby-1.8.6-p111/ext/zlib 
# ruby extconf.rb --with-zlib-include=/usr/include --with-zlib-lib=/usr/lib
# make
# make install
ここからrails本体
# cd /root/src
# wget http://rubyforge.org/frs/download.php/20989/rubygems-0.9.4.tgz
# tar zxvf rubygems-0.9.4.tgz
# cd rubygems-0.9.4
# ruby setup.rb
# gem update --system ← 失敗しても何度か繰り返してると成功する
# gem -v
0.9.5
# gem install rails --include-dependencies
# rails -v
Rails 1.2.5
バリデーションの入力エラーメッセージなどを日本語にする対応
# gem install gettext
gem install gettext
Updating metadata for 104 gems from http://gems.rubyforge.org
complete
Building native extensions.  This could take a while...
Successfully installed gettext-1.10.0
1 gem installed

ruby-openssl

テストプロジェクト実行時にopensslのエラーが出る時があるので、いれとく。

# cd ~/src/ruby-1.8.6-p111/ext/openssl
# ruby extconf.rb
# make 
# make install
# irb
> require 'openssl'
=> true

一般ユーザー作成

 useradd shohu
 passwd shohu

サンプルプロジェクト作成

 # su - shohu
 $ mkdir project
 $ cd project
 $ rails test
 $ cd test
 サーバー起動
 $ ruby script/server &

以下URLでアクセス確認!!

http://localhost:3000/

テストサイトで使うモジュールインストール

 # gem install amazon-ecs
 # gem install mongrel --include-dependencies
 # gem install mongrel_cluster
 mongrelクラスタ確認
 # su - shohu
 $ cd project/test
 $ mongrel_rails cluster::configure -p 3000 -N 3
 $ mongrel_rails cluster::start

以下URLでアクセス確認!!

http://localhost:3000/
http://localhost:3001/
http://localhost:3002/

$ mongrel_rails cluster::stop

Apacheインストール

デフォルトバージョンが2.0.52と古いため最新のApache2.2.6を入れる
ここでは簡単かのように書かれているが、汗と涙と笑いと感動と苦悩などがここにはあった。

ZLIBが古いとhttpdのrpmが作成できないことがあるのでzlibをいれとく

 # wget http://www.zlib.net/zlib-1.2.3.tar.gz
 # tar zxvf zlib-1.2.3.tar.gz
 # cd zlib-1.2.3
 # ./configure -s
 # make
 # make install
 yum install autoconf libtool doxygen gcc-c++ openldap-devel db4-devel expat-devel pkgconfig openssl-devel
 cd /root/src
 wget http://ftp.kddilabs.jp/infosystems/apache/apr/binaries/rpm/SRPMS/apr-1.2.8-1.src.rpm
 wget http://ftp.kddilabs.jp/infosystems/apache/apr/binaries/rpm/SRPMS/apr-util-1.2.8-1.src.rpm
 wget http://ftp.riken.jp/net/apache/httpd/binaries/rpm/SRPMS/httpd-2.2.3-1.src.rpm
 rpmbuild --rebuild apr-1.2.8-1.src.rpm
 rpmbuild --rebuild apr-util-1.2.8-1.src.rpm
 rpmbuild --rebuild httpd-2.2.3-1.src.rpm
 cd /usr/src/redhat/RPMS/x86_64/
 rpm -ihv apr-1.2.8-1.i386.rpm apr-devel-1.2.8-1.i386.rpm
 rpm -ihv apr-util-1.2.8-1.i386.rpm apr-util-devel-1.2.8-1.i386.rpm
 rpm -ihv httpd-2.2.3-1.i386.rpm mod_ssl-2.2.3-1.x86_64.rpm
 起動
 /etc/rc.d/init.d/httpd start
ブラウザ以下URLにアクセスし、ページを表示することを確認
 http://124.146.168.187/

負荷分散設定

Apache設定ファイルの変更を行う。

 # cd /etc/httpd/conf
 # cp -ap httpd.conf httpd.conf.orig
 # vi 
 -----
 <VirtualHost *:80>
  ServerName example.com
  ServerAlias www.example.com
  DocumentRoot /home/shohu/project/test/public
  <Directory "/home/shohu/project/test/public">
               Options FollowSymLinks
               AllowOverride None
               Order allow,deny
               Allow from all
  </Directory>
  RewriteEngine On
  RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f
  RewriteRule (.*) $1 [L]
  ProxyRequests Off
  <Proxy *>
          Order deny,allow
          Allow from all
  </Proxy>
  ProxyPass / balancer://mongrel_cluster/ stickysession=_exam_session_id nofailover=On
  ProxyPassReverse / balancer://mongrel_cluster/
  <Proxy balancer://mongrel_cluster/>
    BalancerMember http://127.0.0.1:3000 route=0
    BalancerMember http://127.0.0.1:3001 route=1
    BalancerMember http://127.0.0.1:3002 route=2
  </Proxy>
 </VirtualHost>
 -----
 # /etc/rc.d/init.d/httpd restart
 mongrelをクラスタ起動する
 # su - shohu
 $ cd project/test
 $ mongrel_rails cluster::start

MySQL5のインストール

CentOS4のyumでMySQL5をインストールするために、以下を設定する。

 vi /etc/yum.repos.d/CentOS-Base.repo 
 -----
   :
 #additional packages that extend functionality of existing packages
 [centosplus]
   :
  enabled=1 
 [contrib]
   :
  enabled=1 
 -----
MYSQLインストール
 $ su -
 # yum install mysql mysql-server mysql-devel
 # vi /etc/my.cnf
 -----
  [mysqld]
 datadir=/var/lib/mysql
 socket=/var/lib/mysql/mysql.sock
 # Default to using old password format for compatibility with mysql 3.x
 # clients (those using the mysqlclient10 compatibility package).
 old_passwords=1
 default-character-set=utf8
 [mysql.server]
 user=mysql
 basedir=/var/lib
 default-character-set=utf8
 [mysqld_safe]
 log-error=/var/log/mysqld.log
 pid-file=/var/run/mysqld/mysqld.pid
 default-character-set=utf8
 -----
 ルート権限で起動
 # /sbin/service mysqld start
 MySQLを自動起動するように設定
 # /sbin/chkconfig mysqld on
 MySQLのパスワード変更
 # mysqladmin -u root password 'XXXXXX'
MySQL / Ruby アダプタインストール
 # gem install mysql -- --with-mysql-config=/usr/bin/mysql_config
 Select which gem to install for your platform (i386-linux)
  1. mysql 2.7.3 (mswin32)
  2. mysql 2.7.1 (mswin32)
  3. mysql 2.7 (ruby)
  4. mysql 2.6 (ruby)
  5. Skip this gem
  6. Cancel installation
 > 3
 Building native extensions.  This could take a while...
 Successfully installed mysql-2.7