Apache2.4+passenger5でrails4.2を動かす
CentOS7
にApache2.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
rubyとrailsのインスト―ル
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のデフォルト画面が表示された。
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もまだ慣れない!