Apache 2.4 + Ruby 2.0 + Passenger 4 環境を構築する
最新版の Ruby と Apache での環境構築手順を整理してまとめてみました。
それぞれ RPM を作成してインストールしています。
また、Passenger も最新の 4 系にしてみました。
OS は Webサーバ、RPM作成用サーバ共に CentOS 6.4 x86_64 です。
rpm-build の準備
rpmbuild と rpmdevtools と redhat-rpm-config をインストール。
# yum install -y rpm-build rpmdevtools redhat-rpm-config
RPM 作成用のユーザを作成します。
# useradd rpmdevel
作成したユーザになり、rpmdev-setuptree コマンドを実行します。
# su - rpmdevel
$ rpmdev-setuptree
これで RPM ファイル作成の準備は完了です。
Apache 2.4.4 の RPM を作成する
Apache の 2.4.4 の RPM を作成します。
まずは再び root ユーザになり、依存ライブラリをインストール。
$ su - # yum install automake autoconf libtool doxygen expat-devel libuuid-devel db4-devel \ postgresql-devel mysql-devel sqlite-devel unixODBC-devel openldap-devel \ openssl-devel nss-devel zlib-devel libselinux-devel pcre-devel openldap-devel \ lua-devel libxml2-devel openssl-devel # yum install http://dl.fedoraproject.org/pub/epel/6/x86_64/freetds-0.91-2.el6.x86_64.rpm \ http://dl.fedoraproject.org/pub/epel/6/x86_64/freetds-devel-0.91-2.el6.x86_64.rpm
distcache は RPM が無いので、Fedora の SRPM をリビルドしてインストールします。
# su - rpmdevel $ wget http://ftp.riken.jp/Linux/fedora/releases/18/Everything/source/SRPMS/d/distcache-1.4.5-23.src.rpm $ rpmbuild --rebuild distcache-1.4.5-23.src.rpm $ exit # yum install /home/rpmdevel/rpmbuild/RPMS/x86_64/distcache-1.4.5-23.x86_64.rpm \ /home/rpmdevel/rpmbuild/RPMS/x86_64/distcache-devel-1.4.5-23.x86_64.rpm
# su - rpmdevel $ wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-1.4.8.tar.bz2 $ rpmbuild -tb apr-1.4.8.tar.bz2 $ exit # yum install /home/rpmdevel/rpmbuild/RPMS/x86_64/apr-1.4.8-1.x86_64.rpm \ /home/rpmdevel/rpmbuild/RPMS/x86_64/apr-devel-1.4.8-1.x86_64.rpm
# su - rpmdevel $ wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-util-1.5.2.tar.bz2 $ rpmbuild -tb apr-util-1.5.2.tar.bz2 $ exit # yum install /home/rpmdevel/rpmbuild/RPMS/x86_64/apr-util-1.5.2-1.x86_64.rpm \ /home/rpmdevel/rpmbuild/RPMS/x86_64/apr-util-devel-1.5.2-1.x86_64.rpm
ここまででやっと httpd の RPM を作成する準備ができました。
Apache のソースコードをダウンロードして rpmbuild します。
# su - rpmdevel $ wget http://ftp.kddilabs.jp/infosystems/apache/httpd/httpd-2.4.4.tar.bz2 $ rpmbuild -tb httpd-2.4.4.tar.bz2
これで Apache の RPM が生成されました。
作成した RPM ファイルはインストール用の Web サーバにコピーしておきます。
Ruby 2.0 p195 の RPM を作成する
root ユーザになり、依存ライブラリをインストールします。
$ su - # yum install -y gcc make unzip byacc readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel db4-devel libffi-devel # yum install -y http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/libyaml-0.1.3-1.el6.x86_64.rpm \ http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/libyaml-devel-0.1.3-1.el6.x86_64.rpm
RPM 作成用ユーザになり、Ruby のソースコードをダウンロードします。
# su - rpmdevel $ wget -O ~/rpmbuild/SOURCES/ruby-2.0.0-p195.tar.gz ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.gz
次に SPEC ファイルを用意します。
検索してみると、2.0 用の SPEC ファイルがいくつか配布されていました。
hansode/ruby-2.0.0-rpm
https://github.com/hansode/ruby-2.0.0-rpm
specfiles/ruby-2.0/ruby-2.0.spec at master nmilford/specfiles
https://github.com/nmilford/specfiles/blob/master/ruby-2.0/ruby-2.0.spec
ここでは上の方を利用させて頂きました。
$ wget -O ~/rpmbuild/SPECS/ruby200.spec https://raw.github.com/hansode/ruby-2.0.0-rpm/master/ruby200.spec
準備が出来たので rpmbuild を実行します。
$ rpmbuild -ba ~/rpmbuild/SPECS/ruby200.spec
これで Ruby の RPM が生成されました。
Apache の時と同じく、作成した RPM ファイルは Web サーバへコピーしておきます。
RPM のインストール
Web サーバに作成した RPM ファイルをインストールしていきます。
まずは Apache の RPM をインストールします。
生成された RPM ファイルのうち、取りあえず以下だけインストールしました。
# yum install http://dl.fedoraproject.org/pub/epel/6/x86_64/freetds-0.91-2.el6.x86_64.rpm \ distcache-1.4.5-23.x86_64.rpm \ apr-1.4.8-1.x86_64.rpm \ apr-devel-1.4.8-1.x86_64.rpm \ apr-util-1.5.2-1.x86_64.rpm \ apr-util-devel-1.5.2-1.x86_64.rpm \ httpd-2.4.4-1.x86_64.rpm \ httpd-devel-2.4.4-1.x86_64.rpm \ httpd-tools-2.4.4-1.x86_64.rpm \ mod_authnz_ldap-2.4.4-1.x86_64.rpm \ mod_lua-2.4.4-1.x86_64.rpm \ mod_proxy_html-2.4.4-1.x86_64.rpm \ mod_socache_dc-2.4.4-1.x86_64.rpm \ mod_ssl-2.4.4-1.x86_64.rpm
バージョンを確認します。
# apachectl -v Server version: Apache/2.4.4 (Unix) Server built: Jun 23 2013 22:02:50
問題なさそうです。
# yum install http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/libyaml-0.1.3-1.el6.x86_64.rpm \
ruby-2.0.0p195-2.el6.x86_64.rpm
バージョンを確認します。
# ruby -v ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-linux] # gem -v 2.0.2
こちらも問題無さそうですね。
Passenger のインストール
続いて Passenger をインストールします。
# gem install passenger --no-rdoc --no-ri
Passenger の Apache モジュールをビルドするのに必要なライブラリをインストールします。
# yum install gcc-c++ make openssl-devel zlib-devel libcurl-devel
passenger-install-apache2-module を実行して Apache モジュールをビルドしてインストールします。
# passenger-install-apache2-module
httpd.conf を編集します。
# vi /etc/httpd/conf/httpd.conf
CentOS 標準の Apache とは ServerRoot に指定されているパスが違ってしまっているので、それを修正します。
#ServerRoot "/usr" ServerRoot "/etc/httpd"
また、module を読み込むディレクトリのパスも異なっています(modules/モジュール名 のはずが lib64/httpd/modules/モジュール名、になってしまっている)。
こちらは LoadModule なので数が多いため、一括置換しました。
vi で開いている場合は以下を実行。
:%s/lib64\/httpd\///g
Apache が /etc/httpd/conf.d 以下の設定ファイルを読み込んでくれるようにするため、以下の設定を追記して保存します。
Include conf.d/*.conf
保存したら設定ファイルに問題がないか確認します。
# apachectl configtest
Syntax OK
問題がなければ、次はモジュール用の設定ファイルを作成します。
# vi /etc/httpd/conf.d/passenger.conf
passenger-install-apache2-module の完了後に出た設定内容を記述。
LoadModule passenger_module /usr/lib64/ruby/gems/2.0.0/gems/passenger-4.0.5/libout/apache2/mod_passenger.so PassengerRoot /usr/lib64/ruby/gems/2.0.0/gems/passenger-4.0.5 PassengerDefaultRuby /usr/bin/ruby
モジュールが読み込まれているか確認します。
## apachectl -M | grep passenger passenger_module (shared)
これで一通り完了です。