首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

LNMP 環境下 Discuz 論壇安裝配置完整教程

     編輯:PHP 相關知識

LNMP 環境下 Discuz 論壇安裝配置完整教程

Discuz! X3.2 為騰訊旗下成熟社區系統,基於 PHP + MySQL。本文記錄 LNMP(Linux + Nginx + MySQL + PHP-FPM)環境下的完整安裝配置流程。

一、Nginx 配置優化

# /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;

五、Web 安裝向導

  1. 瀏覽器訪問 https://bbs.example.com/install
  2. 檢查環境:PHP 版本、擴展、目錄權限、資料庫連線
  3. 填寫資料庫資訊、管理員帳號、站點資訊
  4. 完成安裝,刪除 install 目錄(或重命名)

六、常見問題排查

問題原因解決
安裝頁面空白/500PHP 錯誤未顯示啟用 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

七、性能優化建議

  • 啟用 OPcache(PHP 5.5+ 內建)
  • 配置 Redis/Memcached 做 Session 與資料快取(Discuz 後台可設定)
  • 靜態資源走 CDN,Nginx 開啟 gzip、expires
  • 資料庫:InnoDB innodb_buffer_pool_size 設為記憶體 70%
  • 定期清理 pre_forum_thread 等大表碎片

總結

LNMP + Discuz 核心在於:Nginx 正確轉發 PHP、目錄權限給 nginx、資料庫 utf8mb4、偽靜態規則到位。安裝完成後務必刪除 install 目錄、修改預設管理員密碼、啟用 HTTPS。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved