記錄一次 CentOS 5.6 生產環境部署 LNMP(Linux + Nginx + MySQL + PHP)的完整流程,包含第三方源配置、套件安裝、Nginx 與 PHP-FPM 整合、權限問題排查、驗證測試,適合需在舊系統維護或重現舊環境的運維人員參考。
cat > /etc/yum.repos.d/alt.ru.repo << 'EOF'
[CentALT]
name=CentALT Packages for Enterprise Linux 5 - $basearch
baseurl=https://centos.alt.ru/repository/centos/5/$basearch/
enabled=1
gpgcheck=0
EOF
# 64位
rpm -Uvh https://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
# 32位
rpm -Uvh https://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
yum update
yum install nginx php-fpm php-cli php-pdo php-mysql php-mcrypt php-mbstring php-gd php-tidy php-xml php-xmlrpc php-pear php-eaccelerator
系統自動解析依賴,安裝 PHP 5.2.17 系列套件。
# 圖形界面:系統 → 管理 → 服務
# 或命令行
service nginx start
service php-fpm start
chkconfig nginx on
chkconfig php-fpm on
# 默認根目錄 /usr/share/nginx/html
echo "nginx ok" > /usr/share/nginx/html/test.html
curl https://127.0.0.1/test.html
# 瀏覽器訪問 https://IP/ 見到 Nginx 歡迎頁
# 找到並取消註釋以下區塊
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
關鍵修正:原配置 SCRIPT_FILENAME /scripts$fastcgi_script_name 路徑錯誤,導致 No input file specified。必須改為實際 Web 根目錄絕對路徑。
service nginx reload
cat > /usr/share/nginx/html/phpinfo.php << 'EOF'
EOF
curl https://127.0.0.1/phpinfo.php
# 或瀏覽器訪問
| 現象 | 原因 | 解決 |
|---|---|---|
| 下載 PHP 文件而非執行 | location ~ \.php$ 未生效 | 檢查 nginx.conf 語法、重載、路徑正確 |
| No input file specified | SCRIPT_FILENAME 路徑錯誤 | 改為 Web 根目錄絕對路徑 |
| Access denied | 目錄權限不足 | chmod 755 /usr/share/nginx/html -R(生產建議 755 + 正確擁有者) |
| 502 Bad Gateway | php-fpm 未啟動或端口不匹配 | service php-fpm status、檢查 fastcgi_pass 端口 |
在 phpinfo() 頁面搜尋 eAccelerator,確認版本、共享記憶體大小、快取命中率等信息顯示正常。
service mysqld start
chkconfig mysqld on
mysql -u root -p
# 建議執行 mysql_secure_installation 加固
本文記錄的是歷史版本部署流程,僅供遺留系統維護參考。新項目請務必選用現代、受支援的技術棧,安全與性能雙贏。