🌐 はじめてのAWS EC2でWebサーバーを立ててみよう！

# AWS EC2初心者入門ガイド

AWS（Amazon Web Services）のEC2（Elastic Compute Cloud）は、クラウド上で仮想サーバーを簡単に作成・運用できるサービスです。この記事では、AWSを初めて使う方でも理解できるように、EC2インスタンスの作成から設定、接続までの手順を解説します。

## AWSのメリットとデメリット（専用ホスティングサーバーとの比較）

### メリット
- **柔軟なスケーリング**: 必要に応じてリソースを増減できる
- **従量課金制**: 使用した分だけ支払う（初期投資が少ない）
- **様々なインスタンスタイプ**: 用途に合わせたマシンスペックを選べる
- **グローバル展開**: 世界中のリージョンにデプロイ可能
- **自動化機能**: APIを使った自動化が容易
- **高可用性**: 複数のアベイラビリティゾーンを活用できる

### デメリット
- **管理の複雑さ**: 初心者には設定が複雑に感じることがある
- **コスト管理**: 適切に管理しないと予想外の請求が発生する可能性がある
- **学習コスト**: AWSの概念や用語を理解する必要がある

### 専用ホスティングサーバーとの比較
| 項目 | AWS EC2 | 専用ホスティングサーバー |
|------|---------|----------------------|
| 初期コスト | 低い（初期投資不要） | 高い（サーバー購入費用） |
| ランニングコスト | 使用量に応じて変動 | 固定費が多い |
| スケーラビリティ | 柔軟に拡張可能 | 物理的な制約あり |
| 管理の手間 | 設定は複雑だが自動化可能 | 物理的な保守が必要 |
| 障害対応 | AWSが対応（サービスレベルによる） | 自社で対応必要 |
| カスタマイズ性 | OS選択は自由だが一部制約あり | 完全なカスタマイズが可能 |

## VPCとEC2の関係とメリットデメリット

### VPCとは
VPC（Virtual Private Cloud）は、AWSクラウド内に作成できる仮想ネットワークです。EC2インスタンスはこのVPC内に配置されます。

### VPCとEC2の関係
- VPCはネットワーク環境を提供
- EC2はVPC内で動作する仮想サーバー
- 1つのVPCに複数のEC2インスタンスを配置可能
- セキュリティグループでEC2へのアクセス制御を実施

### メリット
- **ネットワーク分離**: プライベートな環境を構築できる
- **セキュリティ強化**: アクセス制御が細かく設定可能
- **柔軟なネットワーク設計**: サブネット、ルートテーブルなどを自由に設定

### デメリット
- **設定の複雑さ**: ネットワークの知識が必要
- **管理コスト**: 適切な設計・管理が求められる

### 専用ホスティングサーバーとの比較
専用サーバーでは物理的なネットワーク分離が必要ですが、VPCでは論理的な分離が容易に実現できます。

## EC2インスタンス作成手順

### ステップ1: EC2ダッシュボードへアクセス
AWSマネジメントコンソールにログインし、「EC2」を選択します。

![EC2ダッシュボード](画像1の説明)

### ステップ2: インスタンス起動
「インスタンスを起動」ボタンをクリックします。

### ステップ3: OSイメージ（AMI）の選択
今回はUbuntuを選択します。「クイックスタート」タブから「Ubuntu」を選びます。

![OSイメージ選択](画像2の説明)

### ステップ4: キーペア（ログイン）設定
今回は簡易的に「キーペアなしで続行」を選択します。
※本番環境では必ずキーペアを作成して使用してください。

![キーペア設定](画像3の説明)

### ステップ5: ネットワーク設定
セキュリティグループの設定を行います。今回は以下を許可します：
- SSHトラフィック（リモート接続用）
- HTTPトラフィック（Webサーバー用）

![ネットワーク設定](画像4の説明)

### ステップ6: ストレージ設定
デフォルトの8GBのままで構いません。

### ステップ7: 名前とタグ
インスタンスの名前を入力します（例：My Web Server）。

![インスタンス名設定](画像5の説明)

### ステップ8: インスタンスを起動
「インスタンスを起動」ボタンをクリックします。

### ステップ9: インスタンスへの接続
インスタンスが起動したら、「インスタンスに接続」ボタンをクリックします。

![インスタンス接続](画像6の説明)

EC2 Instance Connectを使用して接続します。ユーザー名は「ubuntu」を入力します。

![EC2 Instance Connect](画像7の説明)

## EC2設定コマンド

インスタンスに接続したら、以下のコマンドを実行してApache Webサーバーをインストールし、簡単なWebページを作成します：

```bash
# システムの更新
sudo apt update

# Apache2のインストール
sudo apt install -y apache2

# デフォルトのWebページディレクトリに移動
cd /var/www/html

# ファイル一覧を確認
ls

# デフォルトのindex.htmlを削除
sudo rm index.html

# 新しいindex.htmlを作成
sudo touch index.html

# ファイルの権限を変更（実際の運用ではより制限的な権限設定を推奨）
sudo chmod 777 index.html

# テストコンテンツを追加
echo "This is a test line." >> index.html

# Apache2サービスの再起動（変更を反映）
sudo systemctl restart apache2
```

これでWebブラウザからEC2インスタンスのパブリックIPアドレスにアクセスすると、作成したWebページが表示されます。

## FTP接続の設定（WinSCPを使用）

EC2インスタンスにファイルを転送するために、Windows 11からWinSCPを使った接続方法を説明します。

### 準備
1. [WinSCP](https://winscp.net/eng/download.php)をダウンロードしてインストール

### EC2側の設定
SSHがすでに有効になっているので、追加設定は不要です。必要に応じてFTPサーバーをインストールする場合：

```bash
# vsftpdのインストール
sudo apt install -y vsftpd

# 設定ファイルのバックアップ
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

# 設定ファイルの編集
sudo nano /etc/vsftpd.conf
```

以下の設定を追加または変更（nanoエディタの場合、Ctrl+O→Enterで保存、Ctrl+Xで終了）：
```
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=40100
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
```

ユーザーリストの作成：
```bash
# ftpユーザーの作成
sudo adduser ftpuser

# ユーザーリストにftpuserを追加
echo "ftpuser" | sudo tee -a /etc/vsftpd.userlist

# サービスの再起動
sudo systemctl restart vsftpd
```

### WinSCPでの接続方法
1. WinSCPを起動
2. 「新しいサイト」を選択
3. 以下の情報を入力：
   - ファイルプロトコル: SFTP（SSH接続の場合）またはFTP
   - ホスト名: EC2インスタンスのパブリックIPアドレス
   - ポート番号: 22（SSHの場合）または21（FTPの場合）
   - ユーザー名: ubuntu（SSHの場合）またはftpuser（FTPの場合）
   - パスワード: 設定したパスワード
4. 「ログイン」をクリック

これで、Windows 11からEC2インスタンスへのファイル転送が可能になります。

## まとめ

AWSのEC2を使うことで、柔軟なクラウド環境でWebサーバーを簡単に構築できます。今回は入門者向けに最小限の設定で構築しましたが、実際の運用環境では適切なセキュリティ設定が必要です。特に以下の点に注意してください：

- 本番環境では必ずSSHキーペアを使用する
- セキュリティグループは必要最小限のポートのみ開放する
- 定期的なセキュリティアップデートを実施する
- IAMユーザーと権限の適切な管理

この記事を足がかりに、AWSの様々なサービスを活用してクラウド環境を構築してみてください。

## 参考資料
- [AWS公式ドキュメント - EC2入門](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/EC2_GetStarted.html)
- [Ubuntu公式ドキュメント - Apache2設定](https://ubuntu.com/tutorials/install-and-configure-apache)