# LAMP 架构 + Discuz! 论坛实战笔记

一、项目整体目标

搭建一套LAMP 架构的内部技术交流 + 对外行业社区论坛,实现:

  • 员工技术分享、问题交流、知识沉淀
  • 对外打造品牌、吸引客户
  • 完成从环境搭建到论坛上线、运维闭环

二、核心架构:LAMP 平台

1. LAMP 平台概述

什么是LAMP:

  • L:Linux(操作系统)
  • A:Apache(Web 服务,httpd)
  • M:MariaDB/MySQL(数据库)
  • P:PHP(动态脚本语言

作用:运行动态网站,支持网页与数据库交互。

  • 静态页面:静态页面无需执行,访问直接返回(如HTML。不用翻译,浏览器 / 服务器直接看懂、直接显示。)
  • 动态页面:动态页面是服务器端脚本/程序文件执行后的结果(需要翻译,把 PHP / Python / Java 等代码翻译成 HTML 再给浏览器)

实际生产环境中总是动态与静态结合使用

LAMP是目前最成熟的一种企业网站应用模式,可提供动态web站点及开发环境

  • LAMP的优势
    • 成本低廉、易用、安全和稳定
    • 可定制、易于开发

2. 关键通信关系

  • 客户端请求 → Apache → PHP 脚本
  • PHP 网页代码 通过 php-mysqlnd 扩展 连接 MariaDB 数据库
  • 数据库负责存储:用户、帖子、版块、配置等所有数据

三、实验环境与实现思路

  • 服务端:Linux 虚拟机(server),IP:192.168.8.101
  • 客户端:Windows,IP:192.168.8.1
  • 访问地址:http://192.168.8.101/bbs

构建 LAMP 平台 - 基本思路
  1. 装包

    • 部署Apache网站服务:安装httpd
    • 部署MariaDB数据库:mariadb-server、mariadb
    • 部署Php支持:php、php-mysqlnd、php-xml、php-json
  2. 配置

    • 配置mariadb用户授权
    • 配置httpd虚拟web主机、部署php测试页面
  3. 启动服务

    • 启动mariadb、httpd服务
  4. 测试php网页解析,数据库访问


四、LAMP 平台构建全过程(最核心步骤)

1. 安装必备软件

安装软件包

  • 部署Apache网站服务:安装httpd(先安装)
  • 部署MariaDB数据库:mariadb-server、mariadb
  • 部署Php支持:php、php-mysqlnd、php-xml、php-json

mariadb-server :数据库服务端,存储数据、运行数据库
mariadb :数据库客户端,提供 mysql 命令,操作数据库
php :PHP 语言本体,运行 PHP 动态网页
php-mysqlnd :PHP 连接数据库的驱动(桥梁)
php-xml :PHP 处理 XML 数据
php-json:PHP 处理 JSON 数据

注:先安装完httpd软件之再安装php会自动生成httpd支持php动态页面的配置,如果先安装php则不会自动生成

bash 复制代码
# 安装 Apache
dnf -y install httpd

# 安装 MariaDB 数据库
dnf -y install mariadb-server mariadb

# 安装 PHP 及数据库连接扩展(php-mysqlnd 是连接数据库关键)
dnf -y install php php-mysqlnd php-xml php-json

2. 配置 MariaDB 数据库

  1. 启动并设置开机自启
  2. 设置 root 密码:1234.com
  3. 创建论坛专用库:bbs
  4. 创建专用连接用户:runbbs,密码 123
  5. 授权 runbbs 对 bbs 库所有权限
  6. 刷新权限

强调:数据库是 PHP 代码在连接,所以必须给 PHP 授权专用账号。

bash 复制代码
[root@server ~]# systemctl enable mariadb --now #将服务设置为开机自启并立即启动
[root@server ~]# ss -nutlp | grep :3306 #查看端口号
[root@server ~]# mysqladmin -uroot password '1234.com' #为数据库管理员root设置密码
[root@server ~]# mysql -uroot -p'1234.com' #连接测试
MariaDB [(none)]> EXIT; #退出连接
  • 创建bbs库,此库为Discuz! 项目存储数据的库
  • 授权Discuz! 项目代码连接数据库的用户(数据库是php代码在连接)
  • 数据库用户名:runbbs,密码123
  • 权限:对bbs库里边的所有表(bbs.*)拥有所有权限
bash 复制代码
[root@server ~]# mysql -uroot -p'1234.com'  # 连接数据库
MariaDB [(none)]> CREATE DATABASE bbs;       # 创建库
MariaDB [(none)]> GRANT ALL ON bbs.* TO runbbs@localhost IDENTIFIED BY '123';  # 授权用户
MariaDB [(none)]> FLUSH PRIVILEGES;          # 刷新授权表
MariaDB [(none)]> SHOW GRANTS FOR runbbs@localhost;  # 查看runbbs@localhost用户权限

在 MySQL/MariaDB 中:
用户 = 用户名 + 主机地址

即使用户名相同,只要主机地址不同,就是两个不同的用户,密码和权限相互独立。

注意:配置runbbs用户后必须刷新授权表并查看用户权限。有时会出现用户创建失败的问题,导致残留脏数据,一直报1045,查权限也不行,此时可以按照如下步骤排错并重新创建用户:

bash 复制代码
-- 1. 清空所有旧的 runbbs 用户
DELETE FROM mysql.user WHERE user='runbbs';
DELETE FROM mysql.db WHERE user='runbbs';
FLUSH PRIVILEGES;

-- 2. 执行你原本的正确命令(创建+授权+密码123 一步到位)
GRANT ALL ON bbs.* TO runbbs@localhost IDENTIFIED BY '123';

-- 3. 刷新权限
FLUSH PRIVILEGES;

-- 4. 查看权限
SHOW GRANTS FOR runbbs@localhost;

出现这样的授权表就是成功了。

bash 复制代码
+---------------------------------------------------------------------------------------------------------------+
| Grants for runbbs@localhost                                                                                   |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `runbbs`@`localhost` IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' |
| GRANT ALL PRIVILEGES ON `bbs`.* TO `runbbs`@`localhost`                                                       |
+---------------------------------------------------------------------------------------------------------------+
2 rows in set (0.000 sec)

3. 配置 Apache(httpd)

  1. 修改默认首页,添加 index.php
  2. 启动 httpd 并开机自启
  3. 开启 80 端口,支持 PHP 动态页面解析
bash 复制代码
[root@server ~]# vim /etc/httpd/conf/httpd.conf  # 修改主配置文件
DocumentRoot "/var/www/html"  # 第122行指定默认网页根目录(此行不变)
...
DirectoryIndex index.html index.php  # 第167行默认首页新增index.php

[root@server ~]# systemctl enable httpd --now  # 启动服务,并将服务设置为开机自启
[root@server ~]# ss -ntulp | grep :80          # 查看端口号

4. LAMP 协同测试

  • 创建测试页面,检查httpd是否可以支持php动态页面
  • 利用phpinfo()函数检查php环境
  • Windows客户端访问:http://192.168.8.101/test1.php
bash 复制代码
[root@server ~]# vim /var/www/html/test1.php  # 注意符号全部使用英文
<?php
phpinfo();
?>

创建 test1.phpphpinfo() 验证 PHP 环境正常,确认:

  • Apache 能解析 PHP
  • PHP 模块正常加载

五、Discuz! 论坛部署流程

Discuz! X 论坛简介

  • Discuz! 论坛系统由 Comsenz 出品,知名的论坛程序
  • 使用PHP语言编写,支持MySQL/Mariadb等多种数据库
  • 免费提供源代码,用于学习,测试
  • 商业站点需购买授权许可

1. 项目准备

准备工作(上方步骤已完成):

  • 支持PHP、MariaDB的网站平台
  • 确定论坛服务器的域名,IP地址等基本信息
  • 建立论坛数据库(bbs)授权访问用户(runbbs@localhost)

2. 解压与部署代码

  1. 下载并确认程序代码,官方网站:http://www.discuz.net/
  2. 将《云计算学习环境》中的 Discuz_X3.5_SC_UTF8.zip 上传至虚拟机 /root
  3. 将压缩包解压缩至 /opt 目录
bash 复制代码
[root@server ~]# dnf -y install unzip                              # 安装unzip解压缩命令
[root@server ~]# unzip Discuz_X3.5_SC_UTF8.zip -d /opt/           # 解压至/opt
[root@server ~]# ls /opt                                          # 查看解压后的数据
... upload  # upload为论坛程序目录

3. 关键权限设置

  • upload/ 部署到网站目录:/var/www/html/bbs
  • 确保Web服务进程用户 apache 对相关目录有写入权限
bash 复制代码
[root@server ~]# mkdir /var/www/html/bbs                          # 创建项目目录
[root@server ~]# cp -rf /opt/upload/* /var/www/html/bbs/          # 拷贝程序
[root@server ~]# cd /var/www/html/bbs/

[root@server bbs]# chown -R apache template/ config/ data/        # 递归赋权
[root@server bbs]# ls -l template/ config/ data/

[root@server bbs]# chown -R apache uc_client/ uc_server/
[root@server bbs]# ls -l uc_client/ uc_server/
目录说明
  • template:论坛模板、皮肤、界面文件夹,存放网站的界面、样式
  • config:论坛的配置文件目录,存放数据库账号、论坛核心配置
  • data:论坛缓存、附件、临时数据目录
  • uc_client:负责用户登录、积分、同步登录
  • uc_server:独立的用户中心系统,管理多个网站的用户、积分、登录
  • install:论坛安装目录,安装完成后建议删除,提高安全性

4. Web 界面安装

访问:http://192.168.8.101/bbs/install

按向导填写:

  • 数据库地址:127.0.0.1
  • 库名:bbs
  • 用户:runbbs
  • 密码:123
  • 设置管理员账号:admin / 123456

注意:数据库名和授权用户一定要使用之前自己创建/授权的库名和用户

5. 安全加固(上线必做)

  • 重命名 install 目录为 install.lock
  • 设置权限 600,禁止再次安装
bash 复制代码
[root@server ~]# cd /var/www/html/bbs/
[root@server bbs]# mv install/ install.lock       # 重命名
[root@server bbs]# chmod 600 install.lock          # 权限600
[root@server bbs]# ls -ld install.lock             # 查看权限
drw------- 5 root root 64 4月 13 18:06 install.lock

六、论坛功能测试

  1. 前台访问:http://192.168.8.101/bbs
  2. 用户注册:zhangsan / 123456
  3. 管理员发帖、普通用户回帖
  4. 发布技术文档(如 FTP 服务手册)
  5. 内容审核、互动、管理

后台管理

访问:http://192.168.8.101/bbs/admin.php

可管理:全局设置、版块、用户、权限、内容等。


七、项目闭环与总结

1. 项目闭环

平台搭建完成 → 上线运行 → 日常运维 → 内容审核 → 持续稳定运行

2. 需掌握的核心技能

  • LAMP 架构原理与组件作用
  • Apache、MariaDB、PHP 安装与配置
  • 数据库库、用户创建与授权
  • PHP 连接数据库的机制
  • Discuz! 部署、权限配置、安全优化
  • 论坛日常使用与后台管理

八、关键考点

  1. LAMP 分别代表什么
  2. 谁在连接 MariaDB?
    PHP 程序通过 php-mysqlnd 扩展连接 MariaDB
  3. 为什么要给 apache 授权目录?
    → 让 PHP 能读写配置、缓存、上传文件
  4. 为什么要重命名 install 目录?
    → 防止被重复安装,提升安全
  5. MariaDB 中给 PHP 专用账号的作用?
    → 专用于论坛代码连接数据库,保证安全
相关推荐
CoovallyAIHub3 小时前
MSD-DETR:面向机车弹簧检测的可变形注意力Detection Transformer
算法·架构
CoovallyAIHub3 小时前
不改权重、不用训练!BEM用背景记忆抑制固定摄像头误检,YOLO/RT-DETR全系有效
算法·架构·github
xuanwenchao3 小时前
ROS2学习笔记 - 1、编写运行第一个程序
笔记·学习
独小乐3 小时前
018.使用I2C总线EEPROM|千篇笔记实现嵌入式全栈/裸机篇
linux·笔记·单片机·嵌入式硬件·arm·信息与通信
CoovallyAIHub3 小时前
上交+阿里 | Interactive ASR:Agent框架做语音识别交互纠错,1轮交互语义错误率降57%
算法·架构·github
qq_454245033 小时前
以编程能力作为智能体框架评估基准的形式化充分性与局限性
架构
YuanDaima20484 小时前
二分查找基础原理与题目说明
开发语言·数据结构·人工智能·笔记·python·算法
卖报的大地主4 小时前
TPAMI 2026 | 判别和扩散生成学习融合的礼物:边界细化遥感语义分割
人工智能·笔记·学习
守月满空山雪照窗4 小时前
深入理解 MTK FPSGO:Android 游戏帧率治理框架的架构与实现
android·游戏·架构