Azure帳號安全認證 香港伺服器搭建環境配置教學:一鍵安裝LNMP(Linux+Nginx+MySQL+PHP)
第一章:為什麼要在香港伺服器上搭建 LNMP
很多人把伺服器部署想得太複雜:要先想防火牆、再考慮路由、還要研究 Nginx 參數、最後才碰到資料庫與 PHP。其實,搭建 LNMP 的核心目標很單純——讓一台 Linux 機器能穩定地提供網站服務,並支援 PHP 動態頁。
選擇香港伺服器,主要考量是訪問延遲與合規成本。對面向港澳與華語用戶的站點來說,本地或區域網路通常能帶來更好的體驗。當然,延遲不是唯一因素,但它會在你剛上線、還沒做快取優化時特別明顯。
LNMP 是一套經典組合:Linux 作為作業系統底座,Nginx 作為高效的 Web 服務器,MySQL 作為關聯式資料庫,PHP 作為動態語言。用「一鍵安裝」的方式,你可以跳過大量繁瑣的安裝步驟,把時間留給更重要的配置:安全、效能與可維護性。
LNMP 的工作流程,你要先想清楚
當瀏覽器請求某個 URL 時:
1)Nginx 接收連線,負責靜態內容(圖片、CSS、JS)直接回應,或把 PHP 請求轉交給 PHP-FPM。
2)PHP-FPM 以快而穩的方式處理 PHP 程式,必要時再連 MySQL 查資料。
3)MySQL 專注資料讀寫,提供給 PHP 使用。
理解這個鏈條,你就能定位問題:是 Nginx 轉發出錯?PHP-FPM 沒啟動?還是資料庫連線權限不對?這比背一堆指令更重要。
第二章:部署前的準備清單(別跳過)
一鍵安裝能讓事情快,但「前置條件」仍然要確保正確。否則你會遇到:安裝完成卻無法訪問、PHP 解析失敗、資料庫不安全或無法遠程連線。
1. 伺服器與系統
通常你會使用 VPS 或雲主機。建議選擇常見的 Linux 發行版,如 Ubuntu、Debian 或 CentOS 系列。不同系統在軟件包管理與路徑上可能略有差異,但 LNMP 的概念一致。
安裝前確認:
- 系統版本穩定、更新到相對新的內核(不必最新到追求風險)。
- 具備 sudo 權限或可用 root 登入。
- 防火牆策略清晰(至少 80/443、以及 SSH 端口需要通)。
2. 網路與 DNS
你至少要確定:
- 伺服器的公網 IP。
- 域名解析是否指向該 IP。
- 若你準備 HTTPS,需要有效的證書策略(可用自動簽發或手動)。
如果你的網站只是測試,也可以先用 IP 訪問,後續再配置域名與 HTTPS。
3. 安全的基本姿勢
一鍵安裝通常不會為你的業務安全「定製」。因此你要做幾件基本事:
- 修改預設的 SSH 端口(可選,但建議)。
- 禁用 root 的直接遠端登錄(如果你有管理習慣)。
- 限制 MySQL 的外網訪問(大多數情境下不需要對外開放)。
- Azure帳號安全認證 為 Nginx 與 MySQL 設定合理的帳號與權限。
Azure帳號安全認證 第三章:一鍵安裝 LNMP 的核心思路(你要會看,不只是跑)
所謂「一鍵安裝」,通常是某個腳本或面板提供的自動化流程:它會下載安裝所需的軟件包,配置 Nginx 虛擬主機、啟動 PHP-FPM,並初始化 MySQL(或建立資料庫與用戶)。
你要做的不是盲跑,而是至少掌握安裝腳本在做什麼:
- 安裝路徑:Nginx、PHP、PHP-FPM、PHP 擴展安裝到哪。
- 服務啟動方式:systemd 服務還是手動啟動。
- 配置檔位置:nginx.conf、站點配置檔、php.ini。
- 資料庫初始策略:root 密碼、是否允許遠端連線、是否建立示例資料庫。
你該準備的操作步驟(概念版)
以下用「概念版」描述,讓你把流程對上:你實際執行時,請依你使用的一鍵安裝工具或腳本的提示填入參數。
1)登入伺服器。
2)更新系統套件(可選但建議)。
3)下載或上傳一鍵安裝腳本。
4)確認執行權限,執行安裝。
5)在安裝過程中設定:域名或站點名稱、MySQL root 密碼、PHP 版本或擴展。
6)安裝完成後,檢查服務是否啟動:Nginx、PHP-FPM、MySQL。
7)用瀏覽器或命令行測試:靜態頁、PHP 測試頁、資料庫連線。
第四章:開始部署——從安裝到可訪問網站
步驟 1:安裝完成後先檢查服務狀態
一鍵安裝完成後,你不要急著上傳網站,而是先驗證「三件事」:Nginx 在不在、PHP-FPM 在不在、MySQL 在不在。
常見狀況是:腳本顯示安裝成功,但某些服務因為端口衝突或配置錯誤沒有真正啟動。這時候你會看到連線被拒絕或 502/504。
檢查方向:
- Nginx 是否監聽 80/443。
- PHP-FPM 監聽的是 socket 還是 TCP 端口,Nginx 是否正確指向。
- Azure帳號安全認證 MySQL 是否在本機可連線,且 root 密碼可用。
Azure帳號安全認證 步驟 2:Nginx 站點目錄與基本頁面
Nginx 的站點目錄通常在 /var/www 或 /usr/share/nginx/html 之類位置。你可以把一個簡單的 index.html 放進去測試。
當你訪問 http://你的IP 或 http://你的網域:
- 如果能顯示 index.html,代表 Nginx 的站點配置與權限大致正常。
- 如果連靜態都不顯示,先不要處理 PHP,回頭看 Nginx 設定與防火牆。
步驟 3:PHP 測試頁,確認 Nginx 解析 PHP
建立一個簡單的測試檔,例如放在站點目錄下的 phpinfo.php,內容是 。你訪問該頁面,如果能看到 PHP 版本與配置資訊,代表 PHP-FPM 與 Nginx 轉發是正常的。
若出現以下情況:
- 404:多半是檔案放錯目錄或站點根目錄配置不對。
- 502 Bad Gateway:常見是 PHP-FPM 服務未啟動或 Nginx 的 upstream 指向錯誤。
- 解析成下載或顯示 PHP 原始碼:Nginx 未正確設置 location ~ \.php$ 的處理規則。
你可以依照錯誤快速定位:502 優先查 PHP-FPM;解析錯誤優先查 Nginx 的 location。
第五章:配置 MySQL——安全、權限與常見坑
MySQL 是很多線上故障的根源之一:不是資料庫本身壞,而是權限、連線方式、字符集與配置沒有規範好。
1. 設定 root 密碼與避免不必要的遠端連線
若你不需要讓外部(非伺服器內部)直接連 MySQL,應該避免把 MySQL 端口對外開放。即使你開了,也要限制來源 IP,並考慮防火牆策略。
更好的做法是:Web 服務只在本機或內網連 MySQL;外部管理透過安全通道(例如堡壘機、VPN、或 SSH 隧道)。
2. 建立業務帳號,不要所有應用都用 root
如果你的網站是某個 CMS 或自研系統,應該為它建立獨立的資料庫與資料庫帳號。
Azure帳號安全認證 理由很實際:
- 權限可控:即使某個程式有 SQL 注入漏洞,破壞範圍也被縮小。
- 可追溯:你能知道是哪個應用產生了哪些查詢。
- 方便維護:重置某個應用的密碼不影響其他系統。
3. 字符集與排序規則別亂來
中文站很常遇到亂碼或排序不一致。根本原因通常是資料庫或連線的字符集設定不一致。
你需要確保至少符合:
- Azure帳號安全認證 資料庫使用 utf8mb4(如果你的 MySQL 版本支援)。
- 連線字元集與校對(collation)一致。
- PHP 的資料庫連線也使用同樣的字符集。
這一塊通常不是「裝好就好」,而是「一開始就設正確」。後期修正會更痛。
第六章:PHP-FPM 與常用性能調校
只要能跑起來就行?不,當訪問量上來、或你開始接入較重的業務(例如檔案上傳、複雜查詢),你會發現性能調校的重要。
1. 設定 PHP 版本與擴展
一鍵安裝通常允許你選擇 PHP 版本,或安裝常見擴展(如 mysqli、pdo、curl、gd)。你應該根據應用需求確認擴展是否齊全。
常見缺失帶來的現象:
- 應用提示缺 curl 或 gd:圖像處理或外部 API 呼叫失敗。
- 使用 PDO 相關功能卻沒有 pdo_mysql:資料庫存取失效。
- 上傳圖片失敗但不明原因:gd 或相關權限不對。
2. PHP-FPM 的核心參數:pm、max_children、memory
PHP-FPM 的配置直接影響並發能力與資源占用。你不一定要理解每個參數,但你要知道調的方向:
- max_children 太小:高峰會排隊,回應變慢。
- max_children 太大:佔用記憶體,導致系統不穩或 OOM。
- pm.max_requests:能避免長時間運行導致的記憶體碎片或偶發問題。
建議你先用系統資源做估算:例如伺服器內存是 2GB、4GB 或 8GB。然後從保守值開始,觀察後再調。
3. Nginx 與 PHP 的協作:避免 502/504
如果你看到:
- 502:多半是 PHP-FPM 沒起來或過載導致 upstream 錯誤。
- 504:通常是請求超時,PHP 處理時間超出設置。
你可以優先檢查 PHP-FPM 的狀態與日誌,確認是否有「進程耗盡」或「連線超時」。同時也要看 Nginx 的 fastcgi_* 超時設定。
第七章:導入域名、HTTPS 與基本安全加固
當網站可以用 IP 訪問後,你就該把域名與 HTTPS 接上,這對信任與 SEO 都很重要。
1. Nginx 配置域名與虛擬主機
準備一個 server block,填入你的 server_name 與根目錄。確保:
- 80 端口用於重定向到 443(若你啟用 HTTPS)。
- 443 端口使用你的憑證文件。
- location 設置正確處理 .php。
Azure帳號安全認證 2. HTTPS:憑證自動簽發或手動部署
一鍵安裝工具可能包含證書腳本或整合能力。你需要確保:
- DNS 記錄正確指向伺服器。
- 開放 80 或使用正確的驗證方式。
- 憑證更新策略可用(到期可自動更新)。
如果你只想先測試,可先不開 HTTPS。等流程穩定後再補上。
3. 基本安全:限制不該被公開的路徑
Azure帳號安全認證 常見被掃描的目標包括:
- 後台登入頁(若你有管理系統)。
- 上傳目錄(可能包含殘留的測試文件)。
- .env、.git 等敏感檔。
你可以用 Nginx 或應用層規則拒絕不必要的訪問,並確保目錄權限符合最低原則。
第八章:上線前的驗證清單(把問題在上線前消掉)
很多人上線後才修,因為先前沒有做「硬性驗證」。建議你用以下清單逐項勾選。
1. Web 層
- 訪問根目錄(靜態頁)正常顯示。
- 訪問 php 測試頁顯示正確。
- 應用首頁、登入、上傳等關鍵功能可用。
2. 程式與資料庫層
- 應用可連線 MySQL,且使用正確資料庫名與帳號。
- 字符集不導致中文亂碼。
- 能正常執行寫入(至少一次插入/更新)。
3. 性能與穩定性
- 並發訪問不會大量出現 502/504。
- 日誌沒有持續報錯(Nginx error log、PHP-FPM log、MySQL log)。
- 系統資源在正常範圍內(CPU/內存不會常駐飆高)。
第九章:常見錯誤排查(你真正會用到)
遇到問題時,你要有一套排查順序。否則每次都從頭猜,效率會很差。
情況一:網站連不上(timeout / connection refused)
優先查:
- 防火牆是否允許 80/443(以及 SSH 端口)。
- Nginx 是否啟動、是否監聽正確端口。
- 雲端安全組策略是否放行。
情況二:502 Bad Gateway
優先查:
- PHP-FPM 是否啟動。
- Nginx upstream 與 PHP-FPM 監聽地址是否一致(socket 或 IP:port)。
- PHP-FPM 是否因配置錯誤或資源耗盡而重啟失敗。
你可以快速用日誌縮小範圍:Nginx error log 通常會告訴你 upstream 失敗原因。
情況三:404(PHP 路徑存在但顯示找不到)
優先查:
- php 檔是否放在正確站點目錄。
- root/alias 是否設定正確。
- Azure帳號安全認證 location 規則是否被覆蓋或寫錯。
情況四:PHP 下載下來或顯示原始碼
優先查:
- Nginx 的 location ~ \.php$ 是否存在且指向 fastcgi_pass。
- fastcgi_param SCRIPT_FILENAME 是否正確拼接。
情況五:資料庫連線失敗或報錯
優先查:
- 應用配置的資料庫主機名(通常應該是 127.0.0.1 或 localhost)。
- 資料庫帳號與密碼是否正確。
- MySQL 權限是否允許該帳號對指定資料庫的操作。
- Azure帳號安全認證 字符集與連線選項是否符合預期。
第十章:日常運維與升級建議(讓它長久穩)
LNMP 不是「裝一次就永遠不碰」。你需要保持基本運維節奏,才能讓站點在一年後仍然穩定。
1. 定期更新與重啟策略
定期更新系統安全補丁、Nginx、PHP、MySQL。更新後最好重啟或重新載入服務,避免使用老版本的漏洞。
2. 監控:不要等到爆炸才看
你至少要關注:
- CPU、內存、磁碟使用率。
- 網路流量與連線數。
- Nginx error log 與 PHP-FPM 異常重啟。
- MySQL 慢查詢與錯誤。
3. 備份:可恢復才算備份
備份不只要「有檔」,還要能「恢復」。建議做:
- 資料庫定期匯出或物理備份。
- 站點程式與上傳檔案版本化或同步備份。
- 定期測試還原流程。
Azure帳號安全認證 結語:把一鍵安裝當作起點,而不是終點
一鍵安裝 LNMP 的價值,是讓你在較短時間內完成可用環境:Nginx 能回應、PHP 能跑、MySQL 能存取。真正拉開差距的,是你在安裝後做的配置與驗證:安全策略、字符集一致性、日誌監控、以及對常見錯誤的排查順序。
當你下一次要部署新站,你會發現流程變得很快:你不再從零猜,而是按檢查清單逐步確認。這才是「工程化」的體感:穩、快、可維護。
如果你願意,我也可以根據你的伺服器系統版本(Ubuntu/Debian/CentOS)、預計網站類型(WordPress、Laravel、自研 PHP 程式)與是否需要 HTTPS,幫你把配置項目列成更貼近實際的部署清單。

