Discuz! X3.2 為騰訊旗下成熟社區系統,基於 PHP + MySQL。本文記錄 LNMP(Linux + Nginx + MySQL + PHP-FPM)環境下的完整安裝配置流程。
# /usr/local/nginx/conf/nginx.conf
user nginx;
worker_processes auto;
error_log logs/error.log info;
events {
worker_connections 1024;
}
http {
include mime.types;
server_tokens off;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
# 客戶端請求緩衝(防 400/414 錯誤)
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m; # 最大上傳 8MB
client_body_buffer_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
include vh/discuz.conf;
}
# /usr/local/nginx/conf/vh/discuz.conf
upstream discuz_backend {
server 127.0.0.1:9000;
# 健康檢查(需 nginx_upstream_check_module)
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
check_http_send "GET / HTTP/1.1\r\nHost:\r\n\r\n";
check_http_expect_alive http_2xx http_3xx http_4xx;
}
server {
listen 80;
server_name bbs.example.com;
index index.php index.html;
root /www/discuz;
access_log logs/discuz_access.log main;
error_log logs/discuz_error.log;
# 靜態資源直接服務
location ~* \.(jpg|jpeg|png|gif|js|css|ico|woff|woff2)$ {
root /www/discuz;
access_log off;
expires 30d;
}
# PHP 處理
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass discuz_backend;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
}
# Discuz 偽靜態(官方建議規則)
location / {
try_files $uri $uri/ /index.php?$args;
}
# 禁止訪問敏感目錄
location ~ /(config|data|uc_client/data|uc_server/data)/ {
deny all;
}
}
# 解壓 Discuz 安裝包 upload/ 目錄至 /www/discuz chown -R nginx:nginx /www/discuz chmod -R 755 /www/discuz # 寫入目錄需 777 或 nginx 可寫 chmod -R 777 /www/discuz/config /www/discuz/data /www/discuz/uc_client/data /www/discuz/uc_server/data
mysql -uroot -p CREATE DATABASE discuz DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER 'discuz'@'localhost' IDENTIFIED BY 'strong_password'; GRANT ALL PRIVILEGES ON discuz.* TO 'discuz'@'localhost'; FLUSH PRIVILEGES;
https://bbs.example.com/installinstall 目錄(或重命名)| 問題 | 原因 | 解決 |
|---|---|---|
| 安裝頁面空白/500 | PHP 錯誤未顯示 | 啟用 display_errors=On 或查看 error_log |
| 資料庫連線失敗 | 帳號/密碼/主機錯誤 | 驗證 mysql -udiscuz -p 可連線 |
| 目錄不可寫 | 權限/擁有者錯誤 | chown nginx:nginx + chmod 777 |
| 偽靜態不生效 | Nginx 規則缺失 | 確認 try_files $uri $uri/ /index.php?$args; |
| 上傳失敗 | client_max_body_size 過小 | 調整至 8m/20m |
gzip、expiresinnodb_buffer_pool_size 設為記憶體 70%pre_forum_thread 等大表碎片LNMP + Discuz 核心在於:Nginx 正確轉發 PHP、目錄權限給 nginx、資料庫 utf8mb4、偽靜態規則到位。安裝完成後務必刪除 install 目錄、修改預設管理員密碼、啟用 HTTPS。