【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インストールの準備

```console
$ 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のインストール

```console
$ 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のインストール

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

###Bundlerのインストール

```console

$ rbenv exec gem install bundler -v 2.0.1
$ rbenv rehash
```
###GitHubでプロジェクトを作成
###GitHubにPush

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

###GitHubからEC2にPull

```console

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

###Railsのインストール

```console
$ gem i -v 5.2.3 rails
$ gem list rails                     
```

```console
$ bundle install                   
```

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


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

###postgreSQLのインストール

```console
 
$ yum install postgresql
$ sudo yum install postgresql-devel                   
```

SQLite3のエラー回避

```console
 
$ sudo yum install sqlite-devel                    
```

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


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



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

```console

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

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


```console

マスターユーザー名：<プロジェクト名>
マスターパスワード：<パスワード>
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

に変更。                     
```

```console
$ rails db:create
$ rails db:migrate                    
```

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

```console
EMAIL_ADDRESS
EMAIL_PASSWORD
```

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

```console
$ source .bash_profile                     
```

###


- RedisサーバをEC2に立ち上げる。
- ElasticCache選択
- 作成
  
  primary endpointが生成。                     


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

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

###以下のファイル設定

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

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

```console
$ bundle exec sidekiq                      
```

###Nginxをインストール

```console
$ sudo yum install nginx
                   
```

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

```console

$ scp -i ~/.ssh/<プロジェクト名> nginx.conf ec2-user@XXXXXXXXXXXXXXXXXXXXX.amazonaws.com:~/nginx.conf
$ sudo cp ~/nginx.conf /etc/nginx/
                       
```
ポート番号や、rootディレクトリを修正する。 

###Unicornの起動

```console
$ unicorn -c config/unicorn.rb -E production -D                      
```

###Nginx起動

```console
$ sudo service nginx start                     
```

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

###ホームディレクトリの権限を744(drwxr--r--)に変更する。
```console
$ chmod 755 ~/                     
```

###Nginxのリスタート

```console
$ sudo service nginx restart
                     
```

###production 環境のDBを構築する。

```console
$ rails db:migrate RAILS_ENV=production                      
```

###Unicornの再起動

```console
$ 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を参考にしました。
↑↑↑↑↑↑↑ 編集リクエストの内容