Apache+PassengerでRails5が動く環境をCentOS7に構築する
AmazonマシンイメージのCentOS7
を使用してRails5
が動く環境を構築したので、その手順をまとめる。今回は、Apache+Passenger
で動くように設定した。rubyのインストール手順は前回まとめたVagrantでRuby on Rails5の環境構築と同じだが、通しで書いておく。
前提として、AMI>AWS MarketplaceからCentOS7を選択しインスタンスを生成し、SSHで接続できるようにしておくこと。
- 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
(データベースのタイムゾーンも!?)