(自用)LNMP-Redis-Discuz5.0部署指南-openEuler24.03-测试环境

LNMP + Redis 部署 Discuz 5.0X 指南

测试环境部署指南

  • 操作系统:openEuler 24.03
  • Web 服务器:Nginx
  • 数据库:MySQL Server
  • PHP 版本:PHP + PHP-FPM
  • 缓存服务:Redis
  • 论坛系统:Discuz! X 5.0

文档说明

本指南基于 测试环境 编写,提供在 openEuler 24.03 操作系统上快速部署 LNMP + Redis + Discuz 5.0 的完整操作步骤。

前提条件

  • openEuler 24.03 系统(已安装基础环境)
  • 具有 root 权限
  • 可访问互联网(用于 yum 安装软件包)

测试环境说明

  • 本指南为测试环境部署,不涉及生产环境的安全加固
  • 防火墙和 SELinux 配置已省略
  • 开机自启配置为可选项目

一、系统准备

1.1 设置主机名

bash 复制代码
hostnamectl set-hostname lnmp && bash

执行后,主机名将从默认名称更改为 lnmp,并自动刷新当前 shell 会话。

说明&& bash 表示设置完主机名后立即启动一个新的 bash shell,使新主机名在当前终端生效。如果不起作用,可以手动执行 bash 或重新登录系统。


二、安装 LNMP 环境

2.1 安装软件包

使用 yum(dnf)安装 Nginx、MySQL、PHP 及相关组件:

bash 复制代码
yum install -y lrzsz mysql-server nginx redis php php-fpm php-mysqlnd php-xml

注意:openEuler 24.03 默认使用 dnf 包管理器,yum 命令会自动转发到 dnf,两者等效。

2.2 安装说明

软件包 说明
mysql-server MySQL 数据库服务器(openEuler 24.03 自带 MySQL 8.0)
nginx Web 服务器
php PHP 解释器
php-fpm PHP FastCGI 进程管理器
php-mysqlnd MySQL Native Driver(PHP MySQL 驱动)
php-xml PHP XML 扩展
redis Redis 服务器
lrzsz 文件传输工具(支持 rz/sz 拖拽上传)

2.3 验证安装

bash 复制代码
# 查看已安装的软件版本
nginx -v
php -v
mysql --version
redis-server --version

三、启动服务

3.1 启动 Nginx 和 PHP-FPM

bash 复制代码
systemctl start nginx php-fpm

3.2 验证服务状态

检查 Nginx 进程:

bash 复制代码
netstat -anptu | grep nginx

输出示例:

复制代码
tcp  0  0  0.0.0.0:80  0.0.0.0:*  LISTEN  1234/nginx: master

检查 PHP-FPM 进程:

bash 复制代码
ps aux | grep php-fpm

四、环境验证

4.1 创建 phpinfo 测试页面

bash 复制代码
cd /usr/share/nginx/html/
rm -rf *
vim index.php

index.php 内容:

php 复制代码
<?php
phpinfo();
?>

保存文件后,通过浏览器访问 http://服务器IP/index.php,应显示 PHP 信息页面。

4.2 创建 MySQL 连接测试页面

/usr/share/nginx/html/ 目录下创建 mysql_con.php

bash 复制代码
vim mysql_con.php

mysql_con.php 内容:

php 复制代码
<?php
$servername = "localhost";
$username = "root";
$password = "";

// 创建连接
$conn = new mysqli($servername, $username, $password);

// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "MySQL 连接成功!";
echo "<br>MySQL 版本: " . mysqli_get_server_info($conn);
?>

保存后,通过浏览器访问 http://服务器IP/mysql_con.php,应显示 "MySQL 连接成功!" 及版本信息。


五、部署 Discuz 5.0

5.1 启动 MySQL 服务

bash 复制代码
systemctl start mysqld

5.2 上传 Discuz 安装包

使用 rz 命令或拖拽上传 upload.zip 安装包到 /usr/share/nginx/html/ 目录。

5.3 解压安装包

bash 复制代码
cd /usr/share/nginx/html/
unzip upload.zip

5.4 进入 Discuz 目录

bash 复制代码
cd /usr/share/nginx/html/upload

注意:具体目录名称取决于安装包的版本,解压后请确认目录结构。


六、Web 安装向导

6.1 设置目录权限(具体权限看安装包的版本,5.0可省略此步)

首先查看 PHP-FPM 运行用户:

bash 复制代码
ps aux | grep php-fpm

输出示例(通常为 apache 用户):

复制代码
root  1234  0.0  0.2  ...  php-fpm: master process
apache  1235  0.0  0.1  ...  php-fpm: pool www
apache  1236  0.0  0.1  ...  php-fpm: pool www

设置目录权限:

bash 复制代码
chown apache:apache ./ -R

6.2 执行安装

  1. 打开浏览器,访问:http://服务器IP/upload/install/
  2. 按照安装向导逐步操作:
    • 阅读并同意许可协议
    • 环境检测(应全部通过)
    • 配置数据库信息(库名、管理员密码等)
    • 设置论坛管理员账户和密码
  3. 安装完成后,修改管理员密码等信息

6.3 安装向导详细说明

步骤 1:许可协议

直接点击"我同意"继续。

步骤 2:环境检测

系统会自动检测以下项目,确保全部显示绿色通过:

检测项 要求
PHP 版本 PHP 8.0+
MySQL 连接 可用
目录权限 可写
PHP 扩展 xml、mysqlnd、gd 等
步骤 3:数据库配置
配置项 示例值 说明
数据库服务器 localhost 本机安装保持默认
数据库端口 3306 默认端口
数据库名 cz 自定义,建议简短
数据库用户名 root 测试环境可用 root
数据库密码 测试环境 root 默认无密码
表前缀 pre_ 建议保持默认
步骤 4:管理员设置
配置项 说明
管理员账号 自定义,默认 admin
管理员密码 设置强密码
管理员邮箱 填写有效邮箱
步骤 5:完成安装

安装成功后,系统会提示删除 install 目录(测试环境可忽略)。

提示 :安装完成后,可通过 http://服务器IP/upload/ 访问论坛前台,通过 http://服务器IP/upload/admin.php 访问后台管理中心。


七、验证安装

7.1 检查配置文件

bash 复制代码
cd /usr/share/nginx/html/upload/config
vim config_global.php

说明:所有在网页上修改的配置内容都会保存在此文件中。

7.2 数据库验证

在服务器上登录 MySQL,验证论坛数据是否正确写入:

bash 复制代码
mysql -u root -p
sql 复制代码
USE cz;  -- 库名与安装时设置的库名一致
SHOW TABLES;  -- 显示论坛数据表
SELECT * FROM pre_common_member;  -- 查看注册用户列表
SELECT * FROM pre_common_member\G;  -- 以详细格式查看用户信息

7.3 用户注册测试

  1. 在论坛前台页面注册一个新账号
  2. 返回 MySQL 执行查询,确认新用户已写入数据库

八、配置 Redis 缓存

8.1 修改 Redis 配置

bash 复制代码
vim /etc/redis.conf

找到并修改以下配置:

conf 复制代码
protected-mode no

说明

  • 默认值是 protected-mode yes
  • 改为 no 后允许非本地连接访问 Redis
  • 测试环境可以关闭,生产环境建议保持开启并配置密码

快速修改命令:

bash 复制代码
# 备份配置文件
cp /etc/redis.conf /etc/redis.conf.bak

# 修改配置
sed -i 's/^protected-mode yes/protected-mode no/' /etc/redis.conf

8.2 启动 Redis 服务

bash 复制代码
systemctl start redis

8.3 验证 Redis 服务

bash 复制代码
# 检查 Redis 状态
systemctl status redis

# 测试 Redis 连接
redis-cli ping
# 应该返回:PONG

# 查看 Redis 信息
redis-cli info

8.4 配置 Discuz Redis 连接

编辑 Discuz 配置文件:

bash 复制代码
vim /usr/share/nginx/html/upload/config/config_global.php

找到 $_config['memory'] 段,配置 Redis 连接参数:(仅该为本机ip地址为步骤即可)

php 复制代码
$_config['memory']['redis']['server'] = '127.0.0.1';
$_config['memory']['redis']['port'] = 6379;
$_config['memory']['redis']['pconnect'] = 0;
$_config['memory']['redis']['timeout'] = 1;
$_config['memory']['redis']['password'] = '';
$_config['memory']['redis']['serializer'] = 1;

将内存驱动改为 Redis:(此步骤可省略)

php 复制代码
$_config['memory']['driver'] = 'redis';

九、安装 PHP Redis 扩展

9.1 安装编译工具和依赖

bash 复制代码
yum install -y php-devel php-pear gcc make

9.2 使用 PECL 安装 Redis 扩展

bash 复制代码
pecl install redis

安装过程中会提示配置选项,直接按回车使用默认值即可(共 4-5 个选项)。

一键自动安装:如果不想手动按回车,可以使用:

bash 复制代码
yes "" | pecl install redis

9.3 启用 Redis 扩展

bash 复制代码
echo "extension=redis.so" >> /etc/php.ini

9.4 重启 PHP-FPM

bash 复制代码
systemctl restart php-fpm

9.5 验证 Redis 扩展

bash 复制代码
# 方法一:命令行检查
php -m | grep redis

# 方法二:访问 phpinfo 页面
# 浏览器访问 http://服务器IP/index.php
# 在页面中搜索 "redis",应该能看到 redis 扩展信息

注意 :如果 php -m | grep redis 没有输出,请检查 /etc/php.ini 是否正确添加了 extension=redis.so


十、验证 Redis 集成

10.1 使用 redis-cli 验证

bash 复制代码
redis-cli keys *

执行后应显示 Discuz 缓存在 Redis 中的所有键值,证明 Redis 与 Discuz 集成成功。

10.2 验证项汇总

验证项 预期结果
http://IP/index.php 显示 PHP 信息页面
http://IP/mysql_con.php 显示 "MySQL 连接成功!"
http://IP/upload/install/ Discuz 安装向导可正常访问
mysql 查询 可查看到论坛数据表和用户信息
redis-cli keys * 显示 Redis 中的缓存数据

附录

附录 A:常用命令汇总

服务管理
bash 复制代码
systemctl start nginx      # 启动 Nginx
systemctl start php-fpm    # 启动 PHP-FPM
systemctl start mysqld     # 启动 MySQL
systemctl start redis      # 启动 Redis

systemctl restart nginx     # 重启 Nginx
systemctl restart php-fpm   # 重启 PHP-FPM
systemctl restart mysqld   # 重启 MySQL
systemctl restart redis     # 重启 Redis

systemctl status nginx      # 查看 Nginx 状态
systemctl status php-fpm    # 查看 PHP-FPM 状态
systemctl status mysqld    # 查看 MySQL 状态
systemctl status redis     # 查看 Redis 状态
文件操作
bash 复制代码
cd /usr/share/nginx/html/           # 进入网站目录
chown apache:apache ./ -R           # 设置文件所有者
unzip upload.zip                    # 解压安装包
ls -la                              # 查看目录内容
数据库操作
bash 复制代码
mysql -u root -p                    # 登录 MySQL
SHOW DATABASES;                     # 显示所有数据库
USE 库名;                           # 选择数据库
SHOW TABLES;                        # 显示数据表
SELECT * FROM 表名;                 # 查询表数据
Redis 操作
bash 复制代码
redis-cli                           # 进入 Redis 客户端
redis-cli keys *                    # 查看所有键
redis-cli flushall                  # 清空所有数据

附录 B:关键文件路径

用途 路径
网站根目录 /usr/share/nginx/html/
Discuz 安装目录 /usr/share/nginx/html/upload/
Discuz 配置文件 /usr/share/nginx/html/upload/config/config_global.php
Nginx 配置 /etc/nginx/
Redis 配置 /etc/redis.conf
PHP 配置 /etc/php.ini

附录 C:常见问题

Q1:PHP-FPM 无法连接 MySQL

解决 :确认已安装 php-mysqlnd 包,并重启 PHP-FPM 服务。

Q2:Redis 连接失败

解决

  1. 确认 Redis 服务已启动:systemctl start redis
  2. 确认 protected-mode no 已配置
  3. 检查 config_global.php 中的 Redis 地址是否正确
Q3:页面显示 502 Bad Gateway

解决

  1. 检查 PHP-FPM 是否运行:ps aux | grep php-fpm
  2. 检查 Nginx 错误日志:tail -f /var/log/nginx/error.log
  3. 重启 PHP-FPM 和 Nginx
Q4:目录权限不足

解决

bash 复制代码
chown apache:apache /usr/share/nginx/html/upload/ -R
chmod 755 /usr/share/nginx/html/upload/ -R

附录 D:生产环境注意事项

以下内容仅供学习参考,生产环境部署时请额外注意:

  1. 安全加固

    • 设置 MySQL root 强密码
    • 配置防火墙规则(iptables/firewalld)
    • 配置 SELinux
    • 使用 HTTPS
  2. 性能优化

    • 配置 Nginx 缓存
    • 优化 MySQL 配置参数
    • 配置 Redis 持久化
    • 设置服务开机自启
  3. 数据备份

    • 定期备份 MySQL 数据库
    • 备份 Discuz 配置文件和上传文件

附录 E:一键部署脚本

以下脚本可在新系统中快速完成 LNMP 环境部署:

bash 复制代码
#!/bin/bash
# LNMP + Redis 环境一键部署脚本(测试环境)
# 适用于 openEuler 24.03
# 使用方法:chmod +x deploy_lnmp.sh && ./deploy_lnmp.sh

set -e  # 遇到错误立即退出

echo "===== 设置主机名 ====="
hostnamectl set-hostname lnmp

echo "===== 安装软件包 ====="
yum install -y lrzsz mysql-server nginx redis php php-fpm php-mysqlnd php-xml

echo "===== 启动服务 ====="
systemctl start nginx php-fpm mysqld redis

echo "===== 创建测试页面 ====="
rm -rf /usr/share/nginx/html/*

cat > /usr/share/nginx/html/index.php << 'EOF'
<?php
phpinfo();
?>
EOF

cat > /usr/share/nginx/html/mysql_con.php << 'EOF'
<?php
$conn = new mysqli("localhost", "root", "");
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "MySQL 连接成功!<br>版本: " . mysqli_get_server_info($conn);
?>
EOF

echo "===== 配置 Redis ====="
# 备份原配置文件
cp /etc/redis.conf /etc/redis.conf.bak
# 修改 protected-mode
sed -i 's/^protected-mode yes/protected-mode no/' /etc/redis.conf
systemctl restart redis

echo "===== 安装 PHP Redis 扩展 ====="
yum install -y php-devel php-pear gcc make

# 自动应答 pecl install redis 的所有问题(全部使用默认值)
yes "" | pecl install redis

echo "extension=redis.so" >> /etc/php.ini
systemctl restart php-fpm

echo ""
echo "===== 部署完成 ====="
echo "请访问: http://服务器IP/index.php"
echo "请上传 upload.zip 到 /usr/share/nginx/html/ 并解压"
echo ""
echo "验证命令:"
echo "  php -m | grep redis    # 检查 Redis 扩展"
echo "  redis-cli ping         # 测试 Redis 连接"

使用方法:

bash 复制代码
# 1. 保存脚本到文件
vim deploy_lnmp.sh
# 粘贴上述内容,保存退出

# 2. 添加执行权限
chmod +x deploy_lnmp.sh

# 3. 执行脚本
./deploy_lnmp.sh

# 4. 执行完成后刷新 shell(使主机名生效)
bash

说明

  • yes "" | pecl install redis 会自动应答所有问题,使用默认配置
  • set -e 确保任何命令失败时脚本立即停止
  • 脚本执行后需要手动上传 upload.zip 并解压

附录 F:验证检查清单

检查项 命令 预期结果
Nginx 运行 systemctl status nginx active (running)
PHP-FPM 运行 systemctl status php-fpm active (running)
MySQL 运行 systemctl status mysqld active (running)
Redis 运行 systemctl status redis active (running)
Nginx 监听 `netstat -anptu grep :80`
PHP 信息 浏览器访问 /index.php 显示 PHP 信息表格
MySQL 连接 浏览器访问 /mysql_con.php 显示连接成功
Redis 连接 redis-cli ping PONG
Redis 扩展 `php -m grep redis`
Discuz 安装 浏览器访问 /upload/install/ 安装向导页面
Redis 缓存 redis-cli keys * 显示缓存键

附录 G:快速命令参考

bash 复制代码
# ===== 服务管理 =====
systemctl start nginx php-fpm mysqld redis    # 启动所有服务
systemctl restart nginx php-fpm mysqld redis  # 重启所有服务
systemctl status nginx php-fpm mysqld redis   # 查看所有服务状态

# ===== 查看日志 =====
tail -f /var/log/nginx/error.log              # Nginx 错误日志
tail -f /var/log/mysqld.log                   # MySQL 日志
tail -f /var/log/redis/redis.log              # Redis 日志

# ===== 测试连接 =====
mysql -u root -e "SHOW DATABASES;"            # 测试 MySQL
redis-cli ping                                 # 测试 Redis
php -r "echo phpversion();"                    # 测试 PHP

# ===== 文件权限 =====
chown -R apache:apache /usr/share/nginx/html/upload/  # 设置权限
find /usr/share/nginx/html/upload/ -type d -exec chmod 755 {} \;  # 目录权限
find /usr/share/nginx/html/upload/ -type f -exec chmod 644 {} \;  # 文件权限

文档信息

项目 内容
文档类型 测试环境部署指南
操作系统 openEuler 24.03
论坛系统 Discuz! X 5.0
最后更新 2026年4月13日

本指南根据实际部署操作流程编写,适用于测试环境验证。

相关推荐
舒一笑2 小时前
Docker Compose 挂载 Nginx 配置的正确姿势(90%的人都踩过这个坑)
运维·docker·容器
二等饼干~za8986682 小时前
云罗 GEO 优化系统源码厂家测评报告
大数据·网络·数据库·人工智能·django
堕落年代2 小时前
Spring 事务提交顺序深度解析:从踩坑到理解原理
数据库·spring·oracle
W.W.H.2 小时前
嵌入式常见面试题——操作系统与RTOS篇
linux·经验分享·操作系统·rtos
云飞云共享云桌面2 小时前
共享云主机告别传统电脑——制造工厂研发部门2台三维设计云主共享给20个设计师并发用
大数据·运维·服务器·自动化·电脑·制造
航Hang*2 小时前
Windows Server 配置与管理——第10章:配置FTP服务器
运维·服务器·网络·windows·学习·vmware
此刻觐神2 小时前
IMX6ULL开发板学习-05(Linux之Vi/Vim编辑器的使用)
linux·学习·编辑器
kevin_水滴石穿2 小时前
Docker 运行一段时间后,/var/lib/docker/overlay2目录占用空间过大的处理方案
运维·docker·容器
xcjbqd03 小时前
Python中Pandas如何将DataFrame写入MySQL_使用to_sql函数
jvm·数据库·python