iT邦幫忙

2025 iThome 鐵人賽

DAY 11
0
Build on AWS

從零到雲端:AWS 開發之路系列 第 11

Day11 在 EC2 架設 Apache,部署一個動態網站

  • 分享至 

  • xImage
  •  

前幾天我們已經用S3 + CloudFront、Cloudflare Pages部署了靜態網站。今天的任務更進一步:在AWS EC2(雲端主機)上安裝Apache,並部署一個「動態網站」。這樣就能處理伺服器端邏輯,例如 PHP,甚至後面連線資料庫。
還記得我們在第三天建立了一台EC2嗎?今天我們要用這台主機來做動態網站,那為什麼要用EC2不用S3呢?原因在於:

  • S3 靜態網站:只能放 HTML、CSS、JS,不能跑後端程式。
  • EC2:相當於一台雲端的 Linux 電腦,可以安裝任何伺服器軟體,部署完整網站或 API。

登入EC2

由於在第三天我們已經先部署好EC2,所以這邊我們直接從終端機登入就可以啦!
登入的方式也是跟上次一樣利用SSH連線到EC2,your-key.pem要更換成當時自己下載的金鑰,EC2公有IP則可以在AWS中EC2的主控台頁面找到,成功登入後會看到類似「鳥在飛」的畫面

ssh -i your-key.pem ec2-user@<EC2公有IP>

安裝 Apache + PHP

sudo yum update -y
sudo yum install -y httpd php

啟動 Apache

sudo systemctl start httpd
sudo systemctl enable httpd

進入網站根目錄(Apache 預設目錄):

cd /var/www/html

建立並編輯檔案:

sudo nano index.php

index.php程式碼

<?php
date_default_timezone_set("Asia/Taipei");

// 1️⃣ 處理表單送出的留言
if ($_SERVER["REQUEST_METHOD"] == "POST" && !empty($_POST["message"])) {
    $msg = htmlspecialchars($_POST["message"]); // 避免 XSS
    file_put_contents("messages.txt", date("H:i:s") . " - " . $msg . "\n", FILE_APPEND);

    // 送出後自動刷新頁面
    header("Location: /");
    exit; // 送出後停止程式,避免 HTML 重複輸出
}

// 2️⃣ 讀取歷史留言
$messages = file_exists("messages.txt") ? file("messages.txt") : [];
?>
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>我的小動態網站</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 30px; }
        h1 { color: #333; }
        form input { padding: 5px; width: 300px; }
        form button { padding: 5px 10px; }
        ul { list-style-type: none; padding-left: 0; }
        li { margin-bottom: 5px; padding: 5px; background: #f2f2f2; border-radius: 4px; }
    </style>
</head>
<body>
    <h1>💬 小留言板</h1>

    <!-- 送出留言表單 -->
    <form method="POST">
        <input type="text" name="message" placeholder="輸入留言" required>
        <button type="submit">送出</button>
    </form>

    <!-- 顯示歷史留言 -->
    <h2>歷史留言</h2>
    <ul>
        <?php foreach ($messages as $m): ?>
            <li><?php echo htmlspecialchars($m); ?></li>
        <?php endforeach; ?>
    </ul>
</body>
</html>

儲存後我們在瀏覽器輸入以下網址就看得到我們做的動態網站囉~

http://<你的EC2 Public IP>/

網站功能

1. 輸入留言

頁面上有一個輸入框 + 「送出」按鈕。
你可以輸入一段文字(例如「Hello from EC2!」),按下送出。

2. 動態存檔

每次送出的留言,會被存進伺服器上的 messages.txt 檔案。
程式會自動加上時間戳(例如 14:32: Hello from EC2!)。

3. 即時顯示

當頁面重新整理,或送出新留言後,下方會顯示所有歷史留言。
多人同時使用的話,也能看到彼此的留言(因為資料存同一個檔案)。
https://ithelp.ithome.com.tw/upload/images/20250926/201692515ZY6sfd8Fr.jpg
https://ithelp.ithome.com.tw/upload/images/20250918/20169251EbqUFXSwyD.png

不過今天做的動態網站是把這些留言存在.txt檔案裡面,這樣其實會有被覆蓋的風險,那具體要怎麼做呢?我們明天來介紹在RDS建立資料庫並儲存的部分!


上一篇
Day10 使用 Cloudflare 免費子網域(.pages.dev)測試
下一篇
Day12 將網站連接到 RDS MySQL(存資料)
系列文
從零到雲端:AWS 開發之路12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言