共享主機還是 VPS?你真正需要哪一種?
共享主機與 VPS 的關鍵差異是 root 存取權,以及伺服器故障時由誰處理。了解共享主機何時更划算,以及需要升級至 VPS 的 4 個跡象。
共享主機與 VPS:簡短結論
共享主機與 VPS 的差異不在速度。使用共享主機時,您租用的是某台伺服器上的帳戶;伺服器由其他人設定與修補,並由數百名客戶共用。使用 VPS(virtual private server)時,您租用的是完整的作業系統環境,具備 root 存取權,因此可以安裝所需軟體,但也必須自行修復造成的問題。
真正的差異有 3 項。您是否具備 root 存取權。記憶體是專用配置給您,還是從共用資源池借用。伺服器在午夜停止回應時,是由主機商修復,還是由您自行處理。功能比較表中的所有差異,都源自這 3 項。
如果網站只有頁面、圖片和聯絡表單,共享主機就是正確選擇,而且成本較低。如果網站需要在無人造訪時仍持續執行的程式,就需要 VPS。
共享主機實際提供的內容
一台 Linux 伺服器會同時執行許多客戶帳號。每個帳號都有自己的家目錄、文件根目錄、資料庫與信箱,而同一台伺服器上的單一 Web 伺服器通常是 Apache 或 LiteSpeed,會提供所有網站的服務。您取得的是控制面板,而不是 shell 提示字元。您沒有 root 權限,因此無法安裝套件、開放連接埠或啟動背景服務。
大多數共享主機會執行 CloudLinux,將每個帳號置於獨立容器中,並嚴格限制可使用的處理器時間,以及同時執行的程序數量。超過程序上限不會讓網站變慢,而是讓伺服器回傳顯示 508 Resource Limit Is Reached 的錯誤頁面。這表示您自己的帳號已達到上限,不是鄰近帳號占用了原本分配給您的資源。
這項取捨是刻意設計的。您放棄控制權,主機業者則負責修補核心、更新 PHP、續期憑證並保留每晚備份。對許多網站而言,這是合理的取捨。
VPS 實際提供的內容
VPS 是在主機伺服器上執行的虛擬機器。在 KVM(多數 Linux VPS 方案背後使用的 hypervisor)下,您的執行個體會啟動自己的 kernel,並擁有自己的 IP 位址、防火牆與 init system。sudo 可正常運作。apt install 可正常運作。您透過 systemd 啟動的程式會在登出後持續執行,當程式當機時會自動重新啟動,並在重新開機後恢復執行。
同樣的 root 存取權限,也是這台機器的安全性由您負責的原因。沒有其他人會替您監控它。人們在 VPS 上執行的工作範圍之所以廣泛,正是因為這個原因:這台伺服器能執行 Linux server 可以執行的任何工作。
差異 1:root 存取權,以及它能解鎖的功能
root 是造成其他所有差異的根本原因。取得 root 後,您可以從發行版安裝任何套件、繫結任何連接埠、撰寫 systemd unit、讀取機器上的所有日誌,並使用 sysctl 修改核心設定。沒有 root 時,您只能使用控制面板提供的項目:PHP 版本選擇器、固定的擴充功能集合,以及設定 cron job 的表單。
在 VPS 上,您隨時可以查詢機器目前有哪些服務正在監聽:
ss -ltnp每一行代表一個開啟的 socket,並列出擁有該 socket 的程序。因此,啟動失敗的服務會顯示為缺少一行。在 shared hosting 上,這個問題沒有答案,因為 80 和 443 埠屬於主機的 Web server,您撰寫的任何程式都無法取得其中任何一個埠。
差異 2:配置的記憶體與借用的記憶體
共享主機的銷售前提,是假設同一時間只有少數帳戶處於忙碌狀態。主機中的記憶體是一個共用資源池,而你的帳戶可使用的記憶體是上限,不是保留額度。用量超過這個上限時,PHP 程序會被終止,訪客會收到 500 或 508 錯誤。
在 VPS 上,你方案中的記憶體屬於你的 instance。free -m 會顯示這項資訊,虛擬機器外部的程序無法取走這些記憶體。
處理器時間是明確的例外。大多數 VPS 方案會讓多個 guest 共用實體核心,你可以自行測量:
vmstat 1 5st 欄位是 steal time,表示虛擬處理器已準備執行,但實體核心被交給另一個 guest 使用的時間比例。穩定維持在幾個百分點通常屬於正常範圍。持續達到兩位數,表示主機的資源配置過度超額;你可以在 support ticket 中引用這項數值。共享主機沒有相應的讀值,因為任何能顯示這項資訊的工具都需要 root 權限。儲存資源的情況相同,因此 VPS 方案背後使用的磁碟類型 很重要,也因此值得在第一週 自行測量新的 VPS,而不是只相信銷售頁面。
差異 3:發生故障時由誰負責
在 shared hosting 上,主機商負責作業系統、Web server、PHP build、憑證及每晚備份。機器停止回應時,您只要開立 ticket,就會有人開始處理。這項服務的另一面是相同的責任界線:您無法要求主機商安裝不支援的項目。
在 unmanaged VPS 上,供應商負責 hypervisor、網路及電力。從 kernel 以上的所有項目都由您負責。Security updates、firewall、備份、憑證續期及監控都需要您處理,support 也不會登入替您偵錯 Web server 設定。請從第一天就做好規劃:新 VPS 上線後的前 10 分鐘,接著設定您了解的 firewall、自動 security updates,以及至少成功還原過一次的備份。
共用主機是正確選擇的情況
形象網站是最明確的案例:包含幾個頁面、圖片、聯絡表單,可能還有搭配快取外掛的 WordPress,以及每天幾千次造訪。沒有背景工作。沒有特殊的執行環境。沒有任何資料需要在請求之間持續保留在記憶體中。共用主機足以穩定提供這類網站,成本低於任何 VPS,維護工作也交由專職人員處理。將網站搬到 VPS 不會帶來實際效益,反而增加原本不存在的工作。
另一種較少受到注意的情況是:如果你們沒有人願意查看日誌檔或執行 apt upgrade,共用主機會是更安全的選擇。未套用修補程式且開放資料庫埠的 VPS,結果會比由專業人員持續維護的共用帳號更糟。控制權只有在有人使用時才是優勢。
徵兆 1:你需要一個持續執行的程式
Daemon 是常駐記憶體並等待工作到來的程式,例如 API、聊天機器人、佇列工作程序或遊戲伺服器。共用主機只會在收到請求時執行你的程式,而你從 SSH (secure shell) 工作階段啟動並持續執行的任何程式都會被終止,因為長時間執行的程序會計入帳戶的程序數上限。
在 VPS 上,同一個程式會成為 systemd unit:
sudo systemctl enable --now myapp
systemctl status myappsystemctl status 應輸出 Active: active (running) 及程序 ID。如果輸出 Active: failed (Result: exit-code),原因會記錄在 journalctl -u myapp -n 50 中;該內容會顯示程式停止當下自行輸出的訊息。unit 檔案中的 Restart=always 會在程式當機後重新啟動它,而 enable 會在重新開機後重新啟動它。撰寫 systemd 服務與計時器 是第一項值得扎實學習的 VPS 技能。
徵兆 2:你需要控制台未提供的執行環境
控制台會提供一份清單。如果應用程式需要清單以外的語言版本、必須編譯的函式庫、ffmpeg、無頭瀏覽器,或不是 MySQL 的資料庫,共用主機就無處安裝這些元件。安裝軟體需要 root 權限,而該帳號沒有編譯器與開發標頭檔,因此建置程序會在產生任何結果前失敗。
在 VPS 上,你可以使用 apt install 安裝,或在容器中執行,讓主機環境保持乾淨。當應用程式包含多個相互依賴的元件時,通常會使用 VPS 上的 Docker Compose。
徵兆 3:cron 工作必須準時執行
共用主機會透過表單接受 cron 工作,並設定最短間隔,通常是 5 或 15 分鐘。若工作執行時間超過帳號的處理器限制,系統會在執行途中終止工作。由於沒有任何內容寫入你有權讀取的日誌,因此工作會無聲失敗。
在 VPS 上,crontab -e 接受你指定的任何排程,而 systemd timer 更為理想:
systemctl list-timers
journalctl -u cron -n 20list-timers 會列出每個 timer 的下次執行時間與上次結果,cron 日誌則會在每個命令執行時記錄該命令。工作未執行時,你可以判斷它是從未啟動,還是已啟動但執行失敗。排程工作的除錯,大多就是釐清這項差異。
徵兆 4:鄰近帳戶正在拖慢你的回應時間
這個症狀很明確。同一個頁面在程式碼未變更的情況下,晚上回應快速,晚上七點卻變慢。先從你自己的電腦測量,再判斷問題是否出在其他人:
for i in $(seq 1 20); do curl -o /dev/null -s -w '%{time_starttransfer}\n' https://example.com/; sleep 5; donetime_starttransfer 是回應傳送第一個位元組所需的時間,單位為秒。如果這 20 個數值彼此接近,問題不在伺服器,應從程式碼或資料庫查詢著手。如果凌晨 3am 的數值穩定,但尖峰時段會波動數百毫秒,表示你與無法查看的其他帳戶共用一台繁忙的機器。這是唯一無法靠改善程式碼解決的觸發因素,因為問題根源位於帳戶邊界的另一側。
實際遷移成本
以下是截至 2026 年 8 月,各類別最小方案的常見標示價格。請將這些價格視為估算範圍,而非正式報價;購買前請確認目前價格。
The data behind this chart
[
{
"plan": "Shared hosting",
"first_term_usd": 3,
"renewal_usd": 12
},
{
"plan": "VPS, 1 vCPU 1 GB",
"first_term_usd": 5,
"renewal_usd": 6
},
{
"plan": "VPS, 2 vCPU 4 GB",
"first_term_usd": 12,
"renewal_usd": 15
},
{
"plan": "Managed VPS, 2 vCPU 4 GB",
"first_term_usd": 25,
"renewal_usd": 30
}
]表面上的差距介於每月 3 至 5 美元之間,但這不是決定性因素。共享主機通常會提供需要預付 1 至 3 年費用的首期價格,續約價格則接近 12 美元。若比較續約價格,結果會不同:共享主機帳戶為 12 美元,入門 VPS 則為 6 美元。
比較時請注意,兩者的規格並不相同。1 vCPU、1 GB 的 VPS 必須在同一台小型伺服器上執行網頁伺服器與資料庫;實際流量增加後,這對 WordPress 來說會相當吃緊。與續約後的共享主機方案合理比較,應該是每月約 15 美元的 2 vCPU、4 GB 方案。因此,實際溢價是每月幾美元,而不是數倍。
較大的成本不會出現在帳單上。VPS 需要額外 1 小時進行初始設定,每月花幾分鐘更新,第一次發生故障時還可能耗費一個晚上的時間。若按你自己的每小時費率計算,兩者的差距很快就會縮小。實際使用 VPS 的成本會進一步說明不同規格的差異。
將網站從共享主機搬遷,同時維持流量
- 提前一天將網域的 DNS(domain name system)TTL(time to live)降低為 300 秒,讓切換在幾分鐘內生效,而不是等待數小時。
- 建置新伺服器,並在修改 DNS 前,先透過其 IP 位址確認網站可正常運作。
- 複製檔案,接著匯出資料庫,再將資料庫還原到新主機。
- 使用筆記型電腦的 hosts 檔案進行測試。該檔案只會在你的電腦上將網域指向新 IP。
- 在新伺服器上申請 TLS(transport layer security)憑證,修改 A record,並讓共享主機帳戶持續運作一週。
dig example.com A +noall +answer
rsync -avz ~/public_html/ deploy@203.0.113.10:/srv/www/example.com/
mysqldump --single-transaction -u dbuser -p dbname > site.sqldig 會在回應的第二欄列出 TTL,因此你可以在切換前確認較低的值已生效。--single-transaction 可建立一致的快照,且不會鎖定資料表。如果舊網站仍在接收訂單,這項功能尤其重要。在新伺服器上,應於同一天完成憑證設定:DNS record 指向該主機後,在 Ubuntu 上使用 nginx 設定 Let's Encrypt 只需幾分鐘即可完成。
無須自行負責維護的資源
如果上述四項徵兆符合你的網站,但你不想負責維護,中間選項是代管 VPS。你仍可使用配置給你的記憶體與 root 層級權限,而供應商負責套用修補程式、監控,通常也會提供控制面板。上方圖表顯示,同樣規模的非代管 VPS 約為 30 美元,代管 VPS 則約為 15 美元。這筆差額換來的是:伺服器在夜間停止回應時,有人替你處理。
如果這正符合你的情況,下一篇應閱讀代管與非代管 VPS 的選擇。如果你已經在執行繁忙的 VPS,尖峰時段的資源爭用仍然嚴重,下一個選項就是完全沒有鄰居的 dedicated server。
FAQ
VPS 比共享主機快嗎?
不一定。負載較低的共享伺服器,在單一 WordPress 頁面上可能比 1 vCPU 的 VPS 更快。VPS 提供的是穩定性:方案中的記憶體由你專用,因此回應時間取決於你的程式碼,而不是伺服器上最忙碌的帳戶。如果網頁在 3am 和 7pm 都很慢,原因就在你的程式碼或資料庫查詢;將相同程式碼搬到 VPS,只會把問題一併帶過去。
我可以在共享主機上執行 Node.js 或 Python 應用程式嗎?
有時可以,但限制很嚴格。部分控制面板會透過 Passenger 為你啟動應用程式,並在收到請求時執行。你無法綁定自己的連接埠,因為主機的 Web 伺服器已使用 80 和 443。你也無法讓 worker 在請求之間持續留在記憶體中,因為帳戶的程序數上限會終止任何長時間執行的程序。bot、queue worker 或 websocket server 需要 VPS。
執行 VPS 需要具備 Linux 知識嗎?
如果是未代管的 VPS,需要。你必須處理 SSH keys、防火牆、更新與備份,也要養成讀取日誌的習慣。初次設定預留 1 小時,之後每月花幾分鐘維護即可。如果這些工作不是你想做的事,代管方案會保留分配給你的資源,並將維護工作交回供應商;這就是 代管與未代管 VPS 主機之間的取捨。
從共享主機搬到 VPS 時,我的網站會停機嗎?
只要先降低 DNS TTL,並讓兩個帳戶同時執行,就不會。提前一天將 TTL 設為 300 秒,複製檔案與資料庫,透過筆電的 hosts file 測試新伺服器,然後變更 A record。幾分鐘內,部分訪客會連到舊伺服器,部分訪客會連到新伺服器,因此請讓共享主機帳戶繼續運作 1 週。在最後一次資料庫傾印期間,將網站設為唯讀模式;否則就必須接受這段期間寫入的資料可能遺失。