Linux 伺服器架站與問題排除 從系統配置到網站維運實戰指南

me
林彥成
2021-07-07 | 4 min.
文章目錄
  1. 1. 如何在 Linux 伺服器上高效架設網站並排除問題?
  2. 2. 伺服器記憶體不足
  3. 3. 伺服器網路連線設定
  4. 4. 伺服器後端服務管理
  5. 5. 伺服器檔案權限設定
    1. 5.1. Permission denied while connecting to upstream
  6. 6. Linux 網頁中文顯示亂碼
  7. 7. FAQ:Linux 伺服器網站架設常見問題
    1. 7.1. Q1:我的伺服器記憶體常駐在 90% 以上,除了加大規格還有什麼解法?
    2. 7.2. Q2:為什麼 Nginx 反向代理設定正確,卻出現 502 Bad Gateway 或權限錯誤?
    3. 7.3. Q3:如何確保 Linux 上的網站資料不會因誤刪或故障而遺失?

如何在 Linux 伺服器上高效架設網站並排除問題?

實踐 Linux 伺服器網站架設 的核心在於系統資源的精確配置與網路安全設定。高品質的架站路徑包含:1. 系統優化:針對 伺服器記憶體優化,可透過建立 SWAP 檔案緩解卡頓;2. Nginx 配置教學:利用反向代理實現服務介接,並注意 SELinux 導致的權限報錯;3. Linux 網路設定:正確配置 UFW 防火牆與 Port 監聽(如 netstat 指令);4. 服務管理:利用 PM2 或 Forever 工具實現後端進程的自動重啟與監控。透過這套 DevOps 實戰 指南,您能有效解決網頁亂碼、連線超時等 網站問題排除 難點,確保網站穩定高效運行。


對於網站架設而言,Linux 伺服器是普遍推薦的選擇,其中 CentOS 或 Ubuntu 是常見的作業系統。最快的網站架設方式之一是安裝 Nginx 並配置前後端服務。

Nginx 不僅提供高效的反向代理功能,方便服務介接與路徑設定,也支援靜態網頁部署。本文將深入探討 Linux 伺服器網站架設的流程,並針對常見問題排除提供實用建議,如伺服器記憶體不足等狀況。

網站架設完畢,不管是地端或是雲端的Linux 伺服器後,您可能會遇到以下五個常見問題排除

  1. 伺服器記憶體不足
  2. 網路連線設定
  3. 後端服務管理
  4. 檔案權限設定
  5. 網頁中文顯示亂碼

伺服器記憶體不足

如果開了伺服器記憶體較小的機器,有時候會遇到記憶體較滿卡頓的情況,可以幫主機加上用硬碟空間的交換記憶體 swap,因為像前幾年小編使用 EC2 預設是沒有的。

  • tophtop 看一下是不是一直在交換
  • watch -n 1 free -m 只看記憶體
  1. 設定交換記憶體大小: sudo fallocate -l 2G /swapfile
  2. 設定檔案權限: sudo chmod 600 /swapfile
  3. 設定為交換記憶體: sudo mkswap /swapfile
  4. 啟用交換記憶體: sudo swapon /swapfile
  5. 修改系統設定: sudo nano /etc/fstab
1
2
3
# 在最後一行加入修改系統設定,讓下次重開機時也會生效
/swapfile none swap sw 0 0

伺服器網路連線設定

進行 Linux 伺服器 的網路連線設定時,應注意以下幾點以避免問題排除

  1. 防火牆設定: 會碰到這個一般是都弄好了,但怎麼都看不到網頁,若停用防火牆後以使用,代表防火牆需要設定

    • sudo ufw disable 停用
    • sudo ufw allow from 192.168.0.0/16 允許通過
  2. 連接埠 (Port) 的設定: 可能程式沒寫好錯誤處理,又剛好選到的 port 跟其他服務一樣。

    • 看一下目前這個 port 是不是有被使用: netstat -tulpn | grep LISTEN
    • 透過指令查看特殊 Port 的服務是否正常 telnet www.google.com 80
    • 模擬斷線: iptables -A OUTPUT -p TCP --dport {PORT} -j REJECT
  3. tcp timeout 設定: 預設值不一定適合,為了效能可以依照需求設定。

1
2
sudo sysctl -w net.ipv4.tcp_keepalive_time=110
sysctl -p
  1. somaxconn 數值設定: 也是調整效能用。
1
2
sysctl -w net.core.somaxconn=512
sysctl -p

伺服器後端服務管理

這裡以 Node.js 為例,建置時 NODE_ENV 設定為 production,網路上的大大測試看起來有差,為了提升效能也建議使用像是 express-redis-cache 這類的套件,如果是較為靜態的資料,就可以透過將資源短暫快取在記憶體中,減少對資料庫的負擔。

在遠端連接 Linux 伺服器 中通常不會有桌面,通常會需要註冊成系統服務或是使用 FOREVER, PM2 這類的監控工具,會是透過管理工具進行管理,Node.js 中常見的工具為 PM2。也因為 Node.js 是單線程,效能優化上最簡單就是透過 cluster mode (類似 Nginx 配合多核心的設定可以無痛升級效能)

常用的指令如下:

1
2
3
4
pm2 save
pm2 monit
pm2 ls
pm2 serve

伺服器檔案權限設定

Linux 伺服器 上的檔案權限管理是常見的問題排除環節。有時候會發現寫不進去或無法執行,全開的話就 chmod -R 777 ./*,不需要執行的話就 755,執行 (+X)。這裡可以看到三個數字,就是搭配在 linux 上使用指令 ls -l 看到三組的 rwx,其中 r=4 (讀),w=2 (寫),x=1 (執行)

UserGroupOther
764
rwxrwr
777
rwxrwxrwx

Permission denied while connecting to upstream

如果 Nginx 設置了 proxy_pass 卻沒有作用的時候,這時候可以透過 tail -f /var/log/nginx/*.log 指令來查看相關錯誤,如果發現 Permission denied while connecting to upstream,可能就是 SELinux 權限的問題排除,這時候如果只是需要先測試的話,可以

  1. 設定連接權限: setsebool httpd_can_network_connect on -P
  2. 查看是否設定成功:getsebool -a | grep httpd

Linux 網頁中文顯示亂碼

Linux 伺服器 上遇到網頁中文顯示亂碼,這時候通常是因為沒有安裝字型。Cent OS 的話可以嘗試以下指令:

  • locale: 看一下是不是 zh_TW

安裝字型,網路上有很多建議指令,各自都有成功或失敗,但都安裝一次到位最好:

  • yum -y install fonts-chinese
  • yum install m17n-db-common-cjk
  • yum install m17n-db-chinesesv
  • yum 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 的需求最小化權限,降低資安風險。