見出し画像

AWS 組み込みサーバー(puma)でのRailsアプリケーション動作確認

※私の個人的な作業メモです。
※オンライン講座で勉強してるので提供されているものを使用してるのでほんまに一から全て作業進めてる人とは相違あります。
※間違ってたりしたら教えてください。
※作業環境は、EC2インスタンスからSSH接続した状態で作業してます。


課題取り組み当初まず、何から始めたらええの?ってなりました。

組み込みサーバーってなんやねん、組み込みって何に組み込まれてんねんからですね。

RailsアプリケーションにはPumaっていうアプリケーションサーバ(アプリケーションプログラムを動かすためのサーバ)が最初から組み込まれてるんですって。

なので今回は、Railsに組み込まれてるPumaでアプリケーションの動作確認をしましょうっていう課題です。

・動作環境を整える
・サンプルアプリケーションをクローン
・MySQLをインストール
・データベース(database.yml)作成
・データベース(database.yml)編集
・development.rbファイルを編集


まず、動作環境を整える(オンライン講座でバージョン指定あり)

【動作環境】
Ruby 3.1.2
 Ruby:プログラミング言語、Ruby on RailsはRuby無しでは動かない
Bundler 2.3.14
 Bundler:gemのバージョンか管理し、一貫性を保つものに使用される
  gem:Rubyのライブラリ
  ライブラリ:プログラミングにおいて便利なコードやツールを集めて一つのファイルにしたもの
Rails 7.0.4
Ruby on Railsの通称。システム開発が簡単にできるように用意されたフレームワーク
Node v17.9.1
Node.jsのこと。ブラウザ上で動作するJavaScriptをサーバサイドでも動作させることができる実行環境
yarn 1.22.19
JavaScriptのパッケージ管理ツール
 Node.jsではnpmかyarnが使用される、yarnの方が高速

これをとりあえずインストールするのねはいはいでサクサク進められる人はいいけど、全部初めましての単語なのでまず、What is ○○から始まる。
そして、○○を調べたらもちろん分からない単語が盛りだくさん。
Bundlerとかさgemのバージョン管理するやつ→gemとは?→ライブラリとは?みたいに○○の○○を調べていくのが大変!辛い!しんどい!嫌い!

ではでは、やっていきましょう。

★★Rubyをインストール★★
①パッケージをインストール
②gitをインストール
③gitを使ってrbenvをインストール
④rbenvを使ってRubyをインストール

①sudo yum install -y openssl-devel readline-devel zlib-devel
Rubyのビルドプロセスが必要な依存関係を解決し、機能が正しく動作するようになる

②sudo yum install git

③git clone https://github.com/rbenv/rbenv.git ~/.rbenv
rbenvインストールは必須ではない。
でも、rbenvを使用することでRubyのバージョン管理を簡単にするツールなのでインストールします。

git clone https://github.com/rbenv/rbenv.git ~/.rbenvはrbenv公式のGitHub

④rbenv install 3.1.2
指定したRubyのバージョンをrbenvを通じてインストール


★★Bundlerをインストール★★
gem install bundler -v 2.3.14
「-v」でバージョン指定しなければ最新バージョンがインストールされる


★★Railsをインストール★★
gem install rails -v 7.0.4


★★Nodeをインストール★★
Node Version Manager (NVM) を使用してインストールするのでまずnvmのインストールしてからNode.jsをインストールする
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
または、git clone git://github.com/creationix/nvm.git .nvm
curl~の方でインストールするとネットワーク越しに実行されるので最新版が取得される
git clone~の方でインストールするとインストール後に手動でアップデートする必要がでてくるのでcurl~の方でインストールした方がいい

ターミナルを再起動させるか、source ~/.bashrcやsource ~/.zshrcなどを実行して反映させる

nvm install 17.9.1
nvmを使用してNode.jsをインストール


★★yarnのインストール★★
npm install -global yarn@1.22.19
npmを使用してyarnをインストール
基本的にnpmはNode.js内にあるからnpmをインストールする必要はない
「-global」はyarnパッケージをシステム全体でインストールするため


全部終わったら、「-v」付けてバージョン確認
ruby -v
bundler -v
rails -v
node -v
yarn -v


サンプルアプリケーションをクローン
オンライン講座受講してるので動作確認させたいRailsアプリケーションは提供されてます。
git clone https://github.com/アプリ名.git



MySQLをインストール(これもオンライン講座以下略)
curl -fsSL https://raw.githubusercontent.com/○○/mysql_amazon_linux_2.sh | sh



データベースの作成
cp config/database.yml.sample config/database.yml
アプリケーションを起動する際、データベースが必要な場合はデータベース(config/database.yml)がないと正しく動作しないので作ります。



データベース編集
nano config/database.yml

default: &default
 "default" という名前のYAMLアンカーを定義
 アンカーとは、YAMLの特徴的な構文の一部であり、複雑なデータ構造や設定の管理を容易
adapter: mysql2
 使用するデータベースアダプタを指定
 アダプタは異なるもの同士を結びつけ、互換性を確保して連携が可能になるようにする仲介役。ここではRuby on RailsアプリケーションとMySQLデータベースを結びつける
encoding: utf8mb4
 データベースの文字エンコーディングを設定
 設定しないと文字化けする
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
 データベース接続プール内の最大接続数を構成
 設定されていない場合はデフォルトで5つの接続
 十分な数の接続が確保されないと、同時に処理できるリクエストが制限され、アプリケーションの性能が低下する可能性がある
host
 RDSのエンドポイント

defaultはデータベース接続の設定を定義するためのもの。
<< :*defaultはdefaultで定義した内容を引き継ぐことができるもの。
なので、データベース接続情報は、各種環境ごと(development、test、production)に分けるべきなら環境ごとに書いて、全環境共通したいものならdefaultに書きます。



いざ、実行(bin/rails server -b 0.0.0.0)!
http://パブリック IPv4 アドレス:3000へアクセス!
Webアプリケーションは、デフォルトで80番ポート(HTTP)または443番ポート(HTTPS)なんですが、開発環境では3000番ポートを使用します。
EC2のセキュリティグループのインバウンドルール設定してね。
プロトコルTCP、ポート3000、ソース0.0.0.0/0

たぶん、真っ赤なBlocked hostって画面が出てくると思います。

Railsのセキュリティ機能が有効になってるので「エラーや…最悪や…無理」ってならなくて大丈夫です。(私はどんなエラーが出てもなってますが)
デフォルトでホストを信頼するリストに含まれていないホストからのリクエストはブロックされるようになってるそうです。

bin/rails serverコマンドを使用して起動する場合、デフォルトではdevelopment環境が使用されます。
なので、このエラーを回避するためには、development.rbファイルで設定を変更してあげないといけません。

bin/rails server -b 0.0.0.0してBlocked hostが出たら一旦Ctrl+Cで出ます。

nano /home/ec2-user/アプリ名/config/environments/development.rbで編集します。

config hosts << "パブリック IPv4 アドレス"を追加入力してCtrl+Xで保存してyで出る

<独り言>
編集画面展開して入力した後、え、これどうやって保存すんの?この画面から元の画面に戻るのどうやるんってなる。大体Ctrl+Xで保存して出れるけど忘れたけど入力する時にiを押さなあかんかったりEsc押して:wqみたいなので出るときもあるやん?あの違い何?こんなんで躓くレベルです。

いざ、再び実行(bin/rails server -b 0.0.0.0)!
http://パブリック IPv4 アドレス:3000へアクセス!

無事、アプリケーション動作確認ができました。


この課題に2週間くらいかかった。
今ね、この続きがあるんやけどそれにはかれこれ2か月くらいかかってる。
しかもまだできてないっていう。
向いてなさ過ぎて辛い。
だから、ほんまにAWS触れたことない人はもちろんITに関わらない人でなんかかっこいいやん!やろっかな!みたいなノリでしたら時間もお金も無駄にします。
若い人とか未経験で就職するのはまた別やと思う。
仕事で身に付けていくのと、個人の習い事で身に付けていくのとではやっぱり触れてる時間とか内容が全然違うから1回IT経験したいなーって思うのなら25歳くらいまでに飛び込むのはアリかなーって思う。


私は、大金払って始めてしまったのでめっちゃ時間かかるし嫌やけどお金払ったから!課題進めていきます。
コース完走するの何年後になるんやろう…


Maison Landemaine


Thank you!!

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