🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

Q&A

解決済

1回答

1778閲覧

【AWS】【EC2】capistranoを使ってのデプロイ時にエラーが発生してしまう

yastinbieber

総合スコア49

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

0グッド

0クリップ

投稿2021/01/21 06:22

編集2021/01/22 05:36

前提・実現したいこと

引き続きローカルで作成したRailsアプリをEC2経由でAWSへデプロイしようと試みております。

下記サイトを参考にしながら進めております

※capistrano導入に関してはサイト1、2を参考にしています。

現在デプロイに関する設定が一通り完了したのでcapistanoを導入しようと進めております。

そちらも諸々設定を完了させたのでいよいよデプロイに入ろうとしたのですがそこでエラーがいくつか発生しているような状況です。

発生している問題・エラーメッセージ(デプロイコマンド時の内容全てを載せています)

※文字数の関係で上手くいっているだろう箇所は省いています

ec2-user:~/environment/toreka (master) $ bundle exec cap production deploy 00:11 bundler:config 01 $HOME/.rbenv/bin/rbenv exec bundle config --local deployment true 01 You are replacing the current local value of deployment, which is currently nil ✔ 01 ec2-user@54.249.173.184 0.407s 02 $HOME/.rbenv/bin/rbenv exec bundle config --local path /var/www/git_toreka/shared/bundle 02 You are replacing the current local value of path, which is currently nil ✔ 02 ec2-user@54.249.173.184 0.255s 03 $HOME/.rbenv/bin/rbenv exec bundle config --local without development:test 03 You are replacing the current local value of without, which is currently nil ✔ 03 ec2-user@54.249.173.184 0.235s 00:13 bundler:install The Gemfile's dependencies are satisfied, skipping installation 00:13 deploy:assets:precompile 01 $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile 01 yarn install v1.22.5 01 info No lockfile found. 01 [1/4] Resolving packages... 01 [2/4] Fetching packages... 01 [3/4] Linking dependencies... 01 [4/4] Building fresh packages... 01 success Saved lockfile. 01 Done in 0.09s. 01 01 # 01 # Fatal error in Evacuation 01 # Allocation failed - process out of memory 01 # 01 01 bash: line 1: 3660 Trace/breakpoint trap $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile #<Thread:0x0000000002af1778@/home/ec2-user/environment/toreka/vendor/bundle/ruby/2.5.0/gems/sshkit-1.21.2/lib/sshkit/runners/parallel.rb:10 run> terminated with exception (report_on_exception is true): Traceback (most recent call last): 1: from /home/ec2-user/environment/toreka/vendor/bundle/ruby/2.5.0/gems/sshkit-1.21.2/lib/sshkit/runners/parallel.rb:11:in `block (2 levels) in execute' /home/ec2-user/environment/toreka/vendor/bundle/ruby/2.5.0/gems/sshkit-1.21.2/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute': Exception while executing as ec2-user@54.249.173.184: rake exit status: 133 (SSHKit::Runner::ExecuteError) rake stdout: yarn install v1.22.5 info No lockfile found. [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh packages... success Saved lockfile. Done in 0.09s. rake stderr: # # Fatal error in Evacuation # Allocation failed - process out of memory # bash: line 1: 3660 Trace/breakpoint trap $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile (Backtrace restricted to imported tasks) cap aborted! SSHKit::Runner::ExecuteError: Exception while executing as ec2-user@54.249.173.184: rake exit status: 133 rake stdout: yarn install v1.22.5 info No lockfile found. [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh packages... success Saved lockfile. Done in 0.09s. rake stderr: # # Fatal error in Evacuation # Allocation failed - process out of memory # bash: line 1: 3660 Trace/breakpoint trap $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile Caused by: SSHKit::Command::Failed: rake exit status: 133 rake stdout: yarn install v1.22.5 info No lockfile found. [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh packages... success Saved lockfile. Done in 0.09s. rake stderr: # # Fatal error in Evacuation # Allocation failed - process out of memory # bash: line 1: 3660 Trace/breakpoint trap $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile Tasks: TOP => deploy:assets:precompile (See full trace by running task with --trace) The deploy has failed with an error: Exception while executing as ec2-user@54.249.173.184: rake exit status: 133 rake stdout: yarn install v1.22.5 info No lockfile found. [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh packages... success Saved lockfile. Done in 0.09s. rake stderr: # # Fatal error in Evacuation # Allocation failed - process out of memory # bash: line 1: 3660 Trace/breakpoint trap $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile ** DEPLOY FAILED ** Refer to log/capistrano.log for details. Here are the last 20 lines: DEBUG [40b78d88] Running if test ! -d /var/www/git_toreka/releases/20210121031636; then echo "Directory does not exist '/var/www/git_toreka/releases/20210121031636'" 1>&2; false; fi as ec2-user@54.249.173.184 DEBUG [40b78d88] Command: if test ! -d /var/www/git_toreka/releases/20210121031636; then echo "Directory does not exist '/var/www/git_toreka/releases/20210121031636'" 1>&2; false; fi DEBUG [40b78d88] Finished in 0.050 seconds with exit status 0 (successful). INFO [7c035e49] Running $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile as ec2-user@54.249.173.184 DEBUG [7c035e49] Command: cd /var/www/git_toreka/releases/20210121031636 && ( export RBENV_ROOT="$HOME/.rbenv" RBENV_VERSION="2.5.1" RAILS_ENV="production" RAILS_GROUPS="" ; $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile ) DEBUG [7c035e49] yarn install v1.22.5 DEBUG [7c035e49] info No lockfile found. DEBUG [7c035e49] [1/4] Resolving packages... DEBUG [7c035e49] [2/4] Fetching packages... DEBUG [7c035e49] [3/4] Linking dependencies... DEBUG [7c035e49] [4/4] Building fresh packages... DEBUG [7c035e49] success Saved lockfile. DEBUG [7c035e49] Done in 0.09s. DEBUG [7c035e49] # # Fatal error in Evacuation # Allocation failed - process out of memory # DEBUG [7c035e49] bash: line 1: 3660 Trace/breakpoint trap $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile ec2-user:~/environment/toreka (master) $

試したこと

❶yarnの導入

SSHKit::Runner::ExecuteError: Exception while executing as ec2-user@54.249.173.184:

上記のようなエラーが発生していたためEC2上にyarnをインストールしました。
yarn導入にあたり参考にしたサイト

Complete! [root@ip-172-31-36-245 ~]# yarn --version 1.22.5

❷SSH鍵の登録
SSHKit::Runner::ExecuteError: Exception while executingで検索をかけるとこちらのサイトがヒットし、再起動するとSSH鍵が消えてしまうとのことだったので

ec2-user:~/environment $ cd ~/.ssh ec2-user:~/.ssh $ ssh-add ~/.ssh/torekabodymake_keypair.pem Could not open a connection to your authentication agent. ec2-user:~/.ssh $ eval "$(ssh-agent)" Agent pid 16072 ec2-user:~/.ssh $ ssh-add ~/.ssh/torekabodymake_keypair.pem Identity added: /home/ec2-user/.ssh/torekabodymake_keypair.pem (/home/ec2-user/.ssh/torekabodymake_keypair.pem)

上記実行してみましたがエラー文に記載しましたようにエラーを吐いてしまっているような状況です。

同じようなエラー内容が繰り返されていたり検索にかけても今一つ解決に足りるピースが見つかっていないような状況でございます。

恐れ入りますがcapistrano周りで詳しい方おりましたらご教授願います。
よろしくお願い致します。

その他

amazonlinux2
EC2
AWS
Cloud9
Rails5.2
ruby2.5.1
mysql8

追記

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2021/01/21 16:04

capistranoを使ってどのサーバからどのサーバにデプロイしたいんでしょうか? ローカルで作成したアプリと言いつつCloud9がいきなり登場していて、Cloud9上でCapistranoを実行している意図が見えません。
yastinbieber

2021/01/22 03:12

コメントありがとうございます。 自身の認識・知識が不足している面も含めてお聞きいただけると幸いなのですが、 下記サイトでいうところの『capistranoの導入』は既に実行済みです。 https://qiita.com/syoma/items/360c09eddc8aed25fd37#capistrano%E3%81%AE%E5%B0%8E%E5%85%A5 先日unicorn,nginx等の導入が完了し、 http://〇〇.〇〇○.〇〇◯ にてサイトに入ることができるところまではきました。 ですのでEC2に作成したRailsアプリをcapistranoを用いてAWSに自動デプロイしたい ということかと思います。 この辺りサイトを参考にしながら流れで理解しているような形ですので間違っていたら申し訳ございません。 ですのでその流れでcapistranoも導入をしております。
yastinbieber

2021/01/22 03:15

なお開発している環境はCloud9になります。 そこでRailsアプリを作成しており、先日EC2を利用してデプロイ作業をしておりました。 参考にしているサイト上におけるローカルというものが僕の開発環境でいうCloud9と認識しどちらでも伝わり方に違いはないかと思い混同させてしまっていました。
yu_1985

2021/01/22 04:06

> EC2に作成したRailsアプリをcapistranoを用いてAWSに自動デプロイしたい その説明だとよくわかりません。 「AWSに」とはどこを指してますか?EC2はAWS上の環境ですし、Cloud9自体もEC2インスタンス上に作成される環境なのですが…。 つまるところ、Cloud9から、Cloud9以外の別のEC2インスタンスに対してデプロイを行おうとしている、ということでいいでしょうか。 そもそもの話Cloud9から対象のEC2インスタンスにSSHでつなぐことはできていますか?
yastinbieber

2021/01/22 05:36 編集

説明がうまくできずで申し訳ございません。 > つまるところ、Cloud9から、Cloud9以外の別のEC2インスタンスに対してデプロイを行おうとしている、ということでいいでしょうか。 おっしゃる通りでございます。 今回既存のcloud9で作成したアプリを別で作成したEC2インスタンスにデプロイしようとしております。 > そもそもの話Cloud9から対象のEC2インスタンスにSSHでつなぐことはできていますか? cloud9から対象のEC2インスタンスにSSHで繋ぐとは下記の確認方法でお間違いないでしょうか。 ec2-user:~/environment/toreka (master) $ cd ~/.ssh ec2-user:~/.ssh $ ssh -i torekabodymake_keypair.pem ec2-user@54.249.173.184 Last login: Fri Jan 22 02:49:11 2021 from 52.196.34.213 __| __|_ ) _| ( / Amazon Linux 2 AMI ___|\___|___| https://aws.amazon.com/amazon-linux-2/ [ec2-user@ip-172-31-36-245 ~]$ cd /var/www/git_toreka [ec2-user@ip-172-31-36-245 git_toreka]$ また実行中のインスタンスも念のため追記しております。 上がcloud9で作成されたインスタンス、 下がデプロイにあたり今回作成したインスタンスになります。
guest

回答1

0

ベストアンサー

よくよくエラーメッセージを見ると

process out of memory

なので、デプロイ先インスタンスのメモリ不足ではないでしょうか

投稿2021/01/22 06:04

yu_1985

総合スコア7588

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yastinbieber

2021/01/22 07:05 編集

ありがとうございます。 上記の点についてお聞きしたいのですが、 下記のサイトを参考とするとswap領域を拡張することで本件解消すると考えられるのですが、 https://mikamisan.hatenablog.com/entry/2017/04/06/210856 その際に sudo dd if=/dev/zero of=/var/swapfile bs=1M count=1024 コマンドを打ったところ [ec2-user@ip-172-31-36-245 ~]$ sudo dd if=/dev/zero of=/var/swapfile bs=1M count=1024 dd: error writing ‘/var/swapfile’: No space left on device 1+0 records in 0+0 records out 0 bytes (0 B) copied, 0.00280678 s, 0.0 kB/s という反応がありました。 更に下記コマンドを打ってみたところ ------------------------------------------------- [ec2-user@ip-172-31-36-245 ~]$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 482M 0 482M 0% /dev tmpfs 492M 0 492M 0% /dev/shm tmpfs 492M 444K 492M 1% /run tmpfs 492M 0 492M 0% /sys/fs/cgroup /dev/xvda1 8.0G 8.0G 316K 100% / tmpfs 99M 0 99M 0% /run/user/1000 ------------------------------------------------- > /dev/xvda1 8.0G 8.0G 316K 100% / とありディスク容量が不足していると考えられました。 この場合まずディスク容量を拡張してからでないと進めないでしょうか。 (EBSのボリュームを増やす) あとfreeコマンドも載せておきます [ec2-user@ip-172-31-36-245 ~]$ free -m total used free shared buff/cache available Mem: 983 456 79 0 446 378 Swap: 0 0 0
yu_1985

2021/01/22 07:16

当然のことですが、容量が不足しているのに容量を超える領域を確保することはできないので、swap領域を作りたいならディスクを拡張してください。 というか、swap領域を作る作らない関係なく容量が不足してるので拡張が必須ではないでしょうか。 個人的にはそこまでしてt2.microを使うよりおとなしくインスタンスタイプを変更することをおすすめします。
yastinbieber

2021/01/22 12:57

諸々ありがとうございます。 一旦EBSボリュームを増やしたところご指摘いただいた箇所のエラーは解消されました。 またデータベース関連のエラーが出てしまいましたが再度自身で考えてみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問