規劃網站伺服器架構,第一步不是選硬體,而是先搞清楚網站的定位與流量特性,才能判斷自建伺服器 vs 雲端主機該選哪一種、作業系統怎麼選、硬體規格怎麼抓。這篇伺服器安裝教學會依照這個決策順序,依序拆解自建與雲端的取捨、作業系統選定、依規模挑硬體、RAID 與記憶體規劃,再談資料庫怎麼規劃才安全又好管理、容器化測試架構,以及備份與還原的實務做法,最後附上 AWS/GCP/Azure 三大雲端平台的特色比較,協助你建立一套穩健的網站伺服器架構。
文章目錄
一、網站伺服器架構規劃第一步:判斷網站定位與用途
在選硬體之前,先回答兩個問題比較重要:這個網站的流量穩不穩定、可不可預期,以及團隊有沒有能力自己維護伺服器(含資安設定、日常巡檢、故障排除、備份還原)。這兩個答案會決定接下來所有的架構走向。
簡單來說可以分成兩條路線:流量穩定、團隊也熟悉維護伺服器,走自建路線通常長期成本較低、掌控度也高;如果網站流量容易突然暴增(檔期促銷、活動曝光、媒體報導帶來的流量尖峰),或團隊人力有限、不想花心力顧硬體,走雲端路線能隨時彈性調整資源,降低突發流量把網站打掛的風險。以下分別說明兩條路線各自要考量的重點,整體決策流程如下圖。
圖:網站伺服器架構決策流程——從判斷定位到自建/雲端路線,最後匯流到資料庫、容器化與備份還原
二、自建伺服器怎麼安裝架設?路線A完整說明
自建伺服器(含自有機房或伺服器代管 Colocation)適合流量相對穩定、團隊具備維運能力的網站。這條路線的優勢是長期成本較可控、資料完全掌握在自己手上,但相對地,資安與硬體容錯都要自己負全責,不能假設底層有人幫你兜底。
資安考量:防火牆與網路分區
自建環境的防火牆規劃原則是預設全部拒絕,只開放必要的連接埠與來源:對外只開放網站需要的 80/443 埠,管理用的 SSH 埠建議限制特定來源 IP,或改走 VPN/跳板機(Bastion Host)連入,避免直接對全世界開放管理埠。
資料庫與應用主機分離
正式環境建議資料庫主機與應用(Web)主機分開,兩者之間只透過內網溝通,資料庫的連接埠(如 MySQL 3306、PostgreSQL 5432)絕對不對外開放,只允許應用主機的內網 IP 連入。這樣即使 Web 主機不幸被入侵,攻擊者也無法直接從外部連上資料庫,多一層防護縱深。
# 範例:iptables 限制資料庫埠只允許特定內網IP連入
iptables -A INPUT -p tcp --dport 3306 -s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP
# SSH 只允許特定管理IP連入
iptables -A INPUT -p tcp --dport 22 -s 203.0.113.10 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
三、自建伺服器 vs 雲端主機:雲端路線該怎麼選?(附AWS/GCP/Azure比較)
雲端路線適合流量容易突然大量湧入的網站,例如電商大檔期、行銷活動、內容忽然爆紅等情境。最大的優勢是可以即時調整 CPU、記憶體、頻寬等資源,甚至搭配自動擴展(Auto Scaling)在流量尖峰時自動增加主機、離峰時自動收回,不需要為了應付一年一次的流量高峰而長期囤置高規格硬體。
三大雲端平台特色比較| 平台 | 彈性擴充特色 | 資料庫代管服務 | 優勢/適合情境 |
|---|---|---|---|
| AWS | EC2 + Auto Scaling,規格選項最多 | RDS(支援MySQL/PostgreSQL等多種引擎) | 服務最齊全、社群資源最多,適合各種規模與情境 |
| GCP | Compute Engine + 自動擴展 | Cloud SQL | 網路架構評價高,資料分析/AI相關服務整合方便 |
| Azure | Virtual Machines + Scale Sets | Azure SQL Database | 與微軟體系(AD、Office 365)整合度高,適合既有微軟生態的企業 |
三個平台在「隨時調整資源大小」這件事上做法接近:都能在不重新安裝系統的情況下,直接把主機規格往上調(垂直擴充),或是設定規則讓系統自動增加、減少主機數量(水平擴充),來因應流量的暴起暴落。實務選型上,若團隊沒有特別偏好,建議先看團隊既有技術背景與熟悉度,三者能達成的核心功能其實高度重疊。
四、作業系統選定
作業系統的選擇,自建與雲端的考量略有不同。自建環境要自己負責系統安裝與長期維護,雲端環境則多半是選擇服務商提供的映像檔(Image),系統底層的部分安全性修補可能已由雲端服務商協助處理,但套件與應用層級的更新仍是使用者自己的責任。
常見 Linux 發行版特性比較| 發行版系列 | 更新週期特性 | 適合情境 |
|---|---|---|
| Ubuntu/Debian 系 | 套件庫較新、社群教學資源豐富 | 中小型團隊快速上手、開發測試環境 |
| Rocky Linux/CentOS 系 | 企業長期支援路線,更新較保守、穩定優先 | 追求長期穩定、不常變動的正式環境 |
沒有絕對的「哪個比較好」,實務上建議選團隊最熟悉、內部已有維護經驗的那一套,避免為了追求新版本而換系統,反而增加不必要的學習與相容性風險。
五、依用途選定硬體規格
硬體規格沒有標準答案,但可以依「日活躍訪客量」抓出合理的起始規格,再依實際監控數據調整。無論自建或上雲,抓規格的邏輯是一樣的,差別只在於雲端規格可以事後隨時調整,自建則要一次規劃到位、預留一定成長空間。
依網站規模的硬體規格參考| 規模等級 | 適用情境 | CPU | 儲存 | 網路頻寬 |
|---|---|---|---|---|
| 小型 | 個人網站、形象官網、日訪客 < 1,000 | 2 vCPU | 單顆 SSD 40~80GB | 共享頻寬即可 |
| 中型 | 企業官網、中小型電商、日訪客 1,000~1 萬 | 4~8 vCPU | NVMe SSD,RAID 1 起跳 | 獨立頻寬,100Mbps 以上 |
| 大型 | 高流量電商、內容平台、日訪客 > 1 萬或有尖峰檔期 | 多台主機,8 vCPU 起/台 | NVMe SSD,RAID 10 為主 | 負載平衡+CDN 分流 |
CPU 核心數不是唯一指標,網站效能瓶頸往往先出現在磁碟 I/O 或記憶體,尤其是資料庫密集的應用。中大型網站建議優先把預算放在 NVMe SSD 與記憶體,到了大型規模,單機垂直擴充通常會遇到成本效益遞減,這時該考慮水平擴充:多台應用伺服器搭配負載平衡器,資料庫則獨立出來做主從或叢集。
六、RAID 硬碟規劃配置
RAID 主要是自建伺服器需要仔細規劃的項目——目的是在硬碟故障時服務仍不中斷。RAID 的目的有兩個方向:提升讀寫效能與提高容錯能力,實務上是在效能、容錯、可用容量三者之間取捨。
常見 RAID 等級比較| RAID 等級 | 最少硬碟數 | 可用容量 | 容錯能力 | 建議用途 |
|---|---|---|---|---|
| RAID 0 | 2 | 100% | 無,任一顆壞即全毀 | 純測試環境,不建議正式站使用 |
| RAID 1 | 2 | 50% | 可容忍 1 顆故障 | 系統開機碟(OS)、小型網站 |
| RAID 5 | 3 | (n-1)/n | 可容忍 1 顆故障 | 檔案儲存、讀多寫少的應用 |
| RAID 6 | 4 | (n-2)/n | 可容忍 2 顆故障 | 大容量儲存陣列 |
| RAID 10 | 4 | 50% | 可容忍多顆故障(視組合) | 資料庫、高 I/O 需求的正式站 |
實務建議:系統開機碟用 RAID 1 即可;資料庫或高 I/O 應用資料優先選 RAID 10,兼顧讀寫效能與容錯;純靜態檔案儲存可考慮 RAID 5/6 換取較高可用容量,並規劃熱備援硬碟(Hot Spare)縮短故障後的風險曝露時間。若走雲端路線,多數雲端區塊儲存底層已有多副本容錯機制,通常不需要使用者自行組 RAID。
# 範例:用 mdadm 建立一組 RAID 10(需 4 顆磁碟 /dev/sdb ~ /dev/sde)
mdadm --create /dev/md0 --level=10 --raid-devices=4 \
/dev/sdb /dev/sdc /dev/sdd /dev/sde
cat /proc/mdstat
mkfs.ext4 /dev/md0
mount /dev/md0 /data
七、記憶體容量估算
記憶體不足時,最先受影響的通常是資料庫查詢速度與網站回應時間。估算時建議分開加總:作業系統與基礎服務(預留 1~2GB)、Web伺服器(依併發連線數與Worker數量估算)、資料庫緩衝區(如 MySQL 的 innodb_buffer_pool_size,建議設為資料量的 60~80%)、快取服務(Redis/Memcached,建議獨立配置避免與資料庫互搶記憶體)。
| 規模等級 | 建議記憶體 | 備註 |
|---|---|---|
| 小型 | 2~4GB | 單機部署 Web + DB,流量不高可共用 |
| 中型 | 8~16GB | 建議 DB 與 Web 分離,各自預留緩衝空間 |
| 大型 | 32GB 以上/台,依角色分層 | 資料庫主機通常需要遠高於應用主機的記憶體 |
八、資料庫規劃原則:安全、速度、好管理
不論自建或使用雲端代管資料庫服務(如 RDS、Cloud SQL、Azure SQL),以下三個原則都適用,能同時兼顧安全、效能與長期維護的方便性。
安全:最小權限+來源限制
- 依用途分帳號:應用程式用的讀寫帳號、報表用的唯讀帳號、管理員帳號分開,不共用同一組帳號,各自只給該用途真正需要的權限(最小權限原則)
- 限制可連入來源:只允許應用主機的內網 IP 連入,管理連線改走白名單 IP 或 VPN,資料庫連接埠不對外開放
- 敏感資料加密:連線層走 TLS 加密傳輸,靜態儲存的敏感欄位視需求加密
速度:索引、連線池、必要時讀寫分離
- 索引規劃:針對常用查詢條件建立索引,避免全表掃描;定期檢視慢查詢日誌找出效能瓶頸
- 連線池(Connection Pool):避免應用程式頻繁建立、斷開資料庫連線,用連線池重複利用既有連線
- 快取層:把高頻讀取、變動不大的資料放進 Redis 等快取,減少直接打資料庫的次數
- 讀寫分離:流量成長到一定規模後,可考慮主從架構,把讀取流量分散到唯讀副本,減輕主庫壓力
好管理:分權、留痕、版本控管
- 變更留痕:誰在什麼時間執行了什麼操作要能追溯,方便事後稽核與問題排查
- Schema 版本控管:資料庫結構異動透過 migration 工具管理,而不是手動改完就忘記記錄
- 備份與還原演練:與整體備份策略呼應,定期驗證備份真的可還原(詳見第十節)
九、容器化架構:測試站不必讓正式站停機
傳統做法是直接在正式環境上改版或整站停機部署,風險很高。用容器化(如 Docker)隔離測試環境,可以讓測試站與正式站分別跑在不同容器中,各自有獨立執行環境與資源限制,新增或重啟測試容器時,正式站完全不受干擾。
# 正式站,對外開放 80 埠
docker run -d --name web-prod --restart=always \
--memory=2g --cpus=2 -p 80:80 myapp:stable
# 測試站,只開放內部測試連接埠,不影響正式站
docker run -d --name web-staging \
--memory=1g --cpus=1 -p 8081:80 myapp:testing
# 測試確認沒問題後,再替換正式容器
docker stop web-prod && docker rm web-prod
docker run -d --name web-prod --restart=always \
--memory=2g --cpus=2 -p 80:80 myapp:stable
十、備份與還原方法
規劃時建議遵循3-2-1 原則:至少 3 份資料副本、存放在 2 種不同媒介、其中 1 份異地存放,避免單一事故讓所有備份一起遭殃。
常見備份方式比較| 備份方式 | 說明 | 適用情境 |
|---|---|---|
| 完整備份(Full) | 每次備份完整資料,還原速度快 | 資料量不大,或作為每週/每月基準備份 |
| 增量備份(Incremental) | 只備份有變動的部分,空間佔用小 | 資料量大、需要頻繁備份的環境 |
| 資料庫 Binlog/即時同步 | 記錄每筆異動,可還原到特定時間點 | 交易型網站,需縮短資料遺失範圍 |
| 系統快照(LVM/ZFS/雲端Snapshot) | 整個磁碟區塊的時間點快照,還原快 | 改版前的即時備援點 |
# 資料庫每日完整備份 + 保留7天
mysqldump -u backup_user -p --single-transaction dbname \
| gzip > /backup/db_$(date +%F).sql.gz
find /backup -name "db_*.sql.gz" -mtime +7 -delete
# 同步到異地儲存主機
rsync -avz --delete /backup/ user@offsite-server:/remote-backup/
# 還原演練:還原到獨立測試主機驗證
gunzip < /backup/db_2026-09-08.sql.gz | mysql -u root -p test_restore_db
十一、依情境快速對照表
安裝架構規劃一覽| 情境 | 路線 | RAID | 資料庫連線限制 | 備份策略 |
|---|---|---|---|---|
| 流量穩定、有維運能力 | 自建 | OS用RAID1,資料庫用RAID10 | 內網白名單,DB與Web主機分離 | 每日完整+異地保存 |
| 流量易暴增、活動檔期型 | 雲端 | 多由雲端服務商底層處理 | VPC內網+安全群組白名單 | 雲端快照+跨區備份 |
| 大型、多主機分散 | 自建或混合雲 | RAID10為主,多主機分散 | DB帳號分權、讀寫分離 | 增量備份+即時同步+定期演練 |
十二、伺服器安裝架構檢查清單(Cheat Sheet)
# 1. 判斷流量穩定度與團隊維運能力,決定走自建或雲端路線
# 2. 選定作業系統,以團隊熟悉度為優先,而非追求最新版本
# 3. 依網站規模抓硬體規格起始值(CPU、儲存、頻寬)
# 4. 自建路線:規劃防火牆規則、資料庫與應用主機分離、RAID等級
# 5. 雲端路線:確認彈性擴充與自動擴展設定,比較平台代管資料庫服務
# 6. 分項估算記憶體需求,預留緩衝空間
# 7. 資料庫依安全/速度/好管理三原則規劃帳號權限與連線限制
# 8. 測試環境優先評估容器化並設定資源限制
# 9. 訂出備份策略,符合3-2-1原則,並排定固定週期執行還原演練
十三、常見問題 FAQ
到底要怎麼判斷網站該自建還是上雲?
自建伺服器的防火牆規則該怎麼設比較安全?
資料庫使用者一定要分帳號嗎?共用一組管理員帳號比較方便不行嗎?
AWS、GCP、Azure 該怎麼選?
作業系統要選 Ubuntu、Debian 還是 Rocky/CentOS 系列?
上雲之後還需要自己規劃 RAID 嗎?
測試站一定要用容器隔離嗎?
RAID 可以取代備份嗎?
十四、小結
規劃網站伺服器架構應該從「網站定位與流量特性」開始判斷,先決定自建伺服器 vs 雲端主機走哪條路線,才進入作業系統、硬體規格、RAID、記憶體這些細節;資料庫則不論哪條路線,都要守住安全(最小權限、來源限制)、速度(索引、連線池、必要時讀寫分離)、好管理(分權、留痕、版本控管)三個原則。這份伺服器安裝教學希望能作為建置前的完整檢核依據。
測試環境建議用容器化隔離,讓改版測試不必整站停機;備份與還原則要被視為架構的一部分而非事後補救,RAID 與備份缺一不可,備份也必須定期演練還原才算真正可靠。把這個決策順序走一遍,架構的骨架才會穩,後續無論擴充硬體或調整策略,都能在既有基礎上延伸,而不必推翻重來。
本文為網站伺服器安裝架構的通用建議整理,實際硬體規格、RAID 等級、雲端平台選型與備份策略,仍建議依網站實際流量、預算與合規要求進行專業評估與調整。
