Apache

Apache+PassengerでRails5が動く環境をCentOS7に構築する

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

AmazonマシンイメージのCentOS7を使用してRails5が動く環境を構築したので、その手順をまとめる。今回は、Apache+Passengerで動くように設定した。rubyのインストール手順は前回まとめたVagrantでRuby on Rails5の環境構築と同じだが、通しで書いておく。

前提として、AMI>AWS MarketplaceからCentOS7を選択しインスタンスを生成し、SSHで接続できるようにしておくこと。

Alt text

  • CentOS7
  • Apache2.4.6
  • ruby2.5.0
  • Rails 5.1.4
  • mariadb 5.5

CentOS7の設定

SSHログインしてからの設定。
centosユーザでログインした。

ミドルウェアUPDATE

既存のミドルウェアを更新する

$ sudo yum -y update

rubyのインストール

rubyをインストールするまでに必要な手順

インストールに必要なミドルウェア

コンパイラなどをインストールしておく

$ sudo yum -y install git-all openssl-devel readline-devel sqlite gcc gcc-c++

rbenvのインストール

複数のrubyのバージョンを管理できるツールをインストールする

$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
$ git clone git://github.com/sstephenson/ruby-build.git
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
$ echo 'gem: --no-ri --no-rdoc' > ~/.gemrc
$ exec $SHELL

rbenvのインストールの確認

rbenvがインストールされたことを確認する

$ rbenv --version
rbenv 1.1.1-28-gb943955

ruby2.5.0のインストール

時間がかかる

$ rbenv install 2.5.0
Downloading ruby-2.5.0.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.bz2
Installing ruby-2.5.0...
Installed ruby-2.5.0 to /home/vagrant/.rbenv/versions/2.5.0

rbenvで2.5.0をグローバルに設定

インストールしたバージョンの確認

$ rbenv versions
* 2.5.0 (set by /home/vagrant/.rbenv/version)

環境全体のrubyのバージョンを2.5.0に設定

$ rbenv global 2.5.0
・インストールしたバージョンの確認

rubyのバージョン確認

$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]

bundlerのインストール

rubyのライブラリ管理ツールをインストール

$ gem install bundler
Fetching: bundler-1.16.1.gem (100%)
Successfully installed bundler-1.16.1
1 gem installed

railsのインストール

railsとそれに必要なパッケージをインストール

$ gem install rails

rails5.1.4がインストールされた

$ rails -v
Rails 5.1.4

データベースのインストール

MySQL(mariadb)をインストール

$ sudo yum install mariadb-server mariadb-devel

MySQL(mariadb)起動

$ sudo systemctl start mariadb

初期インストール

$ sudo mysql_secure_installation

必要あればユーザとテーブルを作成する

DB作成

開発サーバなので、2つのテーブルを作成。
本番環境の場合、productionも用意。
開発環境用

CREATE DATABASE table_development DEFAULT CHARACTER SET utf8;

テスト環境用

CREATE DATABASE table_test DEFAULT CHARACTER SET utf8;
ユーザ作成

パスワードは適宜変更。
開発環境用

GRANT ALL PRIVILEGES ON table_development.* TO user_dev@localhost IDENTIFIED BY 'password' WITH GRANT
OPTION;

テスト環境用

GRANT ALL PRIVILEGES ON table_test.* TO user_test@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;

Apacheインストール

Webサーバのインストール。

httpd

$ sudo yum install httpd httpd-devel curl-devel apr-devel apr-util-devel

インストール確認

$ httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Oct 19 2017 20:39:16

ドキュメントルート設定

/etc/httpd/conf.d/vhost.conf

<VirtualHost *:80>
ServerName owani.net
RailsEnv development
# Be sure to point to 'public'!
DocumentRoot /home/centos/owani/public
<Directory /home/centos/owani/public>
# Relax Apache security settings
AllowOverride all
Require all granted
# MultiViews must be turned off
Options -MultiViews
</Directory>
</VirtualHost>

passengerのインストール

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

passengerの設定ファイルの修正
/etc/httpd/conf.d/passenger.conf

#PassengerRuby /usr/bin/ruby
PassengerRuby /home/owani/.rbenv/shims/ruby

apache再起動

$ sudo systemctl restart httpd

インストール確認

$ passenger-config --version
Phusion Passenger 5.2.0

railsプロジェクトの設置

今回はrailsプロジェクトをgitで管理していた場合の流れ。

$ git clone リポジトリURL
$ cd プロジェクト名

必要パッケージのインストール

$ bundle install

データベース設定

$ bundle exec rake db:migrate:reset
$ bundle exec rake db:seed

表示

Apacheの設定でServerNameに設定したドメインにアクセスし、
ブラウザで確認しよう。

おまけ

SELINUX無効

assets以下の画像にアクセスできなかったのでSELinuxを無効化して表示できた。

$ sudo setenforce 0

timeゾーン設定

サーバの時間が日本時間でなかったので設定。

$ sudo timedatectl set-timezone Asia/Tokyo

(データベースのタイムゾーンも!?)

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