🚀 我的第 N 個測試網站佈署筆記

從建立目錄、設定 Apache 虛擬主機到申請 SSL 憑證的完整除錯流程。

Step 1: 建立網站根目錄與權限

為新網站建立獨立資料夾,並賦予 Apache 伺服器 (www-data) 讀寫權限。

sudo mkdir -p /var/www/test0823
sudo chown -R www-data:www-data /var/www/test0823
sudo chmod -R 755 /var/www/test0823

Step 2: 建立 Apache 設定檔 (VirtualHost)

/etc/apache2/sites-available/ 建立對應的 .conf 檔案,設定 ServerNameDocumentRoot

<VirtualHost *:80>
    ServerName test0823.duckdns.org
    DocumentRoot /var/www/test0823
</VirtualHost>

啟用網站並重載服務:

sudo a2ensite test0823.conf
sudo systemctl reload apache2

Step 3: 防火牆排錯 (Timeout 問題)

Let's Encrypt 驗證伺服器必須透過 Port 80 連入。如果申請憑證時發生 Timeout during connect,通常是因為防火牆擋住了外網。

  • Oracle Cloud (OCI) VCN: 必須在 Security Lists 開放 Port 80 與 443,來源設為 0.0.0.0/0
  • OS 層級 iptables: 必須插入 ACCEPT 規則,並存檔。
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT
sudo netfilter-persistent save

Step 4: 申請 Let's Encrypt SSL 憑證

確認外網 80 埠口暢通後,執行 Certbot,它會自動完成驗證並產生 HTTPS 的 443 設定檔。

sudo certbot --apache -d test0823.duckdns.org

Step 5: 解決 HTML 中文亂碼

純 HTML 網頁如果沒有宣告編碼,瀏覽器會使用預設編碼導致繁體中文變成亂碼。必須在 <head> 內加入 UTF-8 宣告:

<meta charset="UTF-8">