溫馨提示×

Ubuntu LNMP中如何進行故障排查

小樊
38
2025-10-13 22:39:27
欄目: 智能運維

Ubuntu LNMP故障排查系統化流程

1. 確定故障類型

首先收集用戶反饋(如“網站無法訪問”“502 Bad Gateway”)和系統表現(如服務無法啟動、響應延遲),明確故障范圍(是單個服務異常還是整體架構問題),這是后續排查的基礎。

2. 檢查服務運行狀態

使用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 <服務名>啟動;若啟動失敗,需結合日志進一步分析。

3. 分析關鍵日志文件

日志是定位故障的“金鑰匙”,重點檢查以下日志的最新錯誤信息:

  • Nginx錯誤日志/var/log/nginx/error.log(記錄HTTP請求錯誤、配置語法問題、端口沖突等);
  • PHP-FPM錯誤日志/var/log/php7.x-fpm.log/var/log/php-fpm/error.log(記錄PHP代碼執行錯誤、FPM進程崩潰等);
  • MySQL錯誤日志/var/log/mysql/error.log(記錄數據庫連接失敗、查詢錯誤、權限問題等)。 使用tail -f <日志路徑>實時查看最新錯誤動態,快速定位問題根源。

4. 驗證配置文件語法

配置文件錯誤是服務無法啟動的常見原因,使用以下命令檢查語法正確性:

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)。

5. 排查端口占用問題

端口沖突會導致服務無法監聽指定端口(如Nginx的80/443端口、MySQL的3306端口),使用以下命令檢查端口占用情況:

sudo netstat -tulnp | grep ':80'   # 檢查80端口
sudo netstat -tulnp | grep ':3306' # 檢查3306端口

若端口被占用,通過ps -ef | grep <進程名>找到占用進程,使用kill -9 <進程ID>終止異常進程,再重啟服務。

6. 檢查系統資源使用

資源瓶頸(如CPU滿載、內存耗盡、磁盤空間不足)會導致服務響應緩慢或崩潰,使用以下命令監控資源狀態:

top                          # 動態查看CPU、內存占用排名
free -h                      # 查看內存及交換分區使用情況
df -h                        # 查看磁盤空間使用情況
vmstat 1 5                   # 查看虛擬內存、磁盤I/O統計(每秒1次,共5次)
iostat -x 1 5                # 查看磁盤I/O詳細情況(需安裝sysstat包)

若資源不足,需優化服務配置(如調整PHP-FPM進程數)、清理無用文件或升級服務器配置。

7. 驗證網絡連通性

網絡問題是網站無法訪問的外部因素,需檢查以下內容:

  • 服務器網絡連通性ping 8.8.8.8(測試是否能訪問外網);
  • DNS解析nslookup www.baidu.com(測試域名解析是否正常);
  • 防火墻設置sudo ufw status(確保允許HTTP(80)、HTTPS(443)、MySQL(3306)等端口流量);
  • 外部訪問:從客戶端使用telnet <服務器IP> 80測試端口是否可達。

8. 處理常見特定錯誤

  • 502 Bad Gateway(Nginx與PHP-FPM通信失?。?/strong>:

    • 檢查PHP-FPM服務是否運行(sudo systemctl status php7.x-fpm);
    • 確認Nginx配置中的fastcgi_pass指令指向PHP-FPM的正確監聽地址(如unix:/run/php/php7.4-fpm.sock127.0.0.1:9000);
    • 檢查PHP-FPM配置中的listen指令是否與Nginx配置一致。
  • 500 Internal Server Error(PHP代碼或配置錯誤)

    • 查看PHP錯誤日志(/var/log/php7.x-fpm.log),定位代碼中的語法錯誤(如缺少分號、括號不匹配);
    • 開發環境中開啟錯誤顯示(在PHP文件頂部添加error_reporting(E_ALL); ini_set('display_errors', 1);),便于調試。
  • 403 Forbidden(權限問題)

    • 檢查Nginx配置中的location塊是否有deny指令;
    • 確保Nginx用戶(通常是www-data)對網站根目錄有讀取權限(sudo chown -R www-data:www-data /var/www/html)。

9. 更新系統與軟件包

過時的系統或軟件包可能存在安全漏洞或兼容性問題,定期更新:

sudo apt update              # 更新軟件包列表
sudo apt upgrade             # 升級所有可升級的軟件包
sudo apt dist-upgrade        # 升級系統版本(可選)

10. 尋求專業幫助

若以上步驟無法解決問題,建議:

  • 查閱LNMP官方文檔(如LNMP.org);
  • 在技術社區(如Stack Overflow、知乎)搜索類似問題;
  • 聯系服務器提供商或專業運維人員協助排查。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女