0
0

AWS EC2の作成方法(2023年)

Last updated at Posted at 2023-12-10

EC2インスタンスを作成する方法を説明します。

◆ 提案する例では、Amazon Linux 2を起動します。Windows、Red Hat、Ubuntuなどの他の仮想マシンで同じことをする方法を知りたい場合は、コメントを残してください。

◆ 提案する例では、次のケースを取り上げます:

Python、C#などの他の言語で同じことをする方法を見せてほしい場合は、コメントを残してください。

同様に、Laravel、CakePHP、ECCube、WordPress、Djangoなどをインストールする方法を見せてほしい場合は、コメントを残してください。

このチュートリアルで説明する方法は初心者向けです。実際には通常、これを手動で行うのではなく、AWS CLIAWS CDK、またはAmazon CloudFormationを使用してインスタンスの展開プロセスを自動化します(将来のチュートリアルでより高度な方法も説明します)。

EC2インスタンスを作成

このステップは取り上げるすべてのケースに共通しています。

AWSコンソールにアクセスしてください。

image37.png

ページの上部にある、「北バージニア」をクリックしてください。

image31.png

アジアパシフィック(東京)」を選択してください。

image48.png

確認してください。選択されている地域が「東京」であることを確認してください。

image40.png

ページの上部に移動し、「検索」と書かれた検索フィールドにアクセスしてください。

image49.png

この検索フィールドに「EC2」と入力してください。
ドロップダウンリストが表示されます:

image29.png

EC2」をクリックしてください。

image21.png

EC2ダッシュボードが表示されます。

image8.png

この画面では、EC2インスタンスを作成したり、オートスケーリングやロードバランサーを導入したりできますが、
このチュートリアルでは、EC2インスタンスの作成のみを行います。

EC2インスタンスを作成するには、「インスタンスを起動」をクリックしてください。

image46.png

EC2インスタンスを作成する画面に移動します:

image27.png

もう一度「東京」リージョンにいるか確認してください。

image35.png

今から、4つのEC2インスタンスを作成します。最初のEC2インスタンスは単純なApacheサーバーを起動します。2番目のEC2インスタンスはApacheとPHPを起動します。3番目のEC2インスタンスはNodeJSサーバーを起動します。最後のEC2インスタンスはExpressJSサーバーを起動します。

では、始めましょう!

名前とタグ」セクションに移動してください。

image4.png

名前」の欄に「サーバー」と書いてください。

image43.png

インスタンス数」のフィールドに4と入力してください。

image39.png

Application and OS Images (Amazon Machine Image)」セクションに移動してください。

image50.png

指定したOSが「Amazon Linux」であることを確認してください。
これはデフォルトの値です。

image24.png

インスタンスタイプ」のセクションで、使用したいEC2インスタンスのタイプを選択してください。

image6.png

デフォルトのタイプであるt2.microを使用します。テストや開発段階にある場合、t2.microを使用することをお勧めします。それはほとんど費用がかからないためです。

image33.png

キーペア(ログイン)」 セクションに移動してください。

image41.png

キーペアを作成するには、「新しいキーペアの作成」をクリックしてください。

image47.png

モーダルが開くはずです。

image25.png

キーペア名」のフィールドに、キーペアの名前を入力してください。

image19.png

このチュートリアルでは、キーペアを「MyDemoKey」と名前を付けます。

image23.png

  • LinuxまたはMacを使用している場合、「キーペアのタイプ」を変更せずに「.pem」を使用してください。
  • Windowsを使用している場合は、「キーペアのタイプ」を変更し、「.ppk」を使用してください。

私の場合、私はMacを使用しているので、「.pem」を保持します。

image34.png

次に、「キーペアを作成」をクリックしてください。

image16.png

その後、キーペアを正確にハードディスクに保存し、キーペアを失わないように注意してください。

キーペアが正しく選択されているか確認してください。

image9.png

ネットワーク設定」セクションに移動してください。

image51.png

AWSは、セキュリティグループを作成すると書いています。

image18.png

私の場合、セキュリティグループの名前はlaunch-wizard-4となります。ただし、注意してください。あなたの場合、異なる名前になる可能性があります。

次に、「インターネットからの HTTP トラフィックを許可」にチェックを入れて、インスタンスがインターネットにアクセスできるようにします。

image26.png

その後、「インスタンスを起動」ボタンをクリックしてください。

image45.png

このページにリダイレクトされます:

image38.png

待って、ローディング画面が完了するのを待ってから、「すべてのインスタンスを表示」ボタンを押してください。

image7.png

EC2ダッシュボードの画面にリダイレクトされます。

image10.png

ここで、4つのEC2インスタンスが表示されるはずです。

image2.png

お待ちください。インスタンスの状態が緑色になるまでお待ちください。つまり、「実行中」と表示されることです。

image1.png

もし時間がかかる場合は、リストの上部にあるボタンをクリックしてリストを更新してください。

image14.png

以下は、今後はインスタンスの名前を変更します。

マウスのカーソルを1番目のインスタンスの名前に移動させると、小さなペンのアイコンが表示されるはずです。

image3.png

ペンアイコンをクリックしてください。

image22.png

表示されるテキストフィールドに「Apacheのみ」と入力してください。

image28.png

その後、確定するためにEnterキーを押してください。

image42.png

おめでとうございます。あなたは初めてのインスタンスをリネームしました。

image5.png

同じことを3つの他のインスタンスでも行ってください。

それぞれ次のように名前を変更してください:

  • Apache+PHP
  • NodeJSのみ
  • ExpressJS

以下のように:

image36.png

さきほど4つのEC2インスタンスを作成しましたので、サーバーの設定を開始できます。

Apacheのみ

最初のインスタンスを設定していきます。これは、PHPを含まないApacheサーバーだけを備えたものです。

Apacheのみ」という名前のインスタンスだけを選択してください。

image20.png

次に、「接続」メニューをクリックしてください。

image32.png

その後、この画面に移動するはずです:

image44.png

その後、「接続」ボタンをクリックしてください。

image17.png

新しいウィンドウが開くはずです:

image13.png

以下のコマンドを入力してください:

sudo su
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo "Apache Server only" > /var/www/html/index.html

EC2インスタンスのリストページに戻り、「Apacheのみ」という名前のインスタンスだけを選択してください。

image20.png

その後、「ネットワーキング」タブを選択してください。

image30.png

その後、「パブリック IPv4 アドレス」を検索してください。

image11.png

私の場合、パブリックIPv4アドレスは52.195.214.151です。

次に、このIPをコピーしてブラウザに貼り付けてください。すべてがうまくいくと、このページが表示されるはずです:

Screenshot 2023-12-08 at 17.34.07.png

Apache+PHP

Apache+PHP」という名前のインスタンスだけを選択してください。

Screenshot 2023-12-08 at 17.36.52__PHP_01.png

次に、「接続」メニューをクリックしてください。

Screenshot 2023-12-08 at 17.36.52__PHP_01 copy.png

その後、この画面に移動するはずです:

Screenshot 2023-12-08 at 17.37.05__PHP_02.png

その後、「接続」ボタンをクリックしてください。

Screenshot 2023-12-08 at 17.37.05__PHP_02 copy.png

新しいウィンドウが開くはずです:

Screenshot 2023-12-08 at 17.46.41__PHP_03.png

以下のコマンドを入力してください:

sudo su
yum update -y
yum install -y httpd
yum install -y php
systemctl start httpd
systemctl enable httpd
echo "<?php phpinfo(); " > /var/www/html/index.php

EC2インスタンスのリストページに戻り、「Apache+PHP」という名前のインスタンスだけを選択してください。

Screenshot 2023-12-08 at 17.36.52__PHP_01.png

その後、「ネットワーキング」タブを選択してください。

Screenshot 2023-12-08 at 17.40.50__PHP_04.png

その後、「パブリック IPv4 アドレス」を検索してください。

Screenshot 2023-12-08 at 17.40.58__PHP_05.png

私の場合、パブリックIPv4アドレスは54.178.103.42です。

次に、このIPをコピーしてブラウザに貼り付けてください。すべてがうまくいくと、このページが表示されるはずです:

Screenshot 2023-12-08 at 17.43.01__PHP_06.png

NodeJSのみ

NodeJSのみ」という名前のインスタンスだけを選択してください。

Screenshot 2023-12-10 at 22.29.15__NODE_01.png

次に、「接続」メニューをクリックしてください。

Screenshot 2023-12-10 at 22.29.15__NODE_01 copy.png

その後、この画面に移動するはずです:

Screenshot 2023-12-10 at 22.29.34__NODE_02.png

その後、「接続」ボタンをクリックしてください。

Screenshot 2023-12-10 at 22.29.34__NODE_02 copy.png

新しいウィンドウが開くはずです:

Screenshot 2023-12-10 at 22.37.12__NODE_03.png

以下のコマンドを入力してください:

sudo su
yum update -y
yum install -y gcc-c++ make
yum install -y nodejs 
npm install pm2@latest -g
cd /home/ec2-user/
touch index.js
vim index.js

index.jsファイルに次のコードを追加してください:

const http = require('http');
 
const server = http.createServer((req, res) => {
   res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
   res.write('<h1>Hello World</h1>');
   res.end();
});
 
const port = 80;
server.listen(port);

index.js ファイルを保存し、次のコマンドを実行してください。

pm2 startup
pm2 start /home/ec2-user/index.js --name=MY_NODE_SERVER

EC2インスタンスのリストページに戻り、「NodeJSのみ」という名前のインスタンスだけを選択してください。

Screenshot 2023-12-10 at 22.29.15__NODE_01.png

その後、「ネットワーキング」タブを選択してください。

Screenshot 2023-12-10 at 23.24.58.png

その後、「パブリック IPv4 アドレス」を検索してください。

Screenshot 2023-12-10 at 22.37.55__NODE_05.png

私の場合、パブリックIPv4アドレスは18.177.140.171です。

次に、このIPをコピーしてブラウザに貼り付けてください。すべてがうまくいくと、このページが表示されるはずです:

Screenshot 2023-12-10 at 22.39.45__NODE_6.png

ExpressJS

ExpressJSのみ」という名前のインスタンスだけを選択してください。

Screenshot 2023-12-10 at 22.40.08__EXPRESS_01.png

次に、「接続」メニューをクリックしてください。

Screenshot 2023-12-10 at 22.40.08__EXPRESS_02.png

その後、この画面に移動するはずです:

Screenshot 2023-12-10 at 22.40.17__EXPRESS_03.png

その後、「接続」ボタンをクリックしてください。

Screenshot 2023-12-10 at 22.40.17__EXPRESS_04.png

新しいウィンドウが開くはずです:

Screenshot 2023-12-10 at 22.40.28__EXPRESS_05.png

以下のコマンドを入力してください:

yum update -y
yum install -y gcc-c++ make
yum install -y nodejs 
npm install pm2@latest -g
cd /home/ec2-user/
npm init -y
npm install express
touch index.js
vim index.js

index.jsファイルに次のコードを追加してください:

const express = require('express');
const http = require('http');
 
const app = express();
const router = express.Router();
 
router.get('/', (req, res) => {
   res.status(200).send('Hello World 2!');
});
 
app.use('/', router);

const server = http.createServer(app);
server.listen(80);

index.js ファイルを保存し、次のコマンドを実行してください。

pm2 startup
pm2 start /home/ec2-user/index.js --name=MY_EXPRESS_SERVER

EC2インスタンスのリストページに戻り、「ExpressJSのみ」という名前のインスタンスだけを選択してください。

Screenshot 2023-12-10 at 22.40.08__EXPRESS_01.png

その後、「ネットワーキング」タブを選択してください。

Screenshot 2023-12-10 at 22.40.08__EXPRESS_06.png

その後、「パブリック IPv4 アドレス」を検索してください。

Screenshot 2023-12-10 at 22.45.35__EXPRESS_07.png

私の場合、パブリックIPv4アドレスは54.64.126.246です。

次に、このIPをコピーしてブラウザに貼り付けてください。すべてがうまくいくと、このページが表示されるはずです:

Screenshot 2023-12-10 at 22.46.11_EXPRESS_08.png

何でその方法は初心者向けですか?

4つのWebサーバーをデプロイしました。1つはApacheのみが含まれているもので、もう1つはApacheとPHPが含まれているもの、もう1つはNodeJSのみが含まれているもの、最後の1つはExpressJSが含まれているものです。

おそらく気づいたかもしれませんが、ほぼ常に同じことをしています。

タスクが繰り返される場合、それらを自動化する必要があります。

私は日本人ではないので、日本のエンジニアリングスクールで何を教えているのかはわかりませんが、フランスでは良いエンジニアはできるだけ多くのことを自動化するエンジニアです。

なぜ仕事を自動化するのか?

  • 1つ目の理由は、怠惰で同じことを何度も繰り返したくないからです。

  • タスクを自動化すれば、手動で行うよりもはるかに速く処理できます。

  • 自動化されたタスクを実行することで、エラーを防ぐことができます。実際、うっかり特定のオプションを選択し忘れる可能性があります。

  • 自動化されたタスクは通常YAMLファイルなどのファイルに書かれることがあります。これらのファイルはGitHubに保存してチームと共有できます。これにより、デプロイメントをバージョン管理したり、デプロイメントを更新したりすることができます。

  • 自動化されたタスクは、行動を追跡可能にすることができます。つまり、問題が発生した場合、自動化されたスクリプトをチェックして更新するだけで済みます。

多くの理由が存在しますが、ここではすべてを挙げるつもりはありません。

何を自動化できますか?

おそらくほとんどすべてを自動化できるとお考えいただけるでしょう。以下にいくつかの例を挙げます:

  • WordPress、Laravel、CakePHP、ECCubeなどのウェブサイトの自動デプロイメント。

  • ホワイトラベル製品の自動デプロイメント。

  • コンセプトの検証のためのテストサーバーの自動デプロイメント。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0