Ruby on Rails

Apache2.4+passenger5でrails4.2を動かす

apache-passenger-rails
o_wani
この記事は作成から8年以上経過しているため、内容が古くなっている可能性があります。

CentOS7Apache2.4という構成のサーバがある。今回はそこでrails4.2.5を動かすことになったので最新のpassenger5系で、railsプロジェクトが表示されるまでの手順を記載する。

railsはインストールされていないので、まず、ruby+railsのインストールから行う。

今回のサーバ構成

  • CentOS 7
  • Rails 4.2.5.1
  • ruby 2.3.0
  • Apache 2.4.6
  • Passenger 5.0.24

sudores編集

sudoでrbenvが使えるようにする。

1.$ sudo visudo -f /etc/sudoers.d/00_base

内容は以下のようにする

1.Defaults !secure_path
2.Defaults env_keep += "PATH RBENV_ROOT"

必要なパッケージ

rubyのインストールに必要なパッケージをインストールする。

1.$ sudo yum install gcc make openssl openssl-devel readline-devel

rbenvとruby-build

環境変数の設定。

1.$ export RBENV_ROOT=/usr/local/rbenv
2.$ export PATH=${RBENV_ROOT}/bin:${PATH}

gitでrbenvとruby-buildの最新コードを取得。

1.$ sudo git clone git://github.com/sstephenson/rbenv.git ${RBENV_ROOT}
2.$ sudo git clone git://github.com/sstephenson/ruby-build.git ${RBENV_ROOT}/plugins/ruby-build

 

/etc/profileを編集する。

1.$ sudo vim /etc/profile

以下の内容を追記する。

1.export RBENV_ROOT=/usr/local/rbenv
2.export PATH="$RBENV_ROOT/bin:$PATH"
3.eval "$(rbenv init -)"

rubyのインストール

rbenvを使って、ruby 2.3.0をインストール。

1.$ sudo rbenv install -v 2.3.0
2.$ sudo rbenv global 2.3.0
3.$ sudo rbenv rehash
4.$ ruby -v
-bash: ruby: command not found

rubyコマンドがないと言われてしまうので

$ echo 'export RBENV_ROOT="/usr/local/rbenv"' >> .profile
$ echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> ~/.profile
$ echo 'eval "$(rbenv init -)"' >> ~/.profile
$ source ~/.profile
$ ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]

railsのインストール

gemを最新にし、rails 4.2.5がインストールされる。

$ sudo gem update --system
$ sudo gem install rails --no-ri --no-rdoc
$ rails -v
Rails 4.2.5.1

Webサーバ

Apache2.4まわり

Apache2.4まわりで必要なミドルウェアインストール。
(すでにhttpdは入っている)

1.$ sudo yum install httpd-devel curl-devel apr-devel apr-util-devel
2.$ httpd -v
3.Server version: Apache/2.4.6 (CentOS)
4.Server built:   Nov 19 2015 21:43:13

Passengerのインストール

Passenger5.0.24をインストール。

1.$ sudo yum install -y epel-release pygpgme curl
2.$ sudo curl --fail -sSLo /etc/yum.repos.d/passenger.repo https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo
3.$ sudo yum install -y mod_passenger

Apacheを再起動して、PassengerをApacheにアクティブ化。

1.$ sudo systemctl restart httpd

Passengerがうまくインストールされているか確認。

1.$ sudo passenger-config validate-install

Passengerのバージョン確認。

1.$ passenger-config --version
2.Phusion Passenger 5.0.24

その他の必要な設定

ポートのLISTEN状態を確認
80番ポートがLISTENになっているはず。

1.$ ss -nat

この時点でアクセスしてみるとhttpd2.4のデフォルト画面が表示された。
apache2.4

VirtualHostの設定

/etc/httpd/conf.d/vhost.confを新規作成。以下は記載例。
RailsEnv developmentは開発環境。(本番環境productionの場合はこちら

1.<VirtualHost *:80>
2.    ServerName test.jp
3.    RailsEnv development
4.    # Be sure to point to 'public'!
5.    DocumentRoot /var/www/test_project/public
6.    <Directory /var/www/test_project/public>
7.        # Relax Apache security settings
8.        AllowOverride all
9.        Require all granted
10.        # MultiViews must be turned off
11.        Options -MultiViews
12.    </Directory>
13.</VirtualHost>
14.

Passenger の設定ファイル修正

PassengerRubyの項目を修正する。
/etc/httpd/conf.d/passenger.conf

1.#PassengerRuby /usr/bin/ruby
2.PassengerRuby /usr/local/rbenv/versions/2.3.0/bin/ruby

Apache再起動。

1.$ sudo systemctl restart httpd

まとめ

以上で、表示されることと思う。アプリケーションなどでエラーが出ている場合は、データベースも見直してみると良い。CentOSが7からは、データベースがMySQLではなく、MariaDBに切り替わっている。といってもほとんど、MySQLとほぼ変わらないようだ。

Passengerは設定が複雑なイメージだったが、Passenger5になってから導入が簡単になったのかな。いつも使ってたコマンドが使えなくなってたりするCentOS7もまだ慣れない!

 

STAFF
o_wani
o_wani
スタッフ
大学卒業後、15年間WEB業界で働く。現在はマネジメントに従事していますが、ChatGPTの登場に触発され、このブログを再開。AIをパートナーに、自分で手を動かして実装する楽しさと喜びを再発見中。時代が変わりつつある中でも、陳腐化しない情報発信も目指しています。
記事URLをコピーしました