Linux×クラウドサーバー入門|AWS EC2でのLinuxインスタンス構築と運用ガイド

kento_morota 16分で読めます

「自社サーバーの管理コストを下げたい」「リモートワーク対応のサーバー環境が必要」「開発・検証環境を素早く用意したい」――こうした課題を解決する手段として、クラウドサーバーの活用は中小企業にとってもはや避けて通れない選択肢です。

中でもAWS(Amazon Web Services)は、世界最大のクラウドプラットフォームとして最も広く利用されています。本記事では、AWSの仮想サーバーサービスであるEC2(Elastic Compute Cloud)を使って、Linuxサーバーを構築・運用するための基礎知識と実践手順を解説します。

Linuxの基礎がまだ不安な方は、Linuxとは?初心者向け基礎解説を先にご確認ください。

なぜクラウドサーバーなのか?オンプレミスとの比較

クラウドサーバーとオンプレミス(自社設置型)サーバーには、それぞれメリットとデメリットがあります。自社の状況に合った選択をするために、まずは両者の特徴を整理しましょう。

クラウドサーバーのメリット

  • 初期コストが低い: ハードウェア購入が不要。使った分だけ課金される従量課金制
  • スケーラビリティ: アクセス増加時にサーバーの性能や台数を即座に増やせる
  • 高い可用性: 複数のデータセンター(AZ)にまたがる冗長構成が容易
  • 運用負担の軽減: ハードウェアの故障対応、電力管理、物理的なセキュリティをAWSが担当
  • グローバル展開: 世界各地のリージョンにサーバーを配置可能

クラウドサーバーのデメリットと注意点

  • ランニングコスト: 長期間の常時稼働では、オンプレミスより割高になるケースがある
  • 学習コスト: AWSの概念やサービス体系の理解が必要
  • データの所在: 社外のデータセンターにデータを置くことへのコンプライアンス上の考慮
  • ネットワーク依存: インターネット接続がなければサーバーにアクセスできない

中小企業にとっての最適解

多くの中小企業にとっては、クラウドとオンプレミスのハイブリッド構成が現実的です。開発・検証環境やWebサービスにはクラウドを、社内ファイルサーバーや機密データの保管にはオンプレミス(またはRaspberry Piなどの小型サーバー)を使い分けるアプローチが有効です。小型のオンプレミスサーバーについてはRaspberry Pi×Linuxサーバー構築ガイドをご覧ください。

AWS以外のクラウドサービスとの比較はRender・Railway・Vercel比較ガイドも参考になります。

AWS EC2の基本概念を理解する

EC2でLinuxサーバーを構築する前に、押さえておくべき基本概念を整理します。

主要な構成要素

  • インスタンス: 仮想サーバーそのもの。CPU、メモリ、ストレージの組み合わせでインスタンスタイプが決まる
  • AMI(Amazon Machine Image): OSや初期設定を含むテンプレート。Ubuntu、Amazon Linux、Rocky Linuxなどから選択
  • EBS(Elastic Block Store): インスタンスに接続するストレージ(仮想ディスク)
  • VPC(Virtual Private Cloud): 仮想ネットワーク。サブネット、ルーティング、セキュリティを制御
  • セキュリティグループ: インスタンスへのアクセスを制御するファイアウォールルール
  • キーペア: SSH接続に使用する公開鍵・秘密鍵のペア
  • Elastic IP: 固定のパブリックIPアドレス

インスタンスタイプの選び方

EC2のインスタンスタイプは用途別に分類されています。中小企業でよく使われるものを紹介します。

  • t3.micro / t3.small: 開発・検証環境、軽量なWebサーバー向け。バースト機能でコストを抑制
  • t3.medium / t3.large: 中規模のWebアプリケーション、小規模データベース向け
  • m6i.large〜: バランス型。安定したパフォーマンスが必要な本番環境向け
  • c6i.large〜: コンピューティング最適化。CPU負荷の高い処理向け
  • r6i.large〜: メモリ最適化。大規模データベースやキャッシュサーバー向け

初めての場合はt3.micro(AWS無料利用枠の対象)から始めて、負荷に応じてスケールアップするのがおすすめです。

EC2 Linuxインスタンスの構築手順

AWSマネジメントコンソールからEC2インスタンスを作成する手順を、ステップバイステップで解説します。

ステップ1: キーペアの作成

SSH接続に必要なキーペアを事前に作成します。

  1. EC2ダッシュボードの左メニューから「キーペア」を選択
  2. 「キーペアを作成」をクリック
  3. 名前を入力(例: my-server-key)
  4. キーペアのタイプ: RSA
  5. プライベートキーファイル形式: .pem(Linux/macOS)または .ppk(PuTTY)
  6. 作成してダウンロード(このファイルは再ダウンロードできないため厳重に保管
# ダウンロードした秘密鍵のパーミッションを設定
chmod 400 ~/Downloads/my-server-key.pem

# 安全な場所に移動
mv ~/Downloads/my-server-key.pem ~/.ssh/

ステップ2: インスタンスの起動

  1. EC2ダッシュボードから「インスタンスを起動」をクリック
  2. 名前: わかりやすいサーバー名を入力(例: web-server-01)
  3. AMI: Ubuntu Server 24.04 LTS(64-bit x86)を選択
  4. インスタンスタイプ: t3.micro(無料枠)または用途に合ったタイプ
  5. キーペア: 先ほど作成したキーペアを選択
  6. ネットワーク設定:
    • VPC: デフォルトVPC(または専用VPC)
    • サブネット: パブリックサブネット
    • パブリックIPの自動割り当て: 有効
  7. セキュリティグループ: 新規作成(後述の設定を推奨)
  8. ストレージ: 20GB以上のgp3(汎用SSD)
  9. 「インスタンスを起動」をクリック

ステップ3: セキュリティグループの設定

セキュリティグループは、インスタンスへのネットワークアクセスを制御します。最小限のポートのみ開放するのが原則です。

  • SSH(ポート22): 自社のIPアドレスのみ許可(0.0.0.0/0は避ける)
  • HTTP(ポート80): Webサーバーの場合は0.0.0.0/0で許可
  • HTTPS(ポート443): 同上
  • その他のポートは必要に応じて追加

ステップ4: SSH接続

# EC2インスタンスにSSH接続
ssh -i ~/.ssh/my-server-key.pem ubuntu@パブリックIPアドレス

# 接続後、まずシステムを更新
sudo apt update && sudo apt upgrade -y

# タイムゾーンの設定
sudo timedatectl set-timezone Asia/Tokyo

# ホスト名の設定
sudo hostnamectl set-hostname web-server-01

SSH接続の詳細についてはLinux SSH接続ガイドを参照してください。

EC2 Linuxサーバーの初期設定

インスタンスに接続できたら、本番環境として運用するための初期設定を行います。

ユーザー管理

デフォルトのubuntuユーザー以外に、作業用のユーザーを作成することが推奨されます。

# 管理者ユーザーの作成
sudo adduser admin-user
sudo usermod -aG sudo admin-user

# SSH鍵の設定
sudo mkdir -p /home/admin-user/.ssh
sudo cp ~/.ssh/authorized_keys /home/admin-user/.ssh/
sudo chown -R admin-user:admin-user /home/admin-user/.ssh
sudo chmod 700 /home/admin-user/.ssh
sudo chmod 600 /home/admin-user/.ssh/authorized_keys

ユーザー・グループ管理の詳細はLinuxユーザー・グループ管理を参照してください。

セキュリティの強化

# SSH設定の強化
sudo nano /etc/ssh/sshd_config

# 以下の設定を変更・追加
PermitRootLogin no
PasswordAuthentication no
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2

# 設定を反映
sudo systemctl restart sshd

# ufwファイアウォールの設定
sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable

# 自動セキュリティアップデート
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades

# fail2banの導入(ブルートフォース対策)
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

セキュリティ設定の詳細はLinuxセキュリティ強化ガイドLinuxファイアウォール設定ガイドで解説しています。

スワップの設定

t3.microなどメモリが少ないインスタンスでは、スワップ領域の設定が重要です。

# 2GBのスワップファイルを作成
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 永続化
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

# スワップの使用度を調整
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Webサーバーの構築例

EC2上でNginxを使ったWebサーバーを構築する実践例です。

Nginxのセットアップ

# Nginxのインストール
sudo apt install nginx -y

# 起動と自動起動の有効化
sudo systemctl start nginx
sudo systemctl enable nginx

# 動作確認
curl http://localhost

# ブラウザから確認
# http://パブリックIPアドレス にアクセス

Nginxの詳細な設定方法はNginx構築ガイドを参照してください。

SSL/TLS証明書の設定

独自ドメインを使用する場合は、Let's Encryptで無料のSSL証明書を取得できます。

# Certbotのインストール
sudo apt install certbot python3-certbot-nginx -y

# SSL証明書の取得と自動設定
sudo certbot --nginx -d example.com -d www.example.com

# 自動更新の確認
sudo certbot renew --dry-run

# 自動更新のタイマー確認
sudo systemctl status certbot.timer

Elastic IPの設定

EC2インスタンスを停止・起動するとパブリックIPアドレスが変わります。固定IPが必要な場合は、Elastic IPを割り当てます。

  1. EC2ダッシュボードの「Elastic IP」から「Elastic IPアドレスの割り当て」
  2. 割り当てたIPを選択し、「Elastic IPアドレスの関連付け」
  3. 対象のインスタンスを選択して関連付け

注意: Elastic IPはインスタンスに関連付けられていない場合に課金が発生します。不要になったら必ず解放してください。

コスト管理と最適化

クラウドサーバーの運用で最も注意すべきはコスト管理です。意図しない課金を防ぐための対策を解説します。

料金体系の理解

EC2の主な課金項目は以下の通りです。

  • インスタンス利用料: 起動時間に応じた従量課金(1秒単位)
  • EBSストレージ: 容量に応じた月額課金
  • データ転送: AWSから外部への送信データ量に応じた課金(受信は無料)
  • Elastic IP: 関連付けられていないElastic IPに対する課金

コスト削減のための具体策

# 開発・検証環境は使わない時間帯に停止するスクリプト
# stop-dev-instances.sh
#!/bin/bash
aws ec2 stop-instances --instance-ids i-1234567890abcdef0

# start-dev-instances.sh
#!/bin/bash
aws ec2 start-instances --instance-ids i-1234567890abcdef0
  • リザーブドインスタンス: 1年・3年の前払いで最大72%割引。安定稼働の本番サーバーに最適
  • Savings Plans: リザーブドインスタンスより柔軟な割引プラン
  • スポットインスタンス: 最大90%割引だが中断の可能性あり。バッチ処理やCI/CDに向く
  • インスタンスの適正サイジング: CloudWatchで実際のCPU・メモリ使用率を確認し、過剰なスペックを縮小
  • 不要リソースの削除: 使っていないEBSボリューム、スナップショット、Elastic IPを定期的に確認・削除

AWS Budgetsによるコストアラート

予算を設定し、閾値を超えた場合にメール通知を受け取る設定は必ず行いましょう。

  1. AWS Billing and Cost Managementにアクセス
  2. 「Budgets」→「予算を作成」
  3. 月額予算(例: 5,000円)を設定
  4. 80%到達時と100%到達時にメール通知を設定

運用・監視のベストプラクティス

EC2 Linuxサーバーを安定的に運用するためのベストプラクティスを紹介します。

CloudWatchによる監視

AWSのCloudWatchサービスで、インスタンスのメトリクスを監視できます。

  • CPU使用率: 80%以上が継続する場合はスケールアップを検討
  • ネットワークI/O: 異常なトラフィック増加を検知
  • ディスクI/O: EBSの性能限界に達していないか確認
  • ステータスチェック: ハードウェア・ソフトウェアの異常を自動検知

CloudWatchアラームを設定して、異常時に自動でSNS通知やインスタンスの再起動を行うことも可能です。

AMIによるバックアップ

# AWS CLIでAMIを作成
aws ec2 create-image \
  --instance-id i-1234567890abcdef0 \
  --name "web-server-backup-$(date +%Y%m%d)" \
  --description "Weekly backup" \
  --no-reboot

# 古いAMIの一覧確認
aws ec2 describe-images --owners self \
  --query 'Images[*].[ImageId,Name,CreationDate]' \
  --output table

AMIを定期的に作成しておけば、障害時に同一構成のインスタンスを素早く復旧できます。Linux上のバックアップ戦略全般についてはLinuxバックアップ・リストアガイドもご確認ください。

AWS CLIの活用

日常的な運用操作はAWS CLIで効率化できます。

# AWS CLIのインストール
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

# 初期設定
aws configure

# インスタンス一覧の確認
aws ec2 describe-instances \
  --query 'Reservations[*].Instances[*].[InstanceId,State.Name,PublicIpAddress,Tags[?Key==`Name`].Value|[0]]' \
  --output table

# インスタンスの起動・停止
aws ec2 start-instances --instance-ids i-1234567890abcdef0
aws ec2 stop-instances --instance-ids i-1234567890abcdef0

シェルスクリプトと組み合わせれば、日常的な運用作業を自動化できます。シェルスクリプトの書き方はシェルスクリプト入門、定期実行の設定はcron定期実行ガイドを参照してください。

まとめ:AWS EC2で始めるクラウドLinuxサーバー運用

AWS EC2を活用すれば、中小企業でも低コスト・低リスクでLinuxサーバーをクラウドに構築できます。本記事のポイントを振り返ります。

  • EC2はAWSの仮想サーバーサービス。Linux AMIを選択してインスタンスを起動するだけでサーバーが手に入る
  • t3.microから始めて、負荷に応じてスケールアップするのが効率的
  • セキュリティグループで最小限のポートのみ開放し、SSH鍵認証を使用する
  • コスト管理にはAWS Budgetsのアラート設定が必須。不要リソースの定期的な棚卸しも重要
  • CloudWatchとAMIバックアップで安定した運用体制を構築する
  • AWS CLIを活用して日常運用を効率化する

まずは無料利用枠の範囲でEC2インスタンスを作成し、基本操作に慣れることから始めましょう。Linux自体の知識が必要な場合はLinuxとは?初心者向け基礎解説Linux実践コマンドガイドを、サーバー構築の基礎はUbuntu Serverセットアップガイドを併せてご活用ください。

#Linux#AWS#クラウド
共有:
無料メルマガ

週1回、最新の技術記事をお届け

AI・クラウド・開発の最新記事を毎週月曜にメールでお届けします。登録は無料、いつでも解除できます。

プライバシーポリシーに基づき管理します

AI活用のヒントをお探しですか?お気軽にご相談ください。

まずは話だけ聞いてもらう