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画面が映っています。