LoginSignup
37
46

More than 5 years have passed since last update.

EC2にRails5環境を構築する

Posted at

AWSのEC2にRails環境を構築した背景

アドバイザリーを行っている企業から古くなったWindowsアプリを
作り直したいという話をいただきました。
どうせならWebアプリケーションとして再構築してはと提案し、
運用面も検討してAWSとRailsで構築することにしました。

アプリケーション version
Ruby 2.5.3
Rails 5.2.2
Apache 2.4
MySQL 5.7

以下、個人的なメモとして記載しています。
情報は適宜更新していきます。

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

yumをupdateし、必要なパッケージをインストールします。

$ sudo yum update -y
$ sudo yum -y install gcc-c++ glibc-headers openssl-devel readline libyaml-devel readline-devel zlib zlib-devel libffi-devel libxml2 libxslt libxml2-devel libxslt-devel sqlite-devel

Gitのインストールと設定

バージョン管理ツールとしてGitを使用します。

$ sudo yum -y install git
$ git config --global user.name "ユーザー名を入力"
$ git config --global user.email "メールアドレスを入力"

日本時間に合わせる

タイムゾーンを日本時間に変更します。

$ date
Fri Sep  7 01:32:06 UTC 2018

$ sudo cp -r /usr/share/zoneinfo/Japan /etc/localtime
$ sudo vim /etc/sysconfig/clock
ZONE="Asia/Tokyo"
UTC=true
date
Fri Sep  7 10:32:33 JST 2018

rbenvでRubyの指定バージョンをインストール

Githubからrbenvをcloneし、その後rbenvコマンドを呼び出せるように、
環境変数を設定してPATHを通します。

$ sudo git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ sudo vim /etc/profile.d/rbenv.sh

rbenv.shにPATHを記載します。

export RBENV_ROOT="$HOME/.rbenv"
export PATH="${RBENV_ROOT}/bin:${PATH}"
eval "$(rbenv init -)"

ruby-buildをインストールします。

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

ユーザをwheelグループに所属させる必要がありますが、
AmazonLinux2では初期設定でwheelグループに入っています。

$ sudo usermod -G wheel ec2-user$ grep wheel /etc/group
wheel:x:10:ec2-user

wheelグループのユーザがrbenvコマンドを使えるように、ディレクトリの権限を変更します。

$ sudo chown -R ec2-user:wheel ~/.rbenv
$ sudo chmod -R 775 ~/.rbenv

ディレクトリの状態を確認します。

$ ls -la
drwxrwxr-x 10 ec2-user wheel    234 Sep  7 11:48 .rbenv

パーミッションはrwxrwxr-x、グループとユーザはwheel:wheelになっていればOKです。
設定した環境変数を読み込むために以下のコマンドを実行します。

$ source /etc/profile.d/rbenv.sh
$ rbenv --version
rbenv 1.1.1-39-g59785f6

インストール可能なRubyのバージョンを確認します。

$ rbenv install -l
  …
  2.4.3
  2.5.0-dev
  2.5.0-preview1
  2.5.0-rc1
  2.5.0
  2.5.1
  2.5.2
  2.5.3
  2.6.0-dev
  …

使いたいバージョンのRubyを指定し、インストールします。

$ rbenv install -v 2.5.3

rbenvを同期します。

$ rbenv rehash

rbenvでインストールしたRubyを、システム全てに適用します。

$ rbenv global 2.5.3

Rails5のインストール

bundlerとRailsをインストールします。
バージョンを指定しない場合、最新バージョンがインストールされます。

$ gem install bundler
$ gem install rails -v 5.2.2

gemをインストールするさいに、ドキュメント類が作成されないように.gemrcに追記します。

$ printf "install: --no-rdoc --no-ri\nupdate:  --no-rdoc --no-ri\n" >> ~/.gemrc

Apache2.4のインストール

WebサーバーとしてApacheをインストールします。

$ yum info httpd
$ sudo yum -y install httpd

$ chkconfig /etc/init.d/httpd
$ sudo chkconfig httpd on
$ sudo service httpd start
$ yum list | grep httpd24
httpd24.x86_64                       2.4.34-1.82.amzn1             amzn-updates
httpd24-devel.x86_64                 2.4.34-1.82.amzn1             amzn-updates
httpd24-manual.noarch                2.4.34-1.82.amzn1             amzn-updates
httpd24-tools.x86_64                 2.4.34-1.82.amzn1             amzn-updates

$ sudo yum install -y httpd24

$ httpd -version
Server version: Apache/2.4.34 (Amazon)
Server built:   Aug 17 2018 22:22:09

Apacheの設定を行います。
Amazon Linux の Apache2.4 では、デフォルトでバーチャルホストが有効になっているので、
以下にファイルを作成するだけで良いです。

$ sudo vim /etc/httpd/conf.d/vhost-test.conf

<VirtualHost *:80>
  ServerName piyopiyo.jp
  DocumentRoot /var/rails/piyo/public
  RackEnv production
  <Directory /var/rails/piyo/public>
    AllowOverride all
    Options -MultiViews
  </Directory>
</VirtualHost>

$ sudo service httpd restart

Passengerのインストール

Railsを動かすために、ApacheのプラグインであるPassengerを使います。

$ gem install passenger

以下を実行すると、足りないパッケージをインストールするように促されます。

$ passenger-install-apache2-module

指示通りにインストールし、上記のコマンドを再実行します。

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

最後にpassenger.confに追記するテキストが表示されるので、更新します。

$ sudo vi /etc/httpd/conf.d/passenger.conf

MySQL

mysql8.0リポジトリの追加(このリポジトリに5.7も含まれています)します。

$ sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm -y

削除する場合。

$ sudo yum remove mysql80-community-release-el7-1.noarch

MySQL5.7をインストールします。

#mysql8.0リポジトリの無効化
$ sudo yum-config-manager --disable mysql80-community
#mysql5.7リポジトリの有効化
$ sudo yum-config-manager --enable mysql57-community
#mysql5.7がインストールできるか確認
$ yum info mysql-community-server
#mysqlインストール
$ sudo yum install mysql-community-server -y
$ mysqld --version
mysqld  Ver 5.7.22 for Linux on x86_64 (MySQL Community Server (GPL))

MySQLの起動設定を行います。

#自動起動設定
$ sudo systemctl start mysqld.service
$ sudo systemctl enable mysqld.service
$ systemctl status mysqld.service

rootのパスワードを/var/log/mysqld.logから確認します。

A temporary password is generated for root@localhost: hogehoge;

MySQLにログインし、rootパスワードを変更します。

mysql> set password for root@localhost=password('Hogehoge@9999');

gem mysql2のインストールのさいに、mysql-develが必要になります。

$ sudo yum install mysql-devel

以上で、Rails5環境を構築できました。

Rails5アプリを作成

DBにMySQLを指定して、Railsアプリを作成します。

$ rails new sample -d mysql

Gemfileにあるmini_racerのコメントを外します。

$ vim Gemfile
gem 'mini_racer', platforms: :ruby

PATHを指定して、bundle installを行います。

$ bundle install --path vendor/bundle

DBのconfigファイルにDBへの接続情報を記入します。
Apacheの設定で指定したURLにアクセスすると、
Railsのwelcome画面が映っています。

37
46
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
46