0

【AWS】EC2へのデプロイの手順<備忘録>

はじめに

プログラミング初心者です。自分のための備忘録として記録を残します。

環境

  • macOS10
  • Rails 5.2.3
  • Nginx
  • Unicorn
  • Postgresql
  • Sidekiq
  • Redis

EC2インスタンス作成

  • Amazon Linux AMI 2018.03.0(HVM,SSD Volume Typeを選択
  • t2.microを選択(無料枠を利用の場合)
  • キーペアの作成


パブリックDNSが生成される。
*https://qiita.com/Quikky/items/2897573a42fd71cfc47fを参考にしました。

rbenvインストールの準備

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

rbenvのインストール

$ mkdir ~/.rbenv
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
$ mkdir ~/.rbenv/plugins ~/.rbenv/plugins/ruby-build
$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
$ cd ~/.rbenv/plugins/ruby-build
$ sudo ./install.sh
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

Rubyのインストール

$ rbenv install 2.4.6
$ rbenv rehash
$ rbenv global 2.4.6
$ ruby -v

Bundlerのインストール

$ rbenv exec gem install bundler -v 2.0.1
$ rbenv rehash

GitHubでプロジェクトを作成

GitHubにPush

Mac上で
$ git remote add origin <URLアドレス>                    
$ git add .                                          
$ git commit -m "1st push"                           
$ git push -u origin master                          

GitHubからEC2にPull

git clone <URLアドレス>
cd <プロジェクトのディレクトリ>                       

Railsのインストール

gem i -v 5.2.3 rails
gem list rails                     
$ bundle install                   

上記でエラーが出たので以下のコマンド実施

$ gem install pg -v '1.1.4' --source 'https://rubygems.org/'

postgreSQLのインストール

$ yum install postgresql
$ sudo yum install postgresql-devel                   

SQLite3のエラー回避

sudo yum install sqlite-devel                    

インスタンスのセキュリティグループのインバウンド設定

  • カスタムTCP/IP port 3000 0.0.0.0/0 を設定追加。

EC2インスタンス内でPostgres起動

sudo yum install -y postgresql-server
sudo /sbin/service postgresql initdb
sudo /sbin/service postgresql start                    

EC2のインスタンス内でのPostgresの設定

マスターユーザー名:<プロジェクト名>
マスターパスワード:<パスワード>
postgres=# create role <username> with createdb login password '<password>';
postgres=# create database [database_name] owner [user_name];

$ sudo -u postgres psql
postgres=# create role <プロジェクト名> with createdb login password '<パスワード>';
postgres=# create database <プロジェクト名>_production owner <プロジェクト名>;
postgres=# create database <プロジェクト名>_development owner <プロジェクト名>;
postgres=# create database <プロジェクト名>_test owner <プロジェクト名>;
postgres=# \q                 

DB(Postgres)の作成

.bash_profile
export POSTGRES_USERNAME="<プロジェクト名>"
export POSTGRES_PASSWORD="<パスワード>"

プロジェクトのディレクトリ
rails db:create                     
 /var/lib/pgsql9/data/pg_hba.conf

local all all peer

     ↓

local all all md5

に変更。                     
rails db:create
rails db:migrate                    

SMTPの設定

環境変数を.bash_profileに設定します。

EMAIL_ADDRESS
EMAIL_PASSWORD

設定おわったら、それを反映させるため以下のコマンドを実行

source .bash_profile                     
  • RedisサーバをEC2に立ち上げる。
  • ElasticCache選択
  • 作成

primary endpointが生成。

VPCの設定で、Redisのインバウンド設定をセキュリティーグループにする

  • sg-694f3715のインバウンドルールの編集で追加
  • カスタムTCP:TCP
  • port:6379
  • source 0.0.0.0/0

以下のファイル設定

config/initializers/sidekiq.rb
config/redis.yml                    

プロジェクトを再起動してSidekiqを起動

bundle exec sidekiq                      

Nginxをインストール

$ sudo yum install nginx

Mac上の/usr/local/etc/nginx/nginx.confをEC2環境にコピーする。

scp -i ~/.ssh/<プロジェクト名> nginx.conf ec2-user@XXXXXXXXXXXXXXXXXXXXX.amazonaws.com:~/nginx.conf
sudo cp ~/nginx.conf /etc/nginx/

ポート番号や、rootディレクトリを修正する。

Unicornの起動

unicorn -c config/unicorn.rb -E production -D                      

Nginx起動

$ sudo service nginx start                     

VPCの設定で、port80(HTTP)を追加

ホームディレクトリの権限を744(drwxr--r--)に変更する。

chmod 755 ~/                     

Nginxのリスタート

$ sudo service nginx restart

production 環境のDBを構築する。

$ rails db:migrate RAILS_ENV=production                      

Unicornの再起動

$ kill [pid]
$ unicorn -c config/unicorn.rb -E production -D                     

アセットパイプラインでエラーが発生。

config/environments/production.rb内の
config.assets.compileをfalseからtrueに変更                      

*https://kakuyon.hatenablog.com/entry/2018/07/15/033059を参考にしました。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away