Ubuntu LNMP故障排查系統化流程
首先收集用戶反饋(如“網站無法訪問”“502 Bad Gateway”)和系統表現(如服務無法啟動、響應延遲),明確故障范圍(是單個服務異常還是整體架構問題),這是后續排查的基礎。
使用systemctl
命令逐一驗證LNMP核心服務是否正常運行:
sudo systemctl status nginx # 檢查Nginx狀態
sudo systemctl status mysql # 檢查MySQL/MariaDB狀態(根據實際服務名調整)
sudo systemctl status php7.x-fpm # 檢查PHP-FPM狀態(如php7.4-fpm、php8.1-fpm)
若服務未運行,使用sudo systemctl start <服務名>
啟動;若啟動失敗,需結合日志進一步分析。
日志是定位故障的“金鑰匙”,重點檢查以下日志的最新錯誤信息:
/var/log/nginx/error.log
(記錄HTTP請求錯誤、配置語法問題、端口沖突等);/var/log/php7.x-fpm.log
或/var/log/php-fpm/error.log
(記錄PHP代碼執行錯誤、FPM進程崩潰等);/var/log/mysql/error.log
(記錄數據庫連接失敗、查詢錯誤、權限問題等)。
使用tail -f <日志路徑>
實時查看最新錯誤動態,快速定位問題根源。配置文件錯誤是服務無法啟動的常見原因,使用以下命令檢查語法正確性:
sudo nginx -t # 檢查Nginx主配置文件(/etc/nginx/nginx.conf)及站點配置
sudo php-fpm -t # 檢查PHP-FPM配置文件(如/etc/php/7.x/fpm/php.ini、/etc/php/7.x/fpm/pool.d/www.conf)
sudo mysql --validate-config # 部分MySQL版本支持(或檢查mysqld.cnf語法)
若語法錯誤,修正后需重啟對應服務使更改生效(如sudo systemctl restart nginx
)。
端口沖突會導致服務無法監聽指定端口(如Nginx的80/443端口、MySQL的3306端口),使用以下命令檢查端口占用情況:
sudo netstat -tulnp | grep ':80' # 檢查80端口
sudo netstat -tulnp | grep ':3306' # 檢查3306端口
若端口被占用,通過ps -ef | grep <進程名>
找到占用進程,使用kill -9 <進程ID>
終止異常進程,再重啟服務。
資源瓶頸(如CPU滿載、內存耗盡、磁盤空間不足)會導致服務響應緩慢或崩潰,使用以下命令監控資源狀態:
top # 動態查看CPU、內存占用排名
free -h # 查看內存及交換分區使用情況
df -h # 查看磁盤空間使用情況
vmstat 1 5 # 查看虛擬內存、磁盤I/O統計(每秒1次,共5次)
iostat -x 1 5 # 查看磁盤I/O詳細情況(需安裝sysstat包)
若資源不足,需優化服務配置(如調整PHP-FPM進程數)、清理無用文件或升級服務器配置。
網絡問題是網站無法訪問的外部因素,需檢查以下內容:
ping 8.8.8.8
(測試是否能訪問外網);nslookup www.baidu.com
(測試域名解析是否正常);sudo ufw status
(確保允許HTTP(80)、HTTPS(443)、MySQL(3306)等端口流量);telnet <服務器IP> 80
測試端口是否可達。502 Bad Gateway(Nginx與PHP-FPM通信失?。?/strong>:
sudo systemctl status php7.x-fpm
);fastcgi_pass
指令指向PHP-FPM的正確監聽地址(如unix:/run/php/php7.4-fpm.sock
或127.0.0.1:9000
);listen
指令是否與Nginx配置一致。500 Internal Server Error(PHP代碼或配置錯誤):
/var/log/php7.x-fpm.log
),定位代碼中的語法錯誤(如缺少分號、括號不匹配);error_reporting(E_ALL); ini_set('display_errors', 1);
),便于調試。403 Forbidden(權限問題):
location
塊是否有deny
指令;www-data
)對網站根目錄有讀取權限(sudo chown -R www-data:www-data /var/www/html
)。過時的系統或軟件包可能存在安全漏洞或兼容性問題,定期更新:
sudo apt update # 更新軟件包列表
sudo apt upgrade # 升級所有可升級的軟件包
sudo apt dist-upgrade # 升級系統版本(可選)
若以上步驟無法解決問題,建議: