サンプルアプリのリポジトリ
298ページの「rbenvのインストール」が変更されました。1行目のコマンドの途中は"master"ではなく"HEAD"です。
295ページの「ミドルウェアのインストール」に間違いがありました。1行目のコマンドの最後は"ImageMagicK"ではなく"ImageMagick"です(最後のkが小文字が正しい)
サンプルアプリに不具合がありました。書籍の通りに手順を進めると、ユーザー登録の作業の中で入力したメールアドレスにメールが届きません。対応方法を以下に示します。
既にサンプルをgit cloneで入手されている場合
/var/www/aws-intro-sample ディレクトリで以下のコマンドを実行して、修正済みのアプリを入手して下さい。
$ git pull
まだサンプルを入手していない場合
そのまま書籍の手順を進めて下さい。
ミドルウェアのインストール
$ sudo yum -y install git gcc-c++ glibc-headers openssl-devel readline libyaml-devel readline-devel zlib zlib-devel libffi-devel libxml2 libxslt libxml2-devel libxslt-devel sqlite-devel libcurl-devel mysql mysql-devel ImageMagick
$ sudo amazon-linux-extras install -y nginx1
サンプルアプリ用のnginxの設定(/etc/nginx/conf.d/rails.conf)
upstream puma {
# pumaの設定で指定したsocketファイルを指定
server unix:///var//www/aws-intro-sample/tmp/sockets/puma.sock;
}
server {
# nginxが待ち受けしたいポートを指定
listen 3000 default_server;
listen [::]:3000 default_server;
server_name puma;
location ~ ^/assets/ {
root /var/www/aws-intro-sample/public;
}
location / {
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 上記server_name で設定した名前で指定
proxy_pass http://puma;
}
}
デプロイユーザーの作成
$ sudo adduser deploy
ディレクトリの作成
$ sudo mkdir -p /var/www
$ sudo chown deploy:deploy /var/www
deployユーザーにスイッチ
$ sudo su - deploy
rbenvのインストール
$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
Ruby本体のインストール
$ rbenv install 2.6.6
$ rbenv global 2.6.6
Ruby on Railsのインストール
$ gem install rails -v 5.1.6
データベースとユーザーの作成
$ mysql -u admin -p -h db.home
(ここに接続時の情報が表示される)
mysql> create database sample_app;
mysql> create user sample_app identified by '(パスワード)';
mysql> grant all privileges on sample_app.* to sample_app@'%';
mysql> quit
サンプルアプリの入手
$ cd /var/www
$ git clone https://github.com/nakaken0629/aws-intro-sample.git
ライブラリの導入
$ cd aws-intro-sample
$ bundle install
シークレットキーの生成
$ rails secret
サンプルアプリ用の設定(.bash_profile)
# サンプルアプリ用の設定
export SECRET_KEY_BASE=作成したシークレットキー
export AWS_INTRO_SAMPLE_DATABASE_PASSWORD=設定したパスワード
export AWS_INTRO_SAMPLE_HOST=ロードバランサーにつけたCNAME
export AWS_INTRO_SAMPLE_S3_REGION=画像保存用のS3があるリージョン
export AWS_INTRO_SAMPLE_S3_BUCKET=画像保存用のS3のバケット
export AWS_INTRO_SAMPLE_REDIS_ADDRESS=ElastiCacheのアドレス
export AWS_INTRO_SAMPLE_SMTP_DOMAIN=Amazon SESのドメイン
export AWS_INTRO_SAMPLE_SMTP_ADDRESS=Amazon SESのアドレス
export AWS_INTRO_SAMPLE_SMTP_USERNAME=SMTPユーザー
export AWS_INTRO_SAMPLE_SMTP_PASSWORD=SMTPパスワード
.bash_profileの反映
$ source ~/.bash_profile
テーブルの作成
$ rails db:migrate RAILS_ENV=production
depoyユーザーでの作業を終了
$ exit
nginxの再起動
$ sudo systemctl restart nginx.service
サンプルアプリの起動
$ sudo su – deploy
$ cd /var/www/aws-intro-sample
$ rails assets:precompile RAILS_ENV=production
$ rails server -e production
RDSの内容確認
$ sudo su - deploy
$ mysql -u sample_app -p -h db.home sample_app -e 'select * from microposts\G'