Apache 網站如何遷移到 Caddy
ServBay 提供 Caddy、Nginx 及 Apache 作為 Web 伺服器,您可依照專案需求自行選擇。針對多數 PHP 框架與 CMS 系統,ServBay 已為 Caddy 及 Nginx 預先配置好URL Rewrite 規則,通常用戶無需再進行額外設定。
本文將指導您如何在 ServBay 本地開發環境,將原基於 Apache 設定的網站遷移至 ServBay 提供的 Caddy 伺服器。以下以常見的 Laravel 及 WordPress 專案為例說明。
關於 ServBay 對 Apache 的支援
ServBay 完整支援 Apache 作為 Web 伺服器。如您希望將 ServBay 預設的 Web 伺服器切換為 Apache,或瞭解如何於 ServBay 配置 Apache 網站,請參考文件:如何切換預設 Web 伺服器為 Apache。本文重點為協助您將既有 Apache 配置的網站順利遷移至 ServBay 的 Caddy 環境。
概述
將網站自一個 Web 伺服器遷移至另一個,主要涉及配置與檔案的調整。ServBay 讓用戶可選擇 Caddy 作為 Web 伺服器,並針對主流 PHP 框架及 CMS 提供「開箱即用」的支援,亦即 ServBay 將自動處理包含 Rewrite 規則的必要配置。因此,將基於 Apache 的網站遷移到 ServBay 的 Caddy 環境通常非常簡易,主要只需正確在 ServBay 中「新增網站」即可。
遷移前準備
在進行遷移操作前,請務必完成下列準備事項:
- 備份檔案: 完整備份您的網站所有檔案,包括網站根目錄下的原始碼、圖片、上傳資料等。
- 備份資料庫: 匯出並備份網站使用的資料庫。ServBay 支援多種資料庫,如 MySQL、PostgreSQL、MongoDB 等,請選擇對應工具進行備份。
- 確認 ServBay 已安裝: 請確定您已於 macOS 成功安裝並啟動 ServBay。
- 確認已啟用 Caddy 套件: 於 ServBay 應用程式中,核對 Caddy 套件已處於啟用狀態。
將 Laravel 網站遷移到 Caddy
假設您的 Laravel 網站 Apache 配置如下:
典型 Apache 配置範例(非 ServBay 環境)
以下範例為非 ServBay 環境下 Laravel 網站的 Apache VirtualHost 設定。請注意 DocumentRoot
指向了 public
目錄,且透過 AllowOverride All
啟用了 .htaccess 檔的 Rewrite 規則。
<VirtualHost *:80>
ServerName laravel.demo
DocumentRoot /path/to/your/laravel/public
<Directory /path/to/your/laravel/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# 通常還會配置 PHP 處理方式,例如透過 FPM 或 mod_php
# FilesMatch \.php$>
# SetHandler "proxy:unix:/path/to/php-fpm.sock|fcgi://localhost"
# </FilesMatch>
</VirtualHost>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
在 ServBay 中運作此 Laravel 網站(使用 Caddy)
於 ServBay 中,您無需手動撰寫或轉換上述 Apache 設定為 Caddy 配置。ServBay 的設計理念是簡化本地開發環境設定。針對 Laravel 等主流框架,在新增網站時 ServBay 會自動產生正確的 Caddy 配置,包含指向 public
目錄及處理 Rewrite 規則。
實際操作步驟:
- 將您的 Laravel 專案完整複製至 ServBay 網站根目錄下的子目錄內。建議路徑為
/Applications/ServBay/www/your-laravel-project
,確保public
目錄位於該路徑下。 - 打開 ServBay 應用程式。
- 移至 ServBay 的「網站(Websites)」管理介面。
- 點選「新增網站」按鈕。
- 在跳出的設定視窗中:
- 網域(Domain): 輸入您希望用於訪問此網站的域名,例如
laravel.servbay.demo
。ServBay 會自動新增至本地 hosts 檔。 - 網站根目錄(Document Root): 點選瀏覽,選擇 Laravel 專案的
public
目錄,例/Applications/ServBay/www/your-laravel-project/public
。 - Web 伺服器(Web Server): 選擇
Caddy
。 - PHP 版本(PHP Version): 選用您專案需對應的 PHP 版本。
- 應用類型(Application Type): 請選擇
Laravel
。此步驟是 ServBay 可自動配置的關鍵。
- 網域(Domain): 輸入您希望用於訪問此網站的域名,例如
- 點擊「儲存」或「新增」完成設定。
完成上述步驟,ServBay 會自動為 laravel.servbay.demo
這個網站產生相應的 Caddy 配置,並處理指向 public
目錄、URL Rewrite、PHP 請求轉發等。此後,您可經由瀏覽器存取 http://laravel.servbay.demo
執行您的 Laravel 網站。
理論上的 Caddy 配置範例(僅供參考,ServBay 自動產生)
下方為理論上符合 Laravel 需求的 Caddy 配置示例,僅為說明用途。請留意您無需手動建立或修改這份檔案。
laravel.servbay.demo {
# 設定網站根目錄,指向 public 目錄
root * /Applications/ServBay/www/your-laravel-project/public
# 配置 PHP FastCGI 處理
# ServBay 會依您的 PHP 版本及設定自動設定正確的 socket 路徑
php_fastcgi unix//Applications/ServBay/tmp/php-cgi.sock
# 啟用檔案服務,處理靜態資源
file_server
# Laravel 的主要 Rewrite 規則:若請求的不是實體檔案或資料夾,則 Rewrite 至 index.php
@notStatic {
not {
file {
try_files {path} {path}/ /index.php?{query}
}
}
}
rewrite @notStatic /index.php
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
將 WordPress 網站遷移到 Caddy
假設您的 WordPress 網站 Apache 配置如下:
典型 Apache 配置範例(非 ServBay 環境)
以下範例為非 ServBay 環境下 WordPress 網站的 Apache VirtualHost 設定。WordPress 通常將根目錄設於安裝目錄,並依賴 .htaccess 實現固定網址等 Rewrite 規則。
<VirtualHost *:80>
ServerName wordpress.demo
DocumentRoot /path/to/your/wordpress
<Directory /path/to/your/wordpress>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# 通常還會配置 PHP 處理方式
# FilesMatch \.php$>
# SetHandler "proxy:unix:/path/to/php-fpm.sock|fcgi://localhost"
# </FilesMatch>
</VirtualHost>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
在 ServBay 中運作此 WordPress 網站(使用 Caddy)
與 Laravel 類似,於 ServBay 以 Caddy 作 Web 伺服器運作 WordPress 時,亦無需手動編寫 Caddy 配置。ServBay 會自動辨識 WordPress 需求並產生合適的配置。
實際操作步驟:
- 將您的 WordPress 專案完整複製至 ServBay 網站根目錄下的子目錄,如
/Applications/ServBay/www/your-wordpress-site
,確保index.php
、wp-admin
、wp-includes
等關鍵檔案皆在目標路徑下。 - 啟動 ServBay 應用程式。
- 進入「網站(Websites)」管理頁。
- 點擊「新增網站」。
- 在設定畫面中:
- 網域(Domain): 輸入期望的訪問域名,例
wordpress.servbay.demo
。 - 網站根目錄(Document Root): 選擇 WordPress 專案根目錄,例
/Applications/ServBay/www/your-wordpress-site
。 - Web 伺服器(Web Server): 勾選
Caddy
。 - PHP 版本(PHP Version): 指定專案需求 PHP 版本。
- 應用類型(Application Type): 請選擇
WordPress
。
- 網域(Domain): 輸入期望的訪問域名,例
- 點擊「儲存」或「新增」。
ServBay 會為 wordpress.servbay.demo
網站自動產生 Caddy 配置,處理包括網站根目錄、URL Rewrite(固定連結)、PHP 請求轉發等。完成後,可直接開啟瀏覽器進入 http://wordpress.servbay.demo
,WordPress 網站即順利執行,且固定網址功能亦可正常運作。
理論上的 Caddy 配置範例(僅供參考,ServBay 自動產生)
這是一份符合 WordPress 需求的 Caddy 配置範例,僅供說明參考。您毋須手動設定或修改。
wordpress.servbay.demo {
# 設定網站根目錄
root * /Applications/ServBay/www/your-wordpress-site
# 配置 PHP FastCGI 處理
php_fastcgi unix//Applications/ServBay/tmp/php-cgi.sock
# 啟用檔案服務
file_server
# WordPress 的主要 Rewrite 規則:支援固定網址
# 若請求的不是實體檔案或資料夾,則 Rewrite 至 index.php
@notStatic {
not {
file {
try_files {path} {path}/ /index.php?{query}
}
}
}
rewrite @notStatic /index.php
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
總結
將以 Apache 配置的 Laravel 或 WordPress 網站遷移到 ServBay 的 Caddy 伺服器相當便捷。歸功於 ServBay 對主流應用的原生支援,您無需手動轉換 Apache 的 .htaccess 或 VirtualHost 設定為 Caddyfile 語法。只需於「網站(Websites)」管理頁正確新增網站,指定網域、網站根目錄、選用 Caddy 為 Web 伺服器,選定對應應用類型(如 Laravel 或 WordPress),ServBay 即會自動完成包括複雜 Rewrite 在內的所有 Caddy 配置。
如此自動化設定,大幅簡化遷移流程與本地開發環境的建置,讓開發者專注於程式內容,而非伺服器設定。