AWSのEC2インスタンスにapacheをインストールしました。

Linux,Web開発,システム開発

以下、自分用の備忘録( ..)φメモで他の方にはあまり参考になりませんが、仕事で使う可能性があるので公開します。

プロローグ

最近はぜんぜん仕事が決まらず困っています。この前もテクニカルディレクター案件の打診があり面接までして頂きましたが話が流れてしまいました。やっぱり今時AWSの経験が無いと話になりません。たぶん仕事で使えばアッというまに覚えるんだろうなと高をくくっており、また正直どれくらい料金が発生するのかワカラズ、ついついプライベートでAWSを避けて通ってきてしまいましたが、このままではマズイと一念発起、ちゃんと勉強する事にしました。その際、Udemyの「AWS:ゼロから実践するAmazon Web Services。手を動かしながらインフラの基礎を習得」を教材として使わせて頂きましたが、これ非常に解りやすかったです。全てを1から教えてくれるので自分の知っている範囲だと少々鬱陶しかったりもするのですが、自分の知らない範囲だとメッチャ解りやすいです。ただ動画のままでは仕事で使えないので、自分なりにブログへまとめ直す事にしました。
なおAWSアカウントの作成や料金アラートの設定、VPCのネットワーク構築などは、いずれまとめ直す予定です。今回はとりあえず、いつでも自分の開発環境を構築できるようにする為、EC2インスタンスを作成しapacheをインストールする部分に絞っています。

EC2インスタンスの作成

まずEC2のダッシュボードを起動します。

次に左ペインで「インスタンス」を選択し、右側の「インスタンスを起動」を押します。

今回はAMI(Amazonマシンイメージ)の中から、クイックスタートにある「Amazon Linux 2 AMI」を選択しました。

自分用の開発環境なので、インスタンスタイプは無料の「t2.micro」を選択しました。

ここで以下の様に設定しました。なお開発環境用のセッティングで、もし本番環境を構築しようとしている方にとっては情報が不足している設定内容ですので悪しからず。
ネットワークは自分自身で作成したVPCを、また、サブネットも自分自身で作成した物を選びます。なお今回はwebサーバーなのでパブリックに所属しているサブネットを選ぶ点が重要です。とうぜん、パブリックIP割り当ても有効にします。

また下の方にスクロールし、ネットワークインターフェースのプライマリIPに任意のプライベート側IPアドレスを設定し、次のストレージ追加の手順へ進みます。

今回は開発環境なので、そのまま次のタグ追加手順へ進みます。なおインスタンスを消した際にストレージを消し忘れて課金されないよう「合わせて削除」にチェックが入っている事は確認してください。

タグを追加し、キー「Name」に対し任意のタグ名称を設定しておきました。

ここでは「新しいセキュリティグループを設定する」にチェックを入れ任意のグループ名を記入します。また「0.0.0.0/0」だと世界中からアクセス出来てしまうので、自分のIPからしかアクセス出来ない様に設定する方が安全です。ただ後述のssh秘密キーがあるので、そのままでも大丈夫だと思います。

次の確認画面で問題が無ければ「起動」ボタンを押します。するとキーの生成画面になるので「キーペア名」を入力し「キーペアのダウンロード」を実行します。なお、このダウンロードしたキーはsshログイン時に使用する秘密鍵で重要です。しかも後からキーを再発行する事は不可能です。ですので大事に保管しておいてください。最後に「インスタンスの作成」ボタンを押します。

以上で無事インスタンスが作成されました。ステータスが「実行中」になるのを確認します。また該当インスタンスの「チェックボックス」を選択し、ssh接続時に使用する「パブリックIPv4アドレス」をメモっておきます。

SSHで接続する

若い人はPuTTYやらRloginを使う人が多いですが、私はオジサンなんで馴染みのTeraTermでログインしました。まずは上記パブリックIPでssh接続します。

セキュリティ警告ダイアログが表示されますが、続行を押します。

ユーザ名に「ec2-user」と入力し、先にダウンロードした秘密鍵ファイルを指定してログインします。

ログインできました。

Apacheのインストール

まずEC2インスタンスのライブラリをアップデートします。

$ sudo yum update -y

httpdをインストールします。

$ sudo yum -y install httpd

サービスを起動します。

$ sudo systemctl start httpd.service

起動後、ステータス確認をします。

$ sudo systemctl status httpd.service
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2021-02-07 07:34:25 UTC; 16s ago
     Docs: man:httpd.service(8)
~省略~

常駐させる為、デーモンに登録します。

$ sudo systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

デーモンに登録されたか確認します。

$ sudo systemctl is-enabled httpd.service
enabled

なお、これでapacheはインストールできましたが、まだブラウザでアクセスする事はできません。次にファイアウォールを設定していきます。

ファイアウォールの設定

EC2のダッシュボードに戻り、該当インスタンスの「セキュリティ」タブにある「セキュリティグループ」を選択します。

インバウンドルールを編集します。

「ルールを追加」からタイプ「HTTP」を選択し、ソースは「任意の場所(※どのIPからでもアクセス可という事)」を選択し、「ルールの保存」を押します。

ブラウザで先のパブリックIPにアクセスしてみます。

無事、apacheのテストページが表示されました。

Elastic IPアドレス(固定IP)

これだけで開発環境としては十分ですが、念のため、本番環境構築時に必要となるパブリックIPの固定方法についてElastic IPを利用する方法を記載します。
(注意:なお関連付けられた1つ目のインスタンスが起動中であれば無料ですが、インスタンスが停止中や関連付けされていな場合、2つ目のElasticIPを利用するなどの場合は課金されてしまいます。)

まずEC2ダッシュボードの左ペインから「Elastic IP」を選択し、「Elastic IPの割り当て」ボタンを押します。

「AmazonのIPv4アドレスプール」を選択し「割り当て」ボタンを押します。

これでElastic IPが作成されましたが、まだインスタンスと関連付けられていません(つまり課金されてしまいます)。なので必ず忘れずに「アクション」から「Elastic IPの関連付け」を選択してください。

下図の赤枠を選択していき、先ほど作成したインスタンスと関連づけます。最後に「関連付ける」ボタンを押してください。

これで関連付けまで完了しました。

パブリックIPの固定方法は以上です。

(重要)Elastic IPアドレスの解放

私の場合は開発環境が欲しいだけなので、誤操作でインスタンスが停止したり関連付けが外れて課金されたら嫌なので、Elastic IPアドレスを解放する事にしました。

まずは関連付けを解除します。

次にElastic IPを解放します。

(重要)インスタンスの停止

また使わないときは料金が発生しない様、インスタンスも停止しておきます。

以上、自分用の備忘録( ..)φメモメモでした。

Print Friendly, PDF & Email