Edited at

【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/03

3059を参考にしました。

───────

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

↑↑↑↑↑↑↑ 編集リクエストの内容