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

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

詳細はこちら
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

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

Q&A

解決済

1回答

628閲覧

AWSでサーバー環境構築した際にトラブルが発生

hashiz

総合スコア8

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

AWS(Amazon Web Services)

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

0グッド

0クリップ

投稿2021/02/07 02:39

#背景
ポートフォリオでAWSのインフラ構築の一連の流れを理解するために【画像付きで丁寧に解説】AWS(EC2)にRailsアプリをイチから上げる方法【その3〜サーバー設定とRailsアプリの配置編〜】の記事を参考にして、インフラ構築を作成しました。
最初は順調に進みましたが、【 第5章 】Railsアプリを配置するのcredentials.yml.encの編集の時にローカル環境にてシークレットを生成してサーバー環境でEDITOR=vim bin/rails credentials:editのコマンドを打ちました。
##エラー文

-bash: bin/rails: No such file or directory

が出まして色々な記事やサイトで調べても解決が出来ませんでした。また、bin/railsを探しても自分のディレクトリにありませんでした。
その後、一旦この問題を置いて、先に進んだ際に3.database.ymlの修正の所でsudo service mysqld startマイグレーションを実行し、bundle exec rake db:migrate RAILS_ENV=productionのコマンドを打ちましたら
##エラー文

rake aborted! Don't know how to build task 'db:migrate' (See the list of available tasks with `rake --tasks`) /var/www/rails/railsAPI-tweets-app/vendor/cache/ruby/2.6.0/gems/rake-12.3.3/exe/rake:27:in `<top (required)>' /home/hashiz/.rbenv/versions/2.6.0/bin/bundle:23:in `load' /home/hashiz/.rbenv/versions/2.6.0/bin/bundle:23:in `<main>' (See full trace by running task with --trace)

が出まして、このエラーを調べて色んなサイトや記事などを参考にしましたが結局理解出来ませんでした。
もし、このエラーが分かる人がいましたら詳しく教えてください。
##補足情報
ローカル環境: docker-compose, ruby on rails6

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

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

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

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

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

maisumakun

2021/02/07 05:44

リモートのサーバはサーバ上に直接構築していますか、それともDocker上でしょうか?
hashiz

2021/02/07 05:48

サーバー上で構築しています。
hashiz

2021/02/07 05:51

正確にはターミナルでssh rails_tweets_app_key_rsaコマンドを打ちましてlinux環境上で操作しています。
maisumakun

2021/02/07 05:52

カレントディレクトリは正しいですか?
hashiz

2021/02/07 05:54

はい、カレントディレクトリは正しいです。
yu_1985

2021/02/07 14:18

カレントディレクトリについてはコマンド実行しているディレクトリで pwd と打ってその結果を貼ったほうが明快です。 また、プロジェクトのトップにちゃんと想定したディレクトリがあるか確認してください。 lsコマンド(大抵はls -lで所有者や権限も合わせて表示する)でプロジェクトのトップやbinディレクトリの中身を表示してその結果を貼ってみてください。
hashiz

2021/02/08 01:49

はい、質問者さんの回答を見ましてpwdコマンドを打ちましたら /var/www/rails/railsAPI-tweets-app の結果が出ています。 また、ls -lコマンドを打ちましたら 合計 24 -rw-rw-r-- 1 hashiz hashiz 350 2月 5 12:47 Dockerfile -rw-rw-r-- 1 hashiz hashiz 1438 2月 6 07:13 Gemfile -rw-rw-r-- 1 hashiz hashiz 4236 2月 6 13:45 Gemfile.lock -rw-rw-r-- 1 hashiz hashiz 1 2月 6 13:40 Rakefile drwxrwxr-x 2 hashiz hashiz 67 2月 7 08:19 config drwxrwxr-x 2 hashiz hashiz 6 2月 6 07:36 credentials.yml.enc -rw-rw-r-- 1 hashiz hashiz 426 2月 5 12:47 docker-compose.yml drwxrwxr-x 13 hashiz hashiz 246 2月 5 12:47 src drwxrwxr-x 2 hashiz hashiz 6 2月 5 12:47 tweets_front drwxrwxr-x 3 hashiz hashiz 19 2月 6 07:46 vendor このような結果が表示されました。
hashiz

2021/02/08 02:04

もしこの結果を見まして, 何か分かる事がございましたらご返事ください。
yu_1985

2021/02/08 04:54

binディレクトリがありませんが…そのアプリってどこから持ってきましたか?
hashiz

2021/02/08 05:33

アプリはgithubからクローンしました。
hashiz

2021/02/08 05:47

サーバー環境上ででcd /var/www/railsに移動してその後, githubでcodeボタンでsshを選択し ターミナルでgit clone git@github.com:hashiz008/railsAPI-tweets-app.gitを入力して cd railsAPI-tweets-appに移動しbundle installしました。
yu_1985

2021/02/08 07:22 編集

そのcloneする元のアプリのソースはどうやって生成しましたか? それとも自分で作ったものではないのでしょうか。 とりあえず、そこになくてもbundle installしたrailsがある気がするので、 bundle exec rails -v とかでrailsがちゃん入ってるか確認してみてください。
hashiz

2021/02/08 08:12

書かれた通りにbundle exec rails -vを入力したら, Rails 6.1.1が返ってきました。
guest

回答1

0

ベストアンサー

binディレクトリにrailsのバイナリを配置してないので、EDITOR=vim bundle exec rails credentials:editでbundle install済みのrailsを使えばいいのではないでしょうか。

投稿2021/02/08 08:16

yu_1985

総合スコア7588

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

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

hashiz

2021/02/08 08:37

EDITOR=vim bundle exec rails credentials:editを入力しましたら Usage: rails new APP_PATH [options] Options: [--skip-namespace], [--no-skip-namespace] # Skip namespace (affects only isolated engines) [--skip-collision-check], [--no-skip-collision-check] # Skip collision check -r, [--ruby=PATH] # Path to the Ruby binary of your choice # Default: /home/hashiz/.rbenv/versions/2.6.0/bin/ruby -m, [--template=TEMPLATE] # Path to some application template (can be a filesystem path or URL) -d, [--database=DATABASE] # Preconfigure for selected database (options: mysql/postgresql/sqlite3/oracle/sqlserver/jdbcmysql/jdbcsqlite3/jdbcpostgresql/jdbc) # Default: sqlite3 [--skip-gemfile], [--no-skip-gemfile] # Don't create a Gemfile -G, [--skip-git], [--no-skip-git] # Skip .gitignore file [--skip-keeps], [--no-skip-keeps] # Skip source control .keep files -M, [--skip-action-mailer], [--no-skip-action-mailer] # Skip Action Mailer files [--skip-action-mailbox], [--no-skip-action-mailbox] # Skip Action Mailbox gem [--skip-action-text], [--no-skip-action-text] # Skip Action Text gem -O, [--skip-active-record], [--no-skip-active-record] # Skip Active Record files [--skip-active-job], [--no-skip-active-job] # Skip Active Job [--skip-active-storage], [--no-skip-active-storage] # Skip Active Storage files -P, [--skip-puma], [--no-skip-puma] # Skip Puma related files -C, [--skip-action-cable], [--no-skip-action-cable] # Skip Action Cable files -S, [--skip-sprockets], [--no-skip-sprockets] # Skip Sprockets files [--skip-spring], [--no-skip-spring] # Don't install Spring application preloader [--skip-listen], [--no-skip-listen] # Don't generate configuration that depends on the listen gem -J, [--skip-javascript], [--no-skip-javascript] # Skip JavaScript files [--skip-turbolinks], [--no-skip-turbolinks] # Skip turbolinks gem [--skip-jbuilder], [--no-skip-jbuilder] # Skip jbuilder gem -T, [--skip-test], [--no-skip-test] # Skip test files [--skip-system-test], [--no-skip-system-test] # Skip system test files [--skip-bootsnap], [--no-skip-bootsnap] # Skip bootsnap gem [--dev], [--no-dev] # Set up the application with Gemfile pointing to your Rails checkout [--edge], [--no-edge] # Set up the application with Gemfile pointing to Rails repository [--master], [--no-master] # Set up the application with Gemfile pointing to Rails repository master branch [--rc=RC] # Path to file containing extra configuration options for rails command [--no-rc], [--no-no-rc] # Skip loading of extra configuration options from .railsrc file [--api], [--no-api] # Preconfigure smaller stack for API only apps [--minimal], [--no-minimal] # Preconfigure a minimal rails app -B, [--skip-bundle], [--no-skip-bundle] # Don't run bundle install --webpacker, [--webpack=WEBPACK] # Preconfigure Webpack with a particular framework (options: react, vue, angular, elm, stimulus) [--skip-webpack-install], [--no-skip-webpack-install] # Don't run Webpack install Runtime options: -f, [--force] # Overwrite files that already exist -p, [--pretend], [--no-pretend] # Run but do not make any changes -q, [--quiet], [--no-quiet] # Suppress status output -s, [--skip], [--no-skip] # Skip files that already exist Rails options: -h, [--help], [--no-help] # Show this help message and quit -v, [--version], [--no-version] # Show Rails version number and quit Description: The 'rails new' command creates a new Rails application with a default directory structure and configuration at the path you specify. You can specify extra command-line arguments to be used every time 'rails new' runs in the .railsrc configuration file in your home directory, or in $XDG_CONFIG_HOME/rails/railsrc if XDG_CONFIG_HOME is set. Note that the arguments specified in the .railsrc file don't affect the defaults values shown above in this help message. Example: rails new ~/Code/Ruby/weblog This generates a skeletal Rails installation in ~/Code/Ruby/weblog. が返ってきました。
yu_1985

2021/02/08 08:45

先にrails newでアプリのプロジェクト作れってことですかね。 そもそもこのアプリのこの構成はどうやって作ったんでしょうか?
hashiz

2021/02/09 01:22 編集

返信にだいぶ遅れましたが実情を申し上げますと 最初にローカルの方でDockerを使用して環境を構築しrailsAPIとReactでアプリを作成しました。 その後、コードをgithubにpushしました。次に, railsAPIとReactで作成したアプリをAWSを使って書かれている記事通りにインフラ構築をし今に至っております。 もしこの文章を読みまして何か分かる事がございましたら、ご返事をお待ちしております。
yu_1985

2021/02/09 01:25

> railsAPIとReactでアプリを作成 大まかな流れではなく、もっと具体的な手順を確認したいです。 通常であればrails newを実行したときにbinディレクトリが作成されるはずですが、そうはしなかったということですか? 必要なソースがコミットされていないとかではないでしょうか。
hashiz

2021/02/09 03:22

最初にローカル環境でDockerfileとdocker-compose.ymlとsrc-Gemfileを作成しdocker-compose run web rails new . --force --database=mysql --apiを打ってその後docker-compose buildをしました。 ローカル環境の方で確認してみたところ,rails-tweets-app---srcフォルダにbinディレクトリが作られております。 binディレクトリの中身はbundleファイル, railsファイル, rakeファイル, setupファイル, springファイルです。 Githubを確認しましたらsrcフォルダの中にbinディレクトリがありました。
yu_1985

2021/02/09 03:33

であれば、srcディレクトリをrailsプロジェクトのトップとみなして以降の対応を行うか、srcディレクトリの中身をトップに持ってくるかいずれかが必要でしょう。 なぜそのような構成になっているかは関連の手順や設定の詳細が不明なのでわかりませんが…。 また同様にdocker-compose buildしたといっても、docker-composeの設定がわからないのでそれだけだと何をしているのかよくわからないです。
hashiz

2021/02/09 04:45

つまり, サーバー環境でrailsAPI-tweets-appからcd srcに移動してEDITOR=vim bundle exec rails credentials:editコマンドを実行するという解釈で正しいのでしょうか? ちなみにdocker-compose.ymlの中身は version: "3" services: db: image: mysql:8.0 command: --default-authentication-plugin=mysql_native_password volumes: - ./src/db/mysql_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: password web: build: . command: bundle exec rails s -p 3001 -b '0.0.0.0' volumes: - ./src:/app ports: - "3001:3001" depends_on: - db とDockerfileの中身は FROM ruby:2.7 RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \ && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \ && apt-get update -qq \ && apt-get install -y nodejs yarn WORKDIR /app COPY ./src /app RUN bundle config --local set path "vendor/bundle" \ && bundle install ご参考になれば。
yu_1985

2021/02/09 04:49

確認したいんですが、サーバ上ではdocker-composeを使わないで環境構築したい、ということでいいですか? それであればそもそもそのdocker-comoposeではsrcディレクトリをrailsのrootとしているので諸々を実行するディレクトリが間違っています。 Gemfileやconfigがあるディレクトリとソースが配置されているディレクトリがズレているのでsrcの中身ををトップに持ってきたほうがいいでしょうね。 結論を言うとディレクトリ構成がまずいのが原因です。 サーバ上でもdocker-composeで構成したいなら話は別ですが。
hashiz

2021/02/11 08:08

返信にだいぶ遅れましたが回答者さんの書かれた通りにcd srcに移動したら、コマンドが上手く実行されました。調べた結果,ローカル環境の際にdockerfileにそのままsrcディレクトリをrailsのrootしていることが原因でした。なので、以降もdockerfileの書き方やディレクトリ構成に充分気を付けたいと思います。 yu_1985さん親切に教えてくださって本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問