AWS

【初期設定編】AWSでEC2(AmazonLinux2)のWebサーバ環境構築をする

久し振りに EC2 を構築しようと思ったら、AmazonLinux の提供が 2020 年 12 月で終了していた。

2023 年まで延びたのはサポートのみで、AMI の提供がされなくなるのは把握してなかった。

終了期日の延長
Amazon Linux AMI は 2020 年 12 月 31 日まで延長され、引き続きセキュリティアップデートおよびパッケージの更新版を必要に応じて提供することになりました。

メンテナンスサポート
2020 年 12 月 31 日を過ぎると Amazon Linux AMI には新たにメンテナンスサポート期間が設定されます (2023 年 6 月 30 日まで継続)。

そこで、初めて AmazonLinux2 で EC2 を構築したので、インスタンスの起動と OS の変更点を紹介していきます。

EC2インスタンスの構築

冒頭でも書いた通り「AmazonLinux」の AMI 提供が終わってしまいました。

もう、「AmazonLinux」の構築手順はゴミになってしまって悲しい・・・。

AWSでWebサーバ用途にEC2(AmazonLinux)の環境を構築するAmazonLinux2 が正式リリースされて 1 ヶ月以上が経過しました。 次に新しく EC2 を作るなら乗り換えるのもアリかなと思...

よって、今回は「AmazonLinux2」を選択します。

AWSでEC2(AmazonLinux2)の環境を構築する

インスタンスタイプですが、試しに構築してみるだけであれば、無料枠の人は「t2.micro」、それ以外なら「t2.nano」で十分です。

AWSでEC2(AmazonLinux2)の環境を構築する

ALB(ELB)を使わない構成であれば、インスタンスの詳細設定はデフォルトのままで構いません。
(パブリック IP は最終的に ElasticIP で固定しますが)

AWSでEC2(AmazonLinux2)の環境を構築する

ストレージですが、無料枠の人は上限の 30GB にしておくと良さそうです。

AWSでEC2(AmazonLinux2)の環境を構築する

タグは適用に自分がわかりやすいものを。

AWSでEC2(AmazonLinux2)の環境を構築する

セキュリティグループは賛否あると思いますが、とりあえず Let’s Encrypt 用に 80 番は解放して、最終的に SSL で 443 を使う運用で。

22 番は最初に SSH で接続するために使うけど、最終的には 22 番は閉じて 10022 など他のポート番号で運用したいところですね。

今回は外部から直接 SSH で EC2 に接続すると仮定しますが、実運用では VPN や踏み台サーバ経由が候補として挙がってくるでしょう。

AWSでEC2(AmazonLinux2)の環境を構築する

当然、SSH は鍵認証になります。

AWSでEC2(AmazonLinux2)の環境を構築する

これでインスタンスの起動準備はできました。

最後に秘密鍵(pemファイル)をダウンロードする流れになります。

秘密鍵は漏らさないように管理しておきましょう。

SSHの設定変更

インスタンスが起動したら、EC2 に SSH で接続します。

初期設定は「ec2-user」、パスフレーズは「空」になっています。

root ユーザになって、sshd の設定を変更しましょう。

今回、AmazonLinux2 になったことで、これまでとサービスの管理コマンドが異なります。

service コマンドも残っていますが、systemctl をメインに使っていきましょう。
(CentOS6 から CentOS7 の流れと同様)

ちなみにサービスの一覧は以下のコマンドになります。
(chkconfig –list の方が楽だった)

sshd のサービスを再起動する場合はこんな感じ。最後の「.service」は省略可能です。

サービスを再起動したら、10022 番で接続できるか他のターミナルで試してみましょう。

成功したら、EC2 のセキュリティグループから 22 番を削除しておくといいですね。

また、「ec2-user」も使えなくしておくのがベストです。

AmazonLinuxで新しいユーザを作成してec2-userを削除するAmazonLinux ではデフォルトで ec2-user というユーザが作成されています。 これは AmazonLinux で EC...

タイムゾーンの設定

次にタイムゾーンの設定を UTC から JST に変更します。

こちらは AmazonLinux の時と同様です。

swapメモリ

インスタンスタイプが小さい場合は、swap メモリを用意しておきましょう。

こちらも AmazonLinux の時と同じです。

nginxのインストール

AmazonLinux2 で nginx をインストールする場合は、amazon-linux-extras という専用のパッケージ管理ツールを使う必要があります。

amazon-linux-extras を使ってインストールし、サービス起動と自動起動設定を有効にしておきましょう。

これで Web サーバとしての最低限の役割はできそうですね。

まとめ

AmazonLinux2 で EC2 の環境を構築する方法を紹介しました。

OS 違いによる設定やコマンドなどがありますが、これは慣れていくしかないでしょう。

amazon-linux-extras というパッケージ管理ツールが提供されたことで、yum との使い分けも問題になってきそうです。

個人的には、PHP5.6(Codeigniter2.x)など新しいバージョンが使えないアプリが手元にあるので、AmazonLinux2 でそのような環境を構築するのがリスクだと感じています。

この環境についての構築手順は別の機会に紹介したいと思いますが、早くアプリ側をどうにかしないといけないですね。

AWS の ECS や EKS など docker のコンテナサービスが主流となりつつあり、EC2 をガッツリ触る機会は減りましたが、たまには Web サーバの基本構成を見直しておきたいですね。