在 Nginx + PHP-FPM 架構下部署 phpMyAdmin,需正確配置 Nginx 虛擬主機、PHP Session 路徑、phpMyAdmin 配置文件及性能優化。本文提供生產級部署步驟。
mysqli、mbstring、session 擴展phpMyAdmin 依賴 Session,默認存儲路徑需可寫且權限正確。
# 1. 檢查 php.ini grep session.save_path /etc/php.ini # 應為: session.save_path = "/var/lib/php/session" # 2. 目錄存在性與權限 ls -ld /var/lib/php/session # 不存在則創建 mkdir -p /var/lib/php/session chown nginx:nginx /var/lib/php/session -R chmod 700 /var/lib/php/session # 3. 重載 PHP-FPM systemctl reload php-fpm
# 官網下載 all-languages 版 (含中文) wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.zip unzip phpMyAdmin-5.2.1-all-languages.zip mv phpMyAdmin-5.2.1-all-languages /www/phpmyadmin # 複製配置模板 cd /www/phpmyadmin cp config.sample.inc.php config.inc.php
四、Nginx 虛擬主機配置
# 創建 /etc/nginx/conf.d/phpmyadmin.conf server { listen 8081; # 或 443 ssl server_name pma.yourdomain.com; # 建議獨立域名 root /www/phpmyadmin; index index.php index.html; access_log /var/log/nginx/phpmyadmin_access.log main; error_log /var/log/nginx/phpmyadmin_error.log; location / { try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; # 或 127.0.0.1:9000 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param HTTPS on; # 若用 SSL } location ~ /\.ht { deny all; } # 靜態資源緩存 location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 30d; add_header Cache-Control "public, no-transform"; } # 安全:隱藏版本號、限制訪問 IP (可選) # allow 192.168.1.0/24; deny all; }五、重載 Nginx 並驗證
nginx -t && systemctl reload nginx # 訪問 https://your-server:8081/ 或 https://pma.yourdomain.com/六、解決 phpMyAdmin 4.x+ 加載極慢問題
原因: 版本檢查機制嘗試連接
www.phpmyadmin.net獲取version.json,國內訪問極慢或超時,導致頁面阻塞。解決: 禁用版本檢查。
# 編輯 libraries/classes/VersionCheck.php (或較舊版本的 version_check.php) # 找到 checkVersion() 方法,直接返回 false 或註釋網絡請求代碼 # 簡單暴力修改 (以 4.1 為例): sed -i "s/if (isset(\$_SESSION\['cache'\]\['version_check'\]))/if (false \&\& isset(\$_SESSION['cache']['version_check']))/" libraries/version_check.php # 或直接註釋 else 分支中的 file_get_contents/curl 請求修改後 phpMyAdmin 秒開,不再卡頓。
七、安全加固建議
pma_x7k9/)。allow/deny 或 PHP 入口判斷 $_SERVER['REMOTE_ADDR']。核心步驟:Session 目錄權限 → phpMyAdmin 解壓配置 blowfish_secret → Nginx fastcgi_pass 指向 PHP-FPM → 禁用版本檢查 → 安全加固。按此流程部署,穩定、快速、安全。