「自社サーバーの管理コストを下げたい」「リモートワーク対応のサーバー環境が必要」「開発・検証環境を素早く用意したい」――こうした課題を解決する手段として、クラウドサーバーの活用は中小企業にとってもはや避けて通れない選択肢です。
中でも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接続に必要なキーペアを事前に作成します。
- EC2ダッシュボードの左メニューから「キーペア」を選択
- 「キーペアを作成」をクリック
- 名前を入力(例: my-server-key)
- キーペアのタイプ: RSA
- プライベートキーファイル形式: .pem(Linux/macOS)または .ppk(PuTTY)
- 作成してダウンロード(このファイルは再ダウンロードできないため厳重に保管)
# ダウンロードした秘密鍵のパーミッションを設定
chmod 400 ~/Downloads/my-server-key.pem
# 安全な場所に移動
mv ~/Downloads/my-server-key.pem ~/.ssh/
ステップ2: インスタンスの起動
- EC2ダッシュボードから「インスタンスを起動」をクリック
- 名前: わかりやすいサーバー名を入力(例: web-server-01)
- AMI: Ubuntu Server 24.04 LTS(64-bit x86)を選択
- インスタンスタイプ: t3.micro(無料枠)または用途に合ったタイプ
- キーペア: 先ほど作成したキーペアを選択
- ネットワーク設定:
- VPC: デフォルトVPC(または専用VPC)
- サブネット: パブリックサブネット
- パブリックIPの自動割り当て: 有効
- セキュリティグループ: 新規作成(後述の設定を推奨)
- ストレージ: 20GB以上のgp3(汎用SSD)
- 「インスタンスを起動」をクリック
ステップ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を割り当てます。
- EC2ダッシュボードの「Elastic IP」から「Elastic IPアドレスの割り当て」
- 割り当てたIPを選択し、「Elastic IPアドレスの関連付け」
- 対象のインスタンスを選択して関連付け
注意: 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によるコストアラート
予算を設定し、閾値を超えた場合にメール通知を受け取る設定は必ず行いましょう。
- AWS Billing and Cost Managementにアクセス
- 「Budgets」→「予算を作成」
- 月額予算(例: 5,000円)を設定
- 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セットアップガイドを併せてご活用ください。
関連記事
AWS CloudFrontでサイト高速化|CDN設定からキャッシュ戦略まで実践解説
AWS CloudWatchで監視・アラート設定|運用担当者のための実践ガイド
AWS CodePipelineでCI/CD構築|コード変更から本番デプロイまでの自動化
AWS Cost Explorerでコスト可視化|ムダを見つけて月額費用を削減する実践術
AWS ECS/Fargateでコンテナ運用|Docker→本番デプロイの実践ガイド
AWS IAMのベストプラクティス|最小権限の原則を実務で実装する方法
AWS RDSの実務ガイド|データベース構築・バックアップ・パフォーマンスチューニング
AWS S3の実務活用ガイド|バケット設計・アクセス制御・コスト最適化の実践