Linux小课堂: LNMP架构下Discuz论坛部署全流程解析
LNMP架构基础与环境检查
1 ) 架构组成:
- Linux 操作系统 + Nginx 服务器 + MariaDB(MySQL兼容分支) + PHP
- 对比LAMP:将Apache替换为Nginx,需额外处理 Nginx与PHP的通信机制
- 技术要点:
- Nginx通过FastCGI协议与PHP交互,需安装PHP-FPM(FastCGI进程管理器)
- PHP-FPM默认监听
127.0.0.1:9000端口,作为Nginx解析PHP脚本的桥梁
2 ) 环境验证:
# 检查Nginx状态
systemctl status nginx # 确认服务为active (running)且开机自启 # 检查PHP版本
php -v # 输出:PHP 5.6.40 # 登录MariaDB验证
mysql -uroot -p # 输入密码后查看版本:5.5.64-MariaDB
Nginx与PHP通信配置
1 ) 关键问题:
Nginx需通过 FastCGI协议 与PHP交互,需安装 php-fpm(FastCGI进程管理器)。
2 ) 安装php-fpm:
yum install php56w-fpm # 解决与PHP 5.6.40的版本冲突
systemctl start php-fpm && systemctl enable php-fpm # 启动并设自启
3 ) Nginx配置调整(/etc/nginx/nginx.conf):
server {listen 80;server_name localhost;root /usr/share/nginx/html;# 添加PHP文件支持 index index.html index.htm index.php;location ~ \.php$ {# 转发PHP请求到php-fpm(监听127.0.0.1:9000)fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params; # 关键:修复原配置拼写错误(fastcgi_params非parms)}
}
重点步骤:
- 注释原有反向代理配置(避免冲突)
- 执行
nginx -t测试配置,修复语法错误后重启:systemctl restart nginx
4 )验证PHP解析:
# 创建测试文件
echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/index.php
访问 http://服务器IP/index.php,确认显示 PHP版本信息及FPM状态
- PHP版本(5.6.40)
- FastCGI协议激活状态
- MariaDB驱动信息
Discuz安装与SELinux权限处理
1 ) 下载Discuz: wget https://gitee.com/ComsenzDiscuz/DiscuzX/archive/v3.4.zip
- 官方源:Discuz! X3.4(简体中文UTF-8版)
- 上传至服务器:
scp v3.4.zip root@192.168.0.106:/usr/share/nginx/html/ unzip v3.4.zip rm -rf v3.4.zip readme utility # 保留upload目录 mv upload/* . && rm -rf upload # 移动文件至Web根目录
2 ) 目录权限设置:
chmod -R 777 /usr/share/nginx/html # 开放读写权限
3 ) 解决SELinux拦截(关键步骤):
- 现象:安装向导提示目录不可写,即使权限为777
- 根本原因:SELinux安全上下文限制
- 解决方案:
# 修改目录安全上下文类型 semanage fcontext -a -t httpd_sys_rw_content_t "/usr/share/nginx/html(/.*)?" restorecon -R -v /usr/share/nginx/html # 递归应用新上下文 setenforce 1 # 重新启用SELinux - 验证:刷新安装页面
http://服务器IP/install/,确认权限检测通过
数据库配置与论坛初始化
1 ) 安装向导操作:
- 访问
http://服务器IP/install/ - 设置数据库参数:
数据库名:discuz 用户名:root 密码:原MariaDB的root密码 表前缀:pre_ - 管理员账号:
admin,密码自定义(如123456)
2 ) 安装完成:
- 登录论坛后台
http://服务器IP/admin.php - 验证功能:用户管理、站点设置、应用中心扩展
3 )SELinux调试命令:
tail -f /var/log/audit/audit.log # 实时查看权限拒绝日志
grep php-fpm /var/log/audit/audit.log # 过滤PHP-FPM相关错误
关键问题总结:
- Nginx+PHP通信:依赖 php-fpm 与正确的
fastcgi_pass配置 - SELinux权限:必须将Web目录上下文设为
httpd_sys_rw_content_t - Discuz兼容性:PHP 5.6.x + MariaDB 5.5.x 已验证支持
通过上述流程,LNMP架构成功部署动态论坛系统,完整保留原始操作细节与技术要点,同时优化逻辑连贯性与术语准确性
技术总结:LNMP架构的核心在于Nginx与PHP-FPM的协作,需通过FastCGI协议打通通信;SELinux权限管理是部署中的常见障碍,通过调整安全上下文解决。本文档完整保留原始操作步骤,优化逻辑后适用于生产环境部署。
