見出し画像

AWSテストデプロイとその後のアプリ管理

どうもひっきーです。メンターさんのアドバイスを受けて、昨日から格闘していたエラーが解決でき、今日AWSを使ったアプリのテストデプロイができました。その過程でGitの管理の重要性を痛感したので、備忘録として重要なコマンドなどを今回メモしていこうと思います。

<EC2の環境>

・Webサーバ:Nginx

・アプリケーションサーバ:Puma

・ruby 2.5.5

・Rails 5.2.3

<遭遇した本番環境のエラーと解決策>

>>502 Bad Gatewayのエラー

原因:database.ymlとmaster.keyはアップロードできていたが、vagrant上でdaemonの設定が書かれたpuma.rbファイルを作った後に、.gitignoreにpuma.rbを追記してしまった状態でGitHubにpush、それをEC2上にクローンしたため、puma.rbが存在していない状態だった(下図)

スクリーンショット 2019-12-09 10.58.20

解決策:config下にpuma.rbファイルを作り、viでdaemonの設定を追記

→動きました。

>>最新版のGitをAWS環境下にpullした後ログインができなかった

原因:本番環境のデータベースのマイグレーションをを行なっていなかったため、新たに作成したテーブルがDBに存在していなかった

解決策:bundle exec rails db:migrate RAILS_ENV = productionを実行する

#アプリ内のDBに変更を加えたものをpullしたら必ず行う
$git pull origin master
$bundle exec rails db:migrate RAILS_ENV=production

<今日学んだ重要なコマンド集>

・アプリケーションサーバ起動後にログを追う -Rで色付きで見れる

#EC2サーバ起動状態で
[ec2-user@ip-172-31-43-82 app]$ less -R log/production.log
#結果
(6.0ms)  SET NAMES utf8mb4 C
OLLATE utf8mb4_general_ci,  @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'),  @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483
~~~
##本番環境のログが確認できる

・DBのマイグレーション

#git pull origin master後に必ず実行
[ec2-user@ip-172-31-43-82 app]$ bundle exec rails db:migrate RAILS_ENV=production

・プリコンパイル=>ローカルでは自動で読み込みをしてくれていたが本番では自分で実行する必要がある

#jsファイルなどの更新後に実行
bundle exec rails assets:precompile RAILS_ENV=production

・Pumaの停止

kill $(cat tmp/pids/puma.pid)

・アプリケーションサーバーの状態を確認

$[ec2-user@ip-172-31-43-82 app]$ ps aux | grep puma

#kill $(cat tmp/pids/puma.pid)前に実行した結果
c2-user 10274  0.0  8.2 890412 82896 ?        
Sl   16:59   0:00 puma 3.12.1 (tcp://0.0.0.0:3000,unix:///home/ec2-user/アプリ名/tmp/sockets/puma.sock) 
[app] #=>puma起動中

#kill $(cat tmp/pids/puma.pid)後に実行した結果
ec2-user 10203  0.0  0.2 110536  2208 pts/0    
S+   16:54   0:00 grep --color=auto puma #=>puma停止中

#killとサーバー立ち上げを同時にする
$kill $(cat tmp/pids/puma.pid) && rails s -e production 

今後しっかりとLinuxコマンドの学習が必要ですね。


この記事が気に入ったらサポートをしてみませんか?