本教程基於 Debian/Ubuntu 系統,通過 apt 包管理器分步安裝配置 Nginx、MySQL、PHP-FPM、phpMyAdmin,構建生產級 LNMP 環境,並講解虛擬主機配置、偽靜態規則、常見問題排查。
# 安裝服務端與客戶端
apt-get update
apt-get install -y mysql-server mysql-client
# 安全初始化(設置 root 密碼、移除匿名用戶、禁止 root 遠程登錄、移除測試庫)
mysql_secure_installation
apt-get install -y php5-fpm php5-gd php5-mysql php5-memcache php5-curl
# 安裝 Memcached 服務端
apt-get install -y memcached
# 驗證 PHP 版本
php5-fpm -v
apt-get install -y nginx-full
service nginx start
vim /etc/nginx/sites-available/default
# 在 server 塊中添加/修改 location ~ \.php$ 塊
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# 注意:php.ini 中需設置 cgi.fix_pathinfo = 0
fastcgi_pass unix:/var/run/php5-fpm.sock; # 使用 Unix Socket,性能優於 TCP
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 關鍵參數
}
service nginx restart
vim /usr/share/nginx/html/phpinfo.php
<?php phpinfo(); ?>
瀏覽器訪問 https://IP/phpinfo.php,出現 PHP 信息頁即成功。
cd /etc/nginx/conf.d
vim yourdomain.com.conf
server {
listen 80;
root /usr/share/nginx/html/yourdomain.com;
index index.php index.html index.htm;
server_name yourdomain.com www.yourdomain.com;
# WordPress 偽靜態
include wordpress.conf;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
service nginx reload
apt-get install -y phpmyadmin
# 安裝過程選擇 nginx(空格選中),配置資料庫選 Yes,設置登錄密碼
# 軟鏈接到站點目錄
ln -s /usr/share/phpmyadmin /usr/share/nginx/html/yourdomain.com/phpmyadmin
location / {
try_files $uri $uri/ /index.php?$args;
}
rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;
rewrite ^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last;
rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;
rewrite ^([^\.]*)/([a-z]+)-(.+)\.html$ $1/$2.php?rewrite=$3 last;
if (!-e $request_filename) { return 404; }
/etc/php5/fpm/pool.d/www.conf 調整 pm.max_children、pm.start_servers、pm.max_requestsfastcgi_cache、proxy_cache、靜態資源 expires| 現象 | 可能原因 | 解決 |
|---|---|---|
| 502 Bad Gateway | PHP-FPM 未啟動/ Sock 文件路徑錯誤/ 權限不足 | service php5-fpm status; 檢查 fastcgi_pass 路徑; chown www-data:www-data /var/run/php5-fpm.sock |
| File not found | SCRIPT_FILENAME 參數缺失/錯誤 | 確保 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; |
| 權限拒絕 | 目錄/文件擁有者非 www-data | chown -R www-data:www-data /usr/share/nginx/html/ |
| 上傳大文件失敗 | client_max_body_size / upload_max_filesize / post_max_size 過小 | Nginx: client_max_body_size 100M; PHP: upload_max_filesize=100M post_max_size=100M |