俺の開発研究所

Ruby on Rails、Linux、Windowsを中心にIT技術系の備忘録とか。よく忘れるので。

*

Linux(CentOS)のApache+PassengerでRuby on Railsを動かす

      2014/08/31

Linuxの「Apache HTTP Server」でRuby on Railsを動かそうと思ったら、「Passenger」とかいうモジュールが必要みたい。

それをインストールし、設定する手順。

スポンサード リンク

Passengerのインストール

下記コマンドで、Passengerをインストールする。

PassengerのApacheモジュールインストール

続いて、Apacheモジュールをインストールする。

インストール用のコマンド「passenger-install-apache2-module」が用意されているので、下記のように実行する。

ちなみに、実行時に事前にインストールが必要であるものがない場合、エラーメッセージとともに、インストールコマンドまで出力してくれるデキる奴。

俺の環境の場合、「curl-devel」、「httpd-devel」、「apr-devel」、「apr-util-devel」の4つがなかった。

示してくれたコマンドの通り、以下の3つをインストール。

気を取り直して、再度コマンド実行。

コマンド終了後、下記のようにApache設定ファイルとApacheバーチャルホスト設定ファイルへの記述例が表示されるので、メモしておく。

なお、表示される設定内容は環境によって異なるので注意。

Apacheの設定

表示された内容の通り、以下の内容をApache設定ファイルへ追記する。

Apache設定ファイルは「/etc/httpd/conf/httpd.conf」です。

続いて、Apacheバーチャルホスト設定ファイルを作成する。

Apacheバーチャルホスト設定ファイルは「/etc/httpd/conf.d/rails.conf」というファイルを作成し、以下を設定した。

設定するディレクトリは、Railsアプリケーションの「public」ディレクトリを設定する必要があるみたい。

Railsアプリケーション

Apacheの設定の次は、デプロイするアプリを作成する。

「bundle install」の途中で「sqlite3」が原因でエラーとなったので、「sqlite-devel」をインストールしてから、再び「bundle install」を行った。

続いて、Scaffoldを使用して1機能作成する。

DB作成は本番環境を作成する。

また、本番環境をプリコンパイルする。

Apacheで参照される環境はデフォルトが本番環境のようなので、ここで本番環境のDB作成とプリコンパイルをしておかないと「We’re sorry, but something went wrong.」でページが開けなかった。

ここまででアクセスできるかと思ったが、できなかった。

どうもSELinuxが原因のようなので、下記のようにSELinuxを一時的にオフにしてみるとアクセスできた。

「http://CentOSのIPアドレス/friends」で無事画面が開けました。

SELinuxの詳細については後日勉強するとするか。

参考サイト

Apache上でRuby on Railsアプリケーションを動かす/Passenger(mod_rails for Apache)の利用 — Redmine.JP

さくらVPS/CentOS 6.3 Passengerのインストール手順[Apache][Railsサーバへの道] – 酒と泪とRubyとRailsと

SELinuxが有効になっている場合のApacheアクセスエラー対処法 | Pa-kun plus idea

 - Apache HTTP Server, Linux, Linux(CentOS), Ruby on Rails