当前位置:首页>Linux>云服务器Rocky Linux 9.7搭建LNMP环境部署Discuz! X3.5/5.0

云服务器Rocky Linux 9.7搭建LNMP环境部署Discuz! X3.5/5.0

  • 2026-10-11 08:43:56
云服务器Rocky Linux 9.7搭建LNMP环境部署Discuz! X3.5/5.0
硬件环境
2核2GB,40G ESSD,3M带宽
Discuz! X5.0环境要求
项目名称

Discuz! 所需配置

Discuz! 推荐

操作系统

不限制

类Unix

PHP 版本

>= 8.0

8.1 - 8.5

MySQL 版本

>= MySQL 5.7/MariaDB 10.2

MySQL 8.0

其他事项:依赖 XML 扩展、 ZIP 扩展、Opcache 扩展、Redis 扩展、JSON 扩展、 GD 扩展 >= 1.0,如使用 MariaDB ,推荐版本为 >= 10.2
Discuz! X3.5环境要求
软件名称
最低要求
推荐版本
其他事项
PHP
>= 5.6.0
7.4 - 8.2
依赖 XML 扩展、 JSON 扩展、 GD 扩展 >= 1.0
MySQL
>= 5.5.3
8.0
如使用 MariaDB ,推荐版本为 >= 10.2
其他事项:依赖扩展同上
PS:X3.5如果是老版本升级上来的,PHP建议安装7.4,如果新安装可以PHP8.2。
       X5.0的PHP安装8.5当然是最好的,但是还得看你规划购买的模板和插件是否支持。
1、更新系统(软件补丁和内核)
dnf -y upgrade
2、内存和存储空间优化(如果自有服务器跳过)
内存优化,存储空间优化
3、关闭防火墙和selinux

①关闭防火墙

systemctl disable firewalld --nowsystemctl status firewalldsystemctl is-enabled firewalld

②关闭selinux

sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/configgrep "SELINUX=disabled" /etc/selinux/configsetenforce 0     # 不用重启,临时关闭

4、安装Nginx

使用官方YUM源安装(最新稳定版)

vim /etc/yum.repos.d/nginx.repo

# 添加以下代码并保存

[nginx-stable]name=nginx stable repobaseurl=https://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=1enabled=1gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true
dnf -y install nginx   # 安装nginx

启动服务,设置开机启动

systemctl start nginxsystemctl enable nginxsystemctl status nginx        # 查看服务状态systemctl is-enabled nginx    # 查看是否设置开机启动

查看版本

nginx -v

5、安装MySQL 8.0.43

安装官方YUM源

dnf -y install https://dev.mysql.com/get/mysql84-community-release-el9-3.noarch.rpm

查看已启用的MySQL YUM仓库

dnf repolist enabled | grep "mysql.*-community.*"

查看MySQL仓库

dnf repolist all | grep mysql

禁用LTS 8.4子仓库,启用MySQL8.0子仓库

dnf config-manager --disable mysql-8.4-lts-communitydnf config-manager --disable mysql-tools-8.4-lts-communitydnf config-manager --enable mysql80-communitydnf config-manager --enable mysql-tools-community

安装MySQL

dnf -y install mysql-community-server

启动MySQL服务

systemctl start mysqldsystemctl status mysqldsystemctl is-enabled mysqld

使用默认密码登录并修改密码

P=`awk '/temporary password/ {print $NF}' /var/log/mysqld.log`mysql -uroot -p$Pmysql> alter user 'root'@'localhost' identified by 'Mysql#8043';

创建Discuz! X5.0数据库

mysql> CREATE DATABASE discuzdb CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

创建用户并授权

mysql> CREATE USER 'discuzuser'@'localhost' IDENTIFIED BY 'Mysql#8043';mysql> GRANT ALL PRIVILEGES ON discuzdb.* TO 'discuzuser'@'localhost';mysql> flush privileges;mysql> exit;

性能优化

vim /etc/my.cnf

# 在[mysqld]项下添加以下参数

innodb_buffer_pool_size = 512M  # 默认128M,InnoDB缓冲池大小,4G以上内存建议为系统内存的40~60%innodb_log_file_size = 128M   # 默认48M,重做日志文件大小max_connections = 300         # 默认151,最大连接数

PS:还有很多参数需要大内存才有优化的必要,我这里系统内存才1.9G没法搞,并发量高的网站可以自行去研究设置。

重启MySQL服务生效

systemctl restart mysqld

6、安装Redis

使用官方YUM源安装(最新稳定版)

vim /etc/yum.repos.d/redis.repo

# 添加以下代码并保存

[Redis]name=Redisbaseurl=http://packages.redis.io/rpm/rockylinux9enabled=1gpgcheck=1

导入密钥并安装

curl -fsSL https://packages.redis.io/gpg > /tmp/redis.keyrpm --import /tmp/redis.keyyum -y install redis

启动服务并设置开机启动

systemctl start redissystemctl enable redissystemctl status redissystemctl is-enabled redis

7、安装PHP及扩展

查看所有可安装的php扩展

dnf list | grep php

# 如果要安装php8.0及相关扩展使用以下命令(系统源)

dnf -y install php php-fpm php-mysqlnd php-cli php-gd php-xml php-mbstring php-json php-curl php-zip php-intl php-common php-opcache php-bcmath php-pear php-devel php-redis

# 如果要安装php7.4~8.5及相关扩展使用以下命令(三方源)

安装epel和Remi仓库

dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpmdnf -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

查看可用的php模块

dnf module list php

重置并启用子仓库

dnf -y module reset phpdnf -y module enable php:remi-8.5  # 如果安装8.5执行此命令dnf -y module enable php:remi-7.4  # 如果安装7.4执行此命令

安装php及相关扩展

dnf -y install php php-fpm php-mysqlnd php-cli php-gd php-xml php-mbstring php-json php-curl php-zip php-intl php-common php-opcache php-bcmath php-pear php-devel php-redis

查看已安装的php软件包

rpm -qa | grep php

查看已安装的扩展

php -mphp -v  # 查看版本

启动PHP-FPM服务并设置开机自启

systemctl start php-fpmsystemctl enable php-fpm

如果Discuz! X5.0使用ImageMagick处理图片需要执行以下命令(软件依赖epel仓库,php-imagick扩展依赖remi仓库对应版本模块)

dnf -y install ImageMagick ImageMagick-libs ImageMagick-devel

dnf -y install php-imagick

8、配置php-fpm

vim /etc/php-fpm.d/www.conf

# 找到并修改以下代码

; 运行用户和组改为nginxuser = nginxgroup = nginx; 监听socketlisten = /run/php-fpm/www.socklisten.owner = nginxlisten.group = nginxlisten.mode = 0660

9、配置PHP

vim /etc/php.ini

# 找到并修改以下代码

memory_limit = 256Mupload_max_filesize = 50Mpost_max_size = 100Mmax_execution_time = 180max_input_time = 180disable_functions = exec,system,passthru,shell_exec,popen,pclose,proc_open,proc_get_status,proc_terminate,proc_close,pcntl_fork,pcntl_exec,pcntl_wait,pcntl_waitpid,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,dl,assert,create_function,chroot,chgrp,chown,link,symlink,readlink,show_source,highlight_file,parse_ini_file,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix_getppid,posix_getpwuid,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,posix_kill,posix_mkfifo

重启服务生效

systemctl reload php-fpm

10、配置nginx以使用php-fpm

先备份nginx默认配置文件

cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bakmv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak

vim /etc/nginx/nginx.conf

# 然后对照以下条目进行修改

user  nginx;worker_processes  auto;#worker_rlimit_nofile  65535;error_log  /var/log/nginx/error.log notice;pid        /run/nginx.pid;events {    worker_connections  1024;    use epoll;    multi_accept on;}http {    include       /etc/nginx/mime.types;    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  /var/log/nginx/access.log  main;    sendfile           on;    #tcp_nopush         on;    #tcp_nodelay        on;    keepalive_timeout  65;    #keepalive_requests 1000;    client_max_body_size 50M;    server_tokens      off;    gzip  on;    gzip_vary on;                 # 发送Vary: Accept-Encoding头    gzip_min_length 1k;           # 仅压缩大于1k的文件    gzip_buffers 4 16k;           # 压缩缓冲区大小(32 4k/16 8k),并发连接数*(number*size)    gzip_http_version 1.1;        # 支持的HTTP版本    gzip_comp_level 6;            # 压缩级别(1-9,越高压缩率越高,消耗CPU越多)    gzip_disable "MSIE [1-6]\.";  # 表示ie6及以下不启用gzip    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/svg+xml application/x-javascript text/mathml application/xhtml+xml application/atom+xml; # 需压缩的文件类型    include /etc/nginx/conf.d/*.conf;}

创建用Discuz的nginx配置文件

vim /etc/nginx/conf.d/discuz.conf

server {    listen       80;    listen       [::]:80;    server_name  _;  # 允许所有IP访问,修改为域名或IP    root         /usr/share/nginx/html;    index        index.php index.html index.htm;    # 日志配置    access_log /var/log/nginx/discuz-access.log;    error_log /var/log/nginx/discuz-error.log;    # php 处理    location ~ \.php$ {        fastcgi_pass  unix:/run/php-fpm/www.sock;        fastcgi_index index.php;        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;        include       fastcgi_params;        # 优化参数        #fastcgi_connect_timeout 300;        #fastcgi_send_timeout 300;        #fastcgi_read_timeout 300;        #fastcgi_buffer_size 64k;        #fastcgi_buffers 4 64k;        #fastcgi_busy_buffers_size 128k;        #fastcgi_temp_file_write_size 256k;    }    # 禁止访问隐藏文件 (如 .htaccess)    location ~ /\.ht {        deny all;    }    # 禁止目录遍历    location ~ \.\./ {        deny all;        return 403;    }    # Discuz!伪静态规则    location / {        try_files $uri $uri/ /index.php?$args;        # Rewrite 规则        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 ^([^\.]*)/blog-([0-9]+)-([0-9]+)\.html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;        rewrite ^([^\.]*)/archiver/(fid|tid)-([0-9]+)\.html$ $1/archiver/index.php?action=$2&value=$3 last;        if (!-e $request_filename) {	return 404;        }    }    # 静态文件缓存    location ~* \.(jpg|jpeg|png|bmp|gif|ico|webp|avif|css|js|woff|woff2|ttf|otf|eot|svg|swf|flv|mp4|mov|mp3)$ {        expires 30d;        add_header Cache-Control "public, max-age=2592000, immutable";    }    # 安全头    add_header X-Frame-Options "SAMEORIGIN" always;    add_header X-Content-Type-Options "nosniff" always;    add_header X-XSS-Protection "1; mode=block" always;}# 拒绝所有其它域名和IP访问server {    listen       80 default_server;    listen       [::]:80 default_server;    server_name  _;  # 匹配所有未指定的域名    return       403;  # 返回禁止访问状态码    # return     301 http://www.ideation.com.cn$request_uri;  # 或者重定向到域名}

测试nginx配置文件是否有错误

nginx -t

重启服务生效

systemctl restart nginx

11、验证PHP是否正常运行

# 创建测试文件

echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/info.php

浏览器访问http://服务器IP/info.php,若显示PHP信息页,则安装成功。

12、上传Discuz! X5.0程序

# 进入站点目录

cd /usr/share/nginx/html/

# 上传前将目录中文件删除或建立old文件夹将其移至其中

rm -rf *或者mkdir oldmv !(old) old

# 上传程序并解压

将Discuz_X5.0_20260410.zip上传至/usr/share/nginx/html/

unzip Discuz_X5.0_20260410.zip

# 将文件移至站点跟目录

mv upload/* ./

13、设置站点目录权限

chown -R nginx:nginx /usr/share/nginx/html

14、安装Discuz! X5.0

浏览器打开你的ip或域名跟着提示操作就OK

15、安装phpMyAdmin(可选项)

# 安装前需要设置如下几个目录权限(重点session目录权限)

ll /var/lib/phpdrwxrwx---. 2 root apache   6 11月 18 14:24 opcachedrwxr-xr-x. 2 root root   146  4月 23 12:30 peclxmldrwxrwx---. 2 root apache   6 11月 18 14:24 sessiondrwxrwx---. 2 root apache   6 11月 18 14:24 wsdlcache将apache改为nginxchown -R root:nginx /var/lib/php/sessionchown -R root:nginx /var/lib/php/opcachechown -R root:nginx /var/lib/php/wsdlcache

# 安装phpMyAdmin

dnf -y install epel-releasednf -y install phpmyadminln -s /usr/share/phpMyAdmin /usr/share/nginx/html/phpmyadmin

PS:创建的软链接建议改个名称,不然容易被别人猜到,影响安全性。

# 浏览器打开

http://xxxxx/phpmyadmin

16、Discuz! X5.0启用Redis

vim /usr/share/nginx/html/config/config_global.php

# 找到并修改如下代码

$_config['memory']['redis']['server'] = '127.0.0.1';$_config['memory']['redis']['port'] = 6379;

17、优化

可优化的项主要是Nginx、MySQL、PHP的内存和各种缓存参数设置,这些都需要物理大内存支持。不同的内存配置不同的参数值,所以有需求的自行研究吧!!!

PS:以上安装配置都是实际环境操作,全程无坑点。能保证小站点安全稳定的运行,中大站点得CPU和内存支持以及相关的Nginx、MySQL、PHP的内存和各种缓存参数设置优化。

最新文章

随机文章