一、项目整体目标
搭建一套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 平台 - 基本思路
-
装包
- 部署Apache网站服务:安装httpd
- 部署MariaDB数据库:mariadb-server、mariadb
- 部署Php支持:php、php-mysqlnd、php-xml、php-json
-
配置
- 配置mariadb用户授权
- 配置httpd虚拟web主机、部署php测试页面
-
启动服务
- 启动mariadb、httpd服务
-
测试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 数据库
- 启动并设置开机自启
- 设置 root 密码:1234.com
- 创建论坛专用库:bbs
- 创建专用连接用户:runbbs,密码 123
- 授权 runbbs 对 bbs 库所有权限
- 刷新权限
强调:数据库是 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)
- 修改默认首页,添加
index.php - 启动 httpd 并开机自启
- 开启 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.php 用 phpinfo() 验证 PHP 环境正常,确认:
- Apache 能解析 PHP
- PHP 模块正常加载
五、Discuz! 论坛部署流程
Discuz! X 论坛简介
- Discuz! 论坛系统由 Comsenz 出品,知名的论坛程序
- 使用PHP语言编写,支持MySQL/Mariadb等多种数据库
- 免费提供源代码,用于学习,测试
- 商业站点需购买授权许可
1. 项目准备
准备工作(上方步骤已完成):
- 支持PHP、MariaDB的网站平台
- 确定论坛服务器的域名,IP地址等基本信息
- 建立论坛数据库(bbs)授权访问用户(runbbs@localhost)
2. 解压与部署代码
- 下载并确认程序代码,官方网站:http://www.discuz.net/
- 将《云计算学习环境》中的
Discuz_X3.5_SC_UTF8.zip上传至虚拟机/root - 将压缩包解压缩至
/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
六、论坛功能测试
- 前台访问:http://192.168.8.101/bbs
- 用户注册:zhangsan / 123456
- 管理员发帖、普通用户回帖
- 发布技术文档(如 FTP 服务手册)
- 内容审核、互动、管理
后台管理
访问:http://192.168.8.101/bbs/admin.php
可管理:全局设置、版块、用户、权限、内容等。
七、项目闭环与总结
1. 项目闭环
平台搭建完成 → 上线运行 → 日常运维 → 内容审核 → 持续稳定运行
2. 需掌握的核心技能
- LAMP 架构原理与组件作用
- Apache、MariaDB、PHP 安装与配置
- 数据库库、用户创建与授权
- PHP 连接数据库的机制
- Discuz! 部署、权限配置、安全优化
- 论坛日常使用与后台管理
八、关键考点
- LAMP 分别代表什么
- 谁在连接 MariaDB?
→ PHP 程序通过 php-mysqlnd 扩展连接 MariaDB - 为什么要给 apache 授权目录?
→ 让 PHP 能读写配置、缓存、上传文件 - 为什么要重命名 install 目录?
→ 防止被重复安装,提升安全 - MariaDB 中给 PHP 专用账号的作用?
→ 专用于论坛代码连接数据库,保证安全