CentOS 7 で Ruby on Rails と Passenger 構築

投稿者:

はじめに

CentOS7でバージョン指定の Ruby on Rails を構築する手順を書きたいと思います。

今回は Ruby 2.3.0, Rails 4.2.5 のバージョンで構築します。

1)gitのインストール

$ sudo yum install -y git

2)パッケージのインストール

$ sudo yum install -y gcc gcc-c++ glibc-headers openssl-devel readline libyami-devel readline-devel zlib zlib-devel bzip2

3)rbenvのインストール

$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv

.bash_profileに以下の行を追加

$ vi ~/.bash_profile
— 以下の2行をファイル末尾に追加 —
export PATH=”$HOME/.rbenv/bin:$PATH”
eval “$(rbenv init -)”

.bash_profileの反映

$ source ~/.bash_profile

4)ruby-buildのインストール

$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build

5)Rubyのインストール

$ rbenv install 2.3.0

使用するバージョンを確定する

$ rbenv global 2.3.0

6)Railsのインストール

$ gem update –system
$ gem install sprockets -v 3.7.2
$ gem install -v 4.2.5 rails

7)Apacheのインストール

$ sudo yum -y install httpd httpd-devel curl-devel

8)パーミッションの設定

sudo chmod o+x “/home/[ユーザー名]”

9)Passengerのインストール

$ gem install passenger

10)ApacheへPassengerモジュール設定

※ここではメモリが2GBほど余裕があった方が良いです。

$ passenger-install-apache2-module

途中のワーニング(以下は無視でOK)

warning _FORTIFY_SOURCE requires compiling with optimization (-0)

途中、下の画面が表示されますのでコピーします。

LoadModule passenger_module /home/[ユーザー名]/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/passenger-6.0.4/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /home/[ユーザー名]/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/passenger-6.0.4
  PassengerDefaultRuby /home/[ユーザー名]/.rbenv/versions/2.3.0/bin/ruby
</IfModule>

先程コピーした文章を次に作成するファイル内容へコピーします。

$ vi /etc/https/conf.d/passenger.conf

コピー後、次の2行を「PassengerDefaultRuby」の次行へ追加入力して保存します。

  PassengerUserSwitching off
  PassengerDefaultUser [ユーザー名]

次にhttpd.confを修正します

sudo vi /etc/httpd/conf/httpd.conf

ServerName行を以下のように変更して下さい

#ServerName www.example.com:80
ServerName localhost:80

次にRails設定を行います。新しく以下のファイルを作成します。

sudo vi /etc/httpd/conf.d/rails.conf

ファイルの中身は次のように入力して下さい。

<VirtualHost *:80>
 ServerName localhost:80
 DocumentRoot /home/[ユーザー名]/[App名]/public
 RailsEnv development
 PassengerEnabled on
 ErrorLog /var/log/httpd/error_log
 CustomLog /var/log/httpd/access_log combined
 AddDefaultCharset UTF-8
 <Directory /home/[ユーザー名]/[App名]/public>
  AllowOverride all
  Require all granted
  Options -MultiViews
 </Directory>
</VirtualHost>

Apacheの起動とFirewallの設定

$ sudo systemctl start httpd
$ sudo firewall-cmd –permanent –zone=public –add-service=http
$ sudo firewall-cmd –permanent –zone=public –add-service=https
$ sudo firewall-cmd –reload