EC2で簡単Linuxサーバー構築〜パブリッククラウドを活用したLinux学習環境構築2022年2月16日SHAREツイートシェアはてブLINEPocketLPI-Japanの学習環境構築ガイドに様々なLinuxサーバー構築方法が掲載されていますが、パブリッククラウドサービスを用いた学習環境構築方法については紹介こそあれ、具体的な解説が無いのでAWSサービスを使ってLinux学習環境を構築する方法をまとめてみました。LinuCを取得するなら、実機、仮想、クラウド、可能な限り試してみることをオススメします。技術解説セミナーで紹介した内容を一部内容を変更追加し、再構成したものです。LPI-Japanセミナー動画を参考にしながら実際に手を動かしてみることでより学習効果が期待できるはずです。参考:EC2インスタンスの料金AWSのチュートリアルコンテンツAWS関連でおすすめの書籍AWSの利用方法Amazonが公式にアカウント作成ページを用意しており、5つのステップで簡単にアカウントを作成できます。マネジメントコンソールにお進みください」ボタンをクリックするとAWSの利用を開始できます。5.では無料枠の利用でも有償のサポートを選択すると課金がスタートするので注意してください。目次へ戻るIAMユーザーを作成してAWSにサインインセキュリティの観点からも、登録ユーザーとは別のユーザーを作成し、そちらからサインインするようにしましょう。Management)ユーザーを作成できます。IAMユーザーはマネジメントコンソールで作成できます。https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_users_sign-in.html今回は一例として「linuxstudy」ユーザーを新規に作成します。ユーザーには様々な権限を付与できますが、今回はあくまでテスト用ということで、契約関連以外の強い権限を持つ「AdministratorAccess」を付与します。Study作成したIAMユーザーでAWSにサインインしなおします。使用が推奨されています。rootユーザーだけでなく、IAMユーザーにも設定するようにしましょう。EC2(以下EC2)を利用します。Cloudの略称で、スケーラブルなコンピューティング環境を提供します。ハードウェアに事前投資する必要がなくなり、アプリケーションをより速く開発およびデプロイできます。必要に応じて仮想サーバーの起動、セキュリティおよびネットワーキングの構成、ストレージの管理ができます。要件変更や需要増に応じてスケールアップまたはスケールダウンできるため、トラフィック予測の必要性を軽減できます。インフラのみの提供になるアンマネージドサービス(IaaS)です。EC2の機能EC2を正しく利用するためには以下の機能の内容について把握しておく必要があります。学習用のサーバー構築であれば、特に細かいことを気にする必要はありません。雛形となるAMIとインスタンスタイプの選定だけで驚くほど簡単にLinuxサーバーの構築が可能です。EC2サービスを選択しておきます。選択するリージョンによって価格が変わりますが、無料利用枠がある場合は速いレスポンスが期待できる日本国内の東京または大阪を選択しておくと良いと思います。Study、タイプ:SSH(22)、HTTP(80)構成図にすると以下のようになります。複雑そうに見えますが、東京リージョンの任意のAZにEC2のインスタンスを起動して、そのインスタンスに公開鍵暗号認証を使いSSH接続して操作する流れです。EC2インスタンスを起動するまでのステップは以下の通り。2を選択しますが、Debian系のAMIも多数用意されています。無料利用枠があるうちは色々試してみることをお勧めします。ステップ2:インスタンスのハードウェア構成を選択インスタンスタイプですが、学習用途であれば無料利用期間内の対象となっているt2.microで十分です。ステップ3:インスタンスの詳細設定できるだけ手間を省いて学習環境を構築したいので、ネットワークとストレージはデフォルトのものを利用します。今回は学習環境に可用性を持たせるわけではないので、サブネットは優先順位なしまたは自分の好きなAZを指定します。自動割り当てパブリックIPは有効になっていればOKです。そのほかは設定の必要はありません。ステップ4:ストレージの追加ストレージは表示されている内容そのままでOKです。無料利用枠がなくなった場合、費用を抑えたいならボリュームタイプはgp3にしましょう。ステップ5:タグの追加タグは特に設定する必要はありませんが、学習環境であることがわかる内容にしておくと良いでしょう。Studyにしています。ステップ6:セキュリティグループの設定セキュリティグループは、デフォルトでSSHだけが有効になっていますので、学習したい内容に合わせて設定します。今回はテストでWebアプリケーションを導入するのでHTTPを有効にしています。確認と作成ボタンでここまで設定した内容が確認できます。内容に問題がなければ起動ボタンをクリックします。最後にキーペアを作成してインスタンスを起動ステップ4で作成するキーペアは任意の名前で問題ありませんが、「aws-lstudy-key」のような用途がわかるような名前にすると他との区別がつきやすいかもしれません。ダウンロードできるタイミングが1回だけなので注意しましょう。ダウンロードしたキーファイルは認証に必要な秘密鍵なので大事に保管してください。キーペアがダウンロードできたらインスタンスの作成ボタンをクリックします。インスタンス作成後、ダッシュボードでインスタンスの状態が実行中でステータスチェックが終了していることが確認できればインスタンスへの接続が可能です。目次へ戻るEC2インスタンスにSSH接続するEC2インスタンスへの接続手段はいくつかありますが、今回はSSHクライアントで接続します。TermやPowerShellなどを利用します。EC2のインスタンス概要の「接続」ボタンをクリックして、SSHクライアントタブに切り替えましょう。ここで記載されている手順でSSH接続が可能です。接続の前にchmodコマンドでダウンロード済みのプライベートキーファイルのパーミッションを変更しておきます。Windowsの場合は、キーファイルのプロパティにて所有者の読み込み権限のみ有効にしてください。aws-lstudy-key.pemパーミッション変更後、ec2-userユーザー名義でインスタンスにssh接続します。Linuxの一般ユーザーアカウントはec2userではなくハイフン付きの「ec2-user」です。Linux以外のインスタンスの場合はログイン用ユーザーアカウントが異なるので注意しましょう。Debianの場合は「admin」、Ubuntuの場合は「ubuntu」になります。初回はホスト認証のセキュリティ警告が出るのでyesを選択してknown_hostsに登録。AMIの文字が出て、ターミナルのユーザーがec2-userに変わればログイン成功です。2のシステム情報などを確認しましょう。n/aEC2インスタンスに対してシステムアップデート、ソフトウェアのインストールや設定を行うログイン後、初めにシステムのアップデートを実施してシステムを最新にします。root権限が必要なので、sudoを頭につける。面倒な場合は一時的にrootユーザーに切り替えます。完了しました!以上まででEC2上にLinuxサーバーの構築が完了したことになります。あとは学習内容に応じて各種サーバーソフトウェアなどをインストール、実行、動作検証などを行えます。-DFOREGROUND(以下略)Webサーバーの動作確認curlコマンドでLocalhostを指定し、Apacheのテストページが取得できるか確認します。/>(以下略)また、ローカルマシンからWebブラウザでパブリックDNSまたはIPアドレスを指定してhttp接続します。ブラウザにApacheのTestページが表示されればOKです。https接続を有効にしたい場合https接続の場合は別途設定が必要になります。AWSにチュートリアルが用意されているので試してみたい人はそちらを参照しながら実装してみましょう。dockerだけでインストール可能です。0:1.0.0-2.amzn2完了しました!インストール後は、systemctlコマンドでDockerを実行し動作状態を確認した上で、サンプルコンテナを実行してみましょう。dockerコマンドを実行してdockerグループへec2-userユーザーを登録します。コマンド実行後は、Dockerを再起動した上で、任意のユーザーでログインし直します。定番のhello-worldコンテナを実行。https://docs.docker.com/get-started/hello-worldコンテナが正しく実行された場合に表示される上記メッセージに含まれるubuntuコンテナのコマンドを実行し、コンテナのOS情報を取得した例。~]#DockerでWebサーバーを動かすコンテナ版のApacheを実装します。2インスタンスに直接インストールしたApacheと競合しないポート(8080番)を指定してバックグラウンド起動しています。httpd:latestfb0fa4607680c90166c161d265512e0566899082d314c3b7d14778a4fae61ac8この状態でWebブラウザでhttp://パブリックURL:8080にアクセスしても繋がらないので、EC2のセキュリティグループ設定でインバウンドルールにカスタムTCPポート8080をルールに追加して再度ブラウザで確認しましょう。worksという文字が表示されれば動作確認はOKです。セキュリティ関連のログを確認パブリッククラウドでサーバーを構築すると、まず間違いなく不正アクセスが行われます。セキュリティ的な観点からもセキュリティ関連のログを確認してそうした痕跡があるかどうか確認する癖をつけましょう。38548不正アクセスがあまりにも頻繁に行われるようであれば、学習内容に応じてポートを開け閉めする、またポート番号を変更する、fail2banなどの不正アクセス防止ソフトを導入するなど、様々なセキュリティ対策の学びのきっかけにしましょう。不要になった環境はクリーンナップして削除しましょう。EC2ダッシュボードからインスタンスを指定して「終了」を選択します。停止ではなく終了することでインスタンスが削除できコストが発生しなくなります。利用できるオプションを選択すると一切費用がかかりません。AWS無料利用枠外でインスタンスを起動した場合は、インスタンスのステータスが休止または終了に変わるとインスタンスの課金が停止します。後のためにインスタンスを維持したいが料金を発生させたくない場合は、インスタンスを停止して後で再び開始できます。停止の場合はEC2の課金は止まりますが同時に作成されたEBSは課金対象になるので注意してください。IPやRoute53などAWSのチュートリアルコンテンツhttps://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-tutorials.htmlを参考にして、色々と試してみましょう。(17)エスパ水澤(LinuCエバンジェリスト)日経新聞やソニー関連会社、商社などへの転職を重ねたのち起業。10数年にわたり情報まとめサイトの運営に携わる。キュレーションサイト運営会社、TSUTAYA関連企業への転籍を経てフリーランスに。2018年、LinuC資格取得を機にエンジニア育成に関わる事を決意。2020年、コロナ禍の中、エンジニアスクール講師などを務めつつリナスク立ち上げ。