概要
マネージドサービスの場合、通常のデプロイ手順だとEC2自体が別のものに切り替わったりして反映までに時間がかかるため、そこまでの手順を踏まずに軽微な修正を反映したい場合の手順を記載します。
ElasticBeanstalk環境
Ruby 3.0 AL2 バージョン 3.4.8
ソースコード修正
ElasticBeanstalk(Ruby環境)で稼働しているEC2にsshキーペアでsshログインし、修正対象のファイルを修正しておきます。
sudo su - webapp
cd /var/app/current
# rubyファイルを修正
# もしRailsアプリケーションでassetsを変更した場合は以下が必要(環境変数読み込みとassets:precompile)
export $(/opt/elasticbeanstalk/bin/get-config --output YAML environment | sed -r 's/: /=/' | xargs)
bin/rails assets:precompile
Puma再起動方法
PumaプロセスIDの取得
ElasticBeanstalkで稼働しているEC2にsshキーペアでsshログインし、以下コマンドを実行します。
sudo su - webapp
ps aux | grep "/var/run/puma/my_app" | grep -v "grep"
稼働しているpumaのプロセスIDが取得できます。
webapp 13591 0.0 2.8 262392 27696 ? Ss Jul19 0:03 puma 5.6.4 (unix:///var/run/puma/my_app.sock) [current]
Puma再起動
上記のプロセスIDから以下のようなpumactlコマンドでアプリケーションサーバpumaの状況取得および再起動が実施できます。
/var/app/current
配下でpumactlを実行するとconfig/puma.rbが存在する場合に上書きで設定を読み込んでしまうので、別のディレクトリで実行します
cd ~
pumactl -p 13591 status
pumactl -p 13591 restart
ワンライナーで実行したい場合は以下コマンドで実施できます。
cd ~
pumactl -p `ps aux | grep "/var/run/puma/my_app" | grep -v "grep" | awk '{print $2}'` status
pumactl -p `ps aux | grep "/var/run/puma/my_app" | grep -v "grep" | awk '{print $2}'` restart