Hello!!みなさん、お久しぶりです!Junです!!
今、とある企業の選考に際して、インフラ関係の知識を整理しておくことが必要になったので、この記事にてまとめていきます!
今まで扱ってきたインフラ
・レンタルサーバー(さくら、ロリポップ)
・Heroku
・AWSの最小構成
になります!
インフラって何?って方は以下の章を・・
インフラって何?
WebページやWebアプリケーションをインターネット上に表示させるとき、GoogleChromeのアドレスバーがありますよね?
![](http://junjunworks.hippy.jp/wordpress/wp-content/uploads/2022/12/image-3-1024x123.png)
ホームページのアドレスが書いてあると思うのですが、
junjunworks.hippy.jp/wordpress/
これがjun jun works(このブログのサイト)の「住所」になります。
「住所」があるということは、そこに「土地」があり、「建物」が建っていると考えられます。その「建物」がWebページ、「土地」がインフラストラクチャ(インフラ)です。どんなに良い建物(Webページ)も、「土地」がなければ建てられませんよね?そういう時に「土地」を借りて、その上に「建物」を建てます。
その「土地」を借りるという作業を行えるのが「レンタルサーバー」を貸し出している「さくら」「ロリポップ」です。
https://www.sakura.ad.jp/?gclid=Cj0KCQiA7bucBhCeARIsAIOwr–BpuKtArcOfwdPUHu9RHCMtq_VuhHjHcdrNgCM4HYfaVN_vBAEXJYaAnAsEALw_wcB
https://lolipop.jp/
自分は現在、月額440円(税込)でロリポップでサーバーをレンタルしています。
そしてそのサーバーの中にいくつかのファイルを置き、このブログを書いて、アップロード(更新)し、ネット上に表示させています。
WordPressなので、ブログであればアップロードは自分で行わなくていいんですけどね。
他のトップページや、ポートフォリオ的なサイトはアップロードを行いました。
![](http://junjunworks.hippy.jp/wordpress/wp-content/uploads/2022/12/image-4-1024x520.png)
上記トップページや、
こういうポートフォリオサイトを作成しました。
下記から飛べるので、いろいろご覧ください!!
jun jun works
このサイトが簡単におけるのも「ロリポップ」様のレンタルサーバーのおかげです!!
さくら、ロリポップのレンタルサーバーだけじゃダメなの?
さくら、ロリポップはHTML/CSS、JavaScriptのサイトを自分は置いてあります。
それ以外の言語を用いるときに、おそらくググると出てくると思うのですが、さくら・ロリポップ上では扱えないインフラというのが存在する・・はずです。コースをスタンダードから、プロフェッショナル的なものに変更すればできるかもしれない(未確認・・・_:(´ཀ`」 ∠):)のですが、他サイトで「いろいろな言語」をインフラとして扱えます。その一つがHerokuです。
Herokuはアプリケーションのインフラとして扱えるサイトです。以前、無料でWebアプリケーションを置けましたが、2022/11/28から有料となってしまったので、Herokuばかりに頼れません・・。
AWSの最小構成
自分が遊びで構成していたのが下記画像になります。
![](http://junjunworks.hippy.jp/wordpress/wp-content/uploads/2022/12/image-5-1024x724.png)
VPCの中にパブリックサブネットとプライベートサブネットを配し、パブリックサブネットの中にはElastic IPアドレスを取得してIPアドレスを固定したEC2インスタンスを置き、そのEC2インスタンスとルートテーブルを結びつけ、ルートテーブルから直接インターネットゲートウェイへとアクセスする経路を用意しました。また、プライベートサブネットからは、RDS(リレーショナルデータベースサービス)をおき、ルートテーブルを経由してパブリックサブネット内のNATゲートウェイへの経路を確保し、NATゲートウェイからインターネットゲートウェイへの経路を確立させるはずだったのですが、費用を考えて、上記の図までに留めました。
プライベートサブネットの中は、外部からのアクセスができないような性質を持っているので、パブリックサブネットよりも重要なデータを保存しておく場合に用いられます。今回の場合は、パブリックサブネット内にあるEC2インスタンスと、プライベートサブネット内に配する予定だったRDS(リレーショナルデータベースサービス)を、連携させてデータのやり取りを行い、簡単なデータを保存できる最小のインフラ構成を行おうとしていました。プライベートサブネット内にRDSを置いておけば、外部からRDSへはアクセスできない(はず)です。
実際に表示させたサイトは、EC2インスタンスの中にindex.htmlなどのコーディングしたファイル群を置き、固定されているElastic IP アドレスを取得して、ポートフォリオサイトを表示させていました。
しかし、この時作成したAWSの最小構成を用いたポートフォリオサイトは、現在ロリポップのレンタルサーバーへ移行してしまいました。理由は、パブリックサブネット内に配してあるNATゲートウェイの料金が高く、月額3500円ほどかかってしまうからです。5日放置していた時に、500円かかっていて、「え!!」と驚き確認したところ、上記の料金となっていて、びっくりしたので全て削除してしまいました。ここをよく確認すると、現状、RDS(リレーショナルデータベースサービス)をプライベートサブネット上に配置していないので、プライベートサブネット、ルートテーブル、NATゲートウェイの3つを消せば、ロリポップよりも少し安い値段でポートフォリオサイトを表示できたのではないか、とちょっと考える時もあります。
ただ、ロリポップは無料でWordpressが扱え、このブログを作成することができるようなったので、意外と悪い行動ではなかったと考えています。(AWSおそらく月額300円、ロリポップ月額440円でwordpress付き。いうて缶ジュース一本ぐらいの値段でいろいろ考えるまでもないけど・・笑)
AWSの構築から、サイトの更新して表示まで…ってどうやってやるの?
サイトをググりながら逐一、確認しながら構築しました・・。
その時参考にしたサイトなどをまとめておきます。
動画学習サイト「Udemy」より
こちらの講座を購入し、ハンズオンの部分だけ、真似てEC2インスタンスを作成しました。ハンズオンとは、実際にPC上で操作しながら手を動かして行う学習スタイルです。VPC内にパブリックサブネットを配し、その中にEC2インスタンスを作成するあたりまでハンズオンしたと思います。こちらの教材は、AWSの資格であるSAA(ソリューションアーキテクトアソシエイト)のための学習動画になるので、8割ほど資格学習の動画になっています。多くて2割のハンズオンが掲載されています。資格取得用に自分は購入しました。
DevelopersIO produced by Classmethod(classmethod クラスメソッド株式会社)
こちらのVPC環境作成も、とても有用です。VPC内のインターネットゲートウェイ、パブリックサブネット、プライベートサブネット、ルートテーブル間の経路を確立させる設定の参考になる記事を参考にしました。画像と説明がセットなので、視覚的に作業を確認できます。
その後、EC2インスタンス内に、自端末のターミナル(コマンドプロンプトやpower Shellあたり?)から下記のコマンドを入力し、直接作成したEC2インスタンス内にターミナル上でログインしていました。
AWSで作成したサーバーへログインする用のコマンド(ターミナル使用)
ssh -i ~/.ssh/Udemysample.pem ec2-user@EC2インスタンスのIPアドレス(例 1.2.255.222 などの0から255までの数字4つが3つの.を挟み並んだもの)
ここは、ssh接続でのログインを試みていました。ssh接続とは、定期的にログインするサーバーに公開鍵を配置し、自分の端末に秘密鍵を適切な場所に置いておくことで、毎回パスワードを入力しなくてもセキュリティレベルをパスワード入力と同等以上に保ったままログインできる接続方法です。パスワード入力が省かれるので、作業回数の多いEC2インスタンス内のサーバーにログインするときなどに利用します。下記サイトを参考にすると、わかりやすいと思います。(自分は手当たり次第にググりましたが、この記事を書いている時に、わかりやすいものを見つけました。)
Amazon Linux (EC2) に秘密鍵でSSH接続できるようにする
キリウ君が読まないノート
EC2インスタンスにログインした後、下記コマンドを入力し、サイトの更新を行なっていました。
scp -i <pemファイルのパス> <更新したいファイルのパス> <送信先ホスト>:<送信先パス>
scp -i /Users/ユーザー名/.ssh/Udemysample.pem <更新したいファイルのパス> ec2-user@:/home/ec2-user/
scpはcp(コピー)の上位コマンドだと思っています。super copy?(スーパーコピー?正式なとこわからないけど、困らないし、これでいいかな笑)
-i は、ハイフン(-の横棒のことです。)がコマンドに対する「オプション」を表します。-i の場合は、個人的に「interface(インターフェース)」のことだと思っていて、interは相互に、faceは顔、という意味なので、「お互いに顔合わせする瞬間」という意味で解釈しています。それが認証系のオプションになっている、という意味で自分は納得しています。
<pemファイルのパス>は、下記のブログの「キーペアの作成」の項目が画像付きで参考になります。
ex1-lab
自分はmacなので、その続きを下記の記事のような操作を参考に、サイトを更新していました。
Mac SSH、SCPコマンド(ファイルアップロード・ダウンロード)まとめ
TechTech Note
<送信先ホスト>は、ssh接続の時に利用している「ec2-user@EC2インスタンスのIPアドレス」です。上記サイトの中に実例があるので、一度見ておくと、もっとわかりやすいです。
<送信先パス>は、ログインした先のEC2インスタンスのどの場所にコピーするかのディレクトリを指定するためのパスになります。
ここまでの操作で、サイトの更新自体はできるようになりました。
その後、EC2インスタンスのIPアドレスが毎回変わる・・というような記事を見つけ、IPアドレスを固定するためのElastic IPの作成を行いました。
技術blog 「Qiita」より
こちらの記事はガッツリこのまま拝見し、操作を行うと、毎回同じIPアドレスでサイトを表示させることができるようになりました。
IPアドレスが変わると、管理者側からはどうにか確認の方法がある(はず)だと思うのですが、ユーザー側からアクセスする際に、ブックマークし、お気に入りに追加したはずのサイトが表示されなくなるので、固定しました。
最後に…
上記のインフラ構成図を自分で構築でき、サイトを表示できたので、少し自信にはなりましたが、まだまだ実務レベルには及ばないと考えています。そのため、ハンズオン的学習方法を踏まえながら、サイトで検索&精度の高い記事をブログに残していくことで、このような形のインフラの道標的なサイトも構築できたらと考えています。それでは、一旦失礼します。
Comments