如何在 Linux 伺服器上高效架設網站並排除問題?
實踐 Linux 伺服器網站架設 的核心在於系統資源的精確配置與網路安全設定。高品質的架站路徑包含:1. 系統優化:針對 伺服器記憶體優化,可透過建立 SWAP 檔案緩解卡頓;2. Nginx 配置教學:利用反向代理實現服務介接,並注意 SELinux 導致的權限報錯;3. Linux 網路設定:正確配置 UFW 防火牆與 Port 監聽(如 netstat 指令);4. 服務管理:利用 PM2 或 Forever 工具實現後端進程的自動重啟與監控。透過這套 DevOps 實戰 指南,您能有效解決網頁亂碼、連線超時等 網站問題排除 難點,確保網站穩定高效運行。
對於網站架設而言,Linux 伺服器是普遍推薦的選擇,其中 CentOS 或 Ubuntu 是常見的作業系統。最快的網站架設方式之一是安裝 Nginx 並配置前後端服務。
Nginx 不僅提供高效的反向代理功能,方便服務介接與路徑設定,也支援靜態網頁部署。本文將深入探討 Linux 伺服器網站架設的流程,並針對常見問題排除提供實用建議,如伺服器記憶體不足等狀況。
在網站架設完畢,不管是地端或是雲端的Linux 伺服器後,您可能會遇到以下五個常見問題排除:
- 伺服器記憶體不足
- 網路連線設定
- 後端服務管理
- 檔案權限設定
- 網頁中文顯示亂碼
伺服器記憶體不足
如果開了伺服器記憶體較小的機器,有時候會遇到記憶體較滿卡頓的情況,可以幫主機加上用硬碟空間的交換記憶體 swap,因為像前幾年小編使用 EC2 預設是沒有的。
top或htop看一下是不是一直在交換watch -n 1 free -m只看記憶體
- 設定交換記憶體大小:
sudo fallocate -l 2G /swapfile - 設定檔案權限:
sudo chmod 600 /swapfile - 設定為交換記憶體:
sudo mkswap /swapfile - 啟用交換記憶體:
sudo swapon /swapfile - 修改系統設定:
sudo nano /etc/fstab
1 | # 在最後一行加入修改系統設定,讓下次重開機時也會生效 |
伺服器網路連線設定
進行 Linux 伺服器 的網路連線設定時,應注意以下幾點以避免問題排除:
防火牆設定: 會碰到這個一般是都弄好了,但怎麼都看不到網頁,若停用防火牆後以使用,代表防火牆需要設定。
sudo ufw disable停用sudo ufw allow from 192.168.0.0/16允許通過
連接埠 (Port) 的設定: 可能程式沒寫好錯誤處理,又剛好選到的 port 跟其他服務一樣。
- 看一下目前這個 port 是不是有被使用:
netstat -tulpn | grep LISTEN - 透過指令查看特殊 Port 的服務是否正常
telnet www.google.com 80 - 模擬斷線:
iptables -A OUTPUT -p TCP --dport {PORT} -j REJECT
- 看一下目前這個 port 是不是有被使用:
tcp timeout 設定: 預設值不一定適合,為了效能可以依照需求設定。
1 | sudo sysctl -w net.ipv4.tcp_keepalive_time=110 |
- somaxconn 數值設定: 也是調整效能用。
1 | sysctl -w net.core.somaxconn=512 |
伺服器後端服務管理
這裡以 Node.js 為例,建置時 NODE_ENV 設定為 production,網路上的大大測試看起來有差,為了提升效能也建議使用像是 express-redis-cache 這類的套件,如果是較為靜態的資料,就可以透過將資源短暫快取在記憶體中,減少對資料庫的負擔。
在遠端連接 Linux 伺服器 中通常不會有桌面,通常會需要註冊成系統服務或是使用 FOREVER, PM2 這類的監控工具,會是透過管理工具進行管理,Node.js 中常見的工具為 PM2。也因為 Node.js 是單線程,效能優化上最簡單就是透過 cluster mode (類似 Nginx 配合多核心的設定可以無痛升級效能)。
常用的指令如下:
1 | pm2 save |
伺服器檔案權限設定
在 Linux 伺服器 上的檔案權限管理是常見的問題排除環節。有時候會發現寫不進去或無法執行,全開的話就 chmod -R 777 ./*,不需要執行的話就 755,執行 (+X)。這裡可以看到三個數字,就是搭配在 linux 上使用指令 ls -l 看到三組的 rwx,其中 r=4 (讀),w=2 (寫),x=1 (執行)
| User | Group | Other |
|---|---|---|
| 7 | 6 | 4 |
| rwx | rw | r |
| 7 | 7 | 7 |
| rwx | rwx | rwx |
Permission denied while connecting to upstream
如果 Nginx 設置了 proxy_pass 卻沒有作用的時候,這時候可以透過 tail -f /var/log/nginx/*.log 指令來查看相關錯誤,如果發現 Permission denied while connecting to upstream,可能就是 SELinux 權限的問題排除,這時候如果只是需要先測試的話,可以
- 設定連接權限:
setsebool httpd_can_network_connect on -P - 查看是否設定成功:
getsebool -a | grep httpd
Linux 網頁中文顯示亂碼
在 Linux 伺服器 上遇到網頁中文顯示亂碼,這時候通常是因為沒有安裝字型。Cent OS 的話可以嘗試以下指令:
locale: 看一下是不是zh_TW
安裝字型,網路上有很多建議指令,各自都有成功或失敗,但都安裝一次到位最好:
yum -y install fonts-chineseyum install m17n-db-common-cjkyum install m17n-db-chinesesvyum groupinstall chinese-support
FAQ:Linux 伺服器網站架設常見問題
Q1:我的伺服器記憶體常駐在 90% 以上,除了加大規格還有什麼解法?
A:除了增加硬體資源,最實用的高品質方案是設定 SWAP 交換記憶體。這能讓硬碟空間擔任暫時的緩衝,防止系統崩潰。此外,應檢查是否有 JavaScript Memory Leak 或是未關閉的孤兒進程。對於 Node.js 應用,使用 PM2 進行監控並設定自動重啟策略也能有效維持系統穩定性。
Q2:為什麼 Nginx 反向代理設定正確,卻出現 502 Bad Gateway 或權限錯誤?
A:這在 CentOS 等系統中常與 SELinux 安全策略有關。如果日誌顯示 Permission denied while connecting to upstream,代表系統禁止了網頁伺服器建立網路連線。您可以透過 setsebool -P httpd_can_network_connect 1 指令開啟權限。另外,也應檢查目標後端服務是否真的在指定的 Port 正常運作。
Q3:如何確保 Linux 上的網站資料不會因誤刪或故障而遺失?
A:在 Linux 伺服器網站架設 流程中,備份與權限控管同等重要。建議定期備份關鍵目錄(如 /etc/nginx 與 Web Root),並將數據存儲於外部雲端空間(如 AWS S3)。同時,應嚴格執行檔案權限管理,避免使用 chmod 777,而是根據 User/Group 的需求最小化權限,降低資安風險。
