部署具有虛擬主機和 SSL 的網頁伺服器
1. 環境準備
現在是時候將所有東西整合起來了。今天我們要部署一個伺服器,帶有多個虛擬主機並連接上 HTTPS。我們將進行測試、調試以及最後的配置。
我們的任務
在這個專案中,我們將在同一個網頁伺服器上部署兩個網站:
- example.com
- test.com
為每一個網站配置虛擬主機,連接 HTTPS,並展示調試與檢查運作的步驟。準備好了嗎?出發吧!
準備
在開始之前,先確保一切都已正確設置:
你已經安裝了網頁伺服器(Nginx 或 Apache)。
如果你使用的是 Nginx:
sudo apt-get update sudo apt-get install nginx
或者 Apache:
sudo apt-get update sudo apt-get install apache2
已安裝用於 SSL 的 Certbot 套件。
對於 Nginx:
sudo apt-get install certbot python3-certbot-nginx
對於 Apache:
sudo apt-get install certbot python3-certbot-apache
你可以連接到伺服器,並且對於 example.com 和 test.com 的域名已設置了 DNS,或者可以用
/etc/hosts
進行測試。
2. 為每個站點配置目錄
讓我們從為我們的網站創建目錄和檔案開始。
步驟 1: 創建站點文件夾
sudo mkdir -p /var/www/example.com
sudo mkdir -p /var/www/test.com
步驟 2: 創建測試 HTML 文件
為每個站點創建一個簡單的 HTML 檔案:
example.com
sudo nano /var/www/example.com/index.html
內容:
<!DOCTYPE html>
<html>
<head>
<title>歡迎來到 example.com</title>
</head>
<body>
<h1>這裡是 example.com</h1>
<p>歡迎來到 example.com!該站點已啟動並通過 SSL 保護!</p>
</body>
</html>
test.com
sudo nano /var/www/test.com/index.html
內容:
<!DOCTYPE html>
<html>
<head>
<title>歡迎來到 test.com</title>
</head>
<body>
<h1>這裡是 test.com</h1>
<p>歡迎來到 test.com!該站點正在運行並通過 SSL 保護!</p>
</body>
</html>
3. 設定虛擬主機
我們為每個網站建立單獨的配置檔案。
步驟 1:為 Nginx 設定
example.com
sudo nano /etc/nginx/sites-available/example.com
內容:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
test.com
sudo nano /etc/nginx/sites-available/test.com
內容:
server {
listen 80;
server_name test.com www.test.com;
root /var/www/test.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
啟用配置檔案:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
重啟伺服器:
sudo nginx -t
sudo systemctl reload nginx
步驟 2:為 Apache 設定
example.com
sudo nano /etc/apache2/sites-available/example.com.conf
內容:
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
<Directory /var/www/example.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
test.com
sudo nano /etc/apache2/sites-available/test.com.conf
內容:
<VirtualHost *:80>
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/test.com
<Directory /var/www/test.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
啟用配置檔案:
sudo a2ensite example.com.conf
sudo a2ensite test.com.conf
sudo systemctl reload apache2
4. 為網站設定 HTTPS
現在我們用 Let’s Encrypt 為兩個網站啟用 SSL。
sudo certbot --nginx
# 或者對於 Apache:
sudo certbot --apache
過程中會提示選擇要生成憑證的網站。選擇 example.com
和 test.com
。Certbot 將自動更新伺服器的配置。
5. 測試網站運行狀況
完成設定後,訪問你的網站:
你應該能看到已建立的 HTML 網頁。確認瀏覽器的地址欄中顯示「安全」(Secure)。
6. 除錯與檢查
如果出了點問題,可以檢查日誌檔案:
對於 Nginx:
sudo tail -f /var/log/nginx/error.log
對於 Apache:
sudo tail -f /var/log/apache2/error.log
或者用 curl
檢查可用性:
curl -I http://example.com
curl -I https://example.com
7. 更新憑證
Certbot 會透過系統的 cron
自動更新憑證。要檢查的話可以手動執行:
sudo certbot renew --dry-run
就這樣,一步步設定,我們把支援多站點和 HTTPS 的網頁伺服器弄好了。你剛剛完成了從一台乾淨的伺服器到擁有虛擬主機和 SSL 的整個流程。現在你的伺服器已經準備好向世界展示網站了。是不是很酷啊?
GO TO FULL VERSION