项目实战-LAMP与LNMP
项目实战LAMP 部署 WordPress 博客 LNMP 部署 ECShop 商城上一篇我们学了 MariaDB 基础,这一篇直接上手「项目实战」——用两种最经典的 Web 架构,分别部署两个真实站点:LAMPLinux Apache MariaDB PHP→ 部署WordPress 博客系统LNMPLinux Nginx MariaDB PHP→ 部署ECShop 电商商城学完这两个项目,你不仅会搭网站,还能看懂这两套架构的差异,面试和工作中都极常用。先搞懂:LAMP 和 LNMP 是什么?这两个词都是 Web 服务架构的缩写,只差一个字母,却是两代技术路线的代表:架构全称Web 服务器特点LAMPLinux Apache MySQL(MariaDB) PHPApache (httpd)老牌、稳定、模块丰富LNMPLinux Nginx MySQL(MariaDB) PHPNginx轻量、高并发、静态性能强两者都用MariaDB做数据库(MySQL 的社区分支),都用PHP写业务,区别只在 Web 服务器:Apache:进程/线程模型,.htaccess灵活,动态内容处理成熟;Nginx:事件驱动,处理高并发静态资源极快,做动态内容时需要把请求「转发」给 PHP-FPM。一句话记忆:LAMP 靠 Apache 一个人扛, LNMP 靠 Nginx PHP-FPM 两个人配合。项目一:LAMP 部署 WordPress 博客平台0. 项目概览节点名称节点 IP架构wordpress10.1.8.10/24LAMPWordPress是全球最流行的个人博客系统(逐步演化为内容管理系统 CMS),使用 PHP MySQL 开发。前提条件:用 CentOS 7 模板克隆一台干净的 server。1. 基础配置[rootlocalhost ~]# hostnamectl set-hostname wordpress[rootlocalhost ~]# nmcli connection modify ens33 ipv4.method manual \ipv4.addresses10.1.8.10/24\ipv4.gateway10.1.8.2\ipv4.dns10.1.8.2\autoconnectyes[rootlocalhost ~]# nmcli connection up ens332. 安装 LAMP 环境CentOS 7 官方源里没有 PHP 相关的包,先配置阿里的 EPEL 源:[rootwordpress ~]# wget -O /etc/yum.repos.d/epel.repo \http://mirrors.aliyun.com/repo/epel-7.repo# 一次装齐:数据库 PHP 全家桶 Web 服务器[rootwordpress ~]# yum install -y mariadb-server mariadb \php php-fpm php-mysqlnd php-gd php-mbstring php-xml httpd包名作用mariadb-server/mariadb数据库服务端 / 客户端php/php-fpmPHP 解释器 / PHP 进程管理器php-mysqlndPHP 连接 MySQL/MariaDB 的驱动php-gd/php-mbstring/php-xml图像处理 / 多字节字符 / XML 扩展httpdApache Web 服务器# 三个服务全部启动并设为开机自启[rootwordpress ~]# systemctl enable mariadb --now[rootwordpress ~]# systemctl enable php-fpm --now[rootwordpress ~]# systemctl enable httpd --now--now小技巧:systemctl enable X --now相当于enablestart二合一,省一条命令。3. 初始化 MariaDB[rootwordpress ~]# mysql_secure_installation按下面顺序选择(与基础教程一致,唯一区别在第 4 步):步骤提示问题输入说明1Enter current password for root直接回车初次无密码2Set root password?y设置 root 密码(如huawei)3Remove anonymous users?y删除匿名用户4Disallow root login remotely?n项目常用选 n(安全服务器才选 y)5Remove test database?y删除 test 测试库6Reload privilege tables now?y刷新权限注意第 4 步:基础教程里为安全选y禁止 root 远程登录;但做项目时为了方便远程管理,常选n允许 root 远程登录。这体现了「安全」和「便利」的取舍。4. 准备数据库登录数据库,为 WordPress 单独建库、建用户、授权:[rootwordpress~]# mysql -u root -phuaweiMariaDB[(none)]CREATEDATABASEwordpress;-- 建库MariaDB[(none)]CREATEUSERwordpresslocalhostIDENTIFIEDBYhuawei;-- 建用户MariaDB[(none)]GRANTALLPRIVILEGESONwordpress.*TOwordpresslocalhost;-- 授权MariaDB[(none)]FLUSHPRIVILEGES;-- 刷新权限MariaDB[(none)]exit好习惯:给每个站点建专属的数据库和用户,而不是直接用 root 账号,权限更可控、更安全。5. 部署 WordPress 站点这里使用wordpress-4.9.4版本(部署简单),上传到 root 家目录后解压部署:[rootwordpress ~]# unzip wordpress-4.9.4-zh_CN.zip[rootwordpress ~]# cp -aR wordpress /var/www/html/[rootwordpress ~]# chown -R apache:apache /var/www/html/wordpress/[rootwordpress ~]# systemctl restart httpd为什么把属主改成apache?Apache 以apache用户身份运行,站点目录必须归它所有,否则无法读写文件。6. 配置网站方式一(推荐):浏览器引导安装浏览器访问http://www.laogao.cloud/wordpress/,按页面提示填写数据库信息即可。方式二:手动改配置文件如果页面提示无法连接数据库,可以手动编辑wp-config.php:[rootwordpress ~]# cd /var/www/html/wordpress/[rootwordpress ~]# cp wp-config-sample.php wp-config.php[rootwordpress ~]# vim wp-config.php修改下面四个参数:/** WordPress 数据库的名称 */define(DB_NAME,wordpress);/** MySQL 数据库用户名 */define(DB_USER,wordpress);/** MySQL 数据库密码 */define(DB_PASSWORD,huawei);/** MySQL 主机 */define(DB_HOST,localhost);/** WordPress 数据表前缀 */$table_prefixwp_;7. 设置目录权限并管理网站# 设置目录权限确保 apache 用户可以正常读写[rootwordpress ~]# chmod -R 755 /var/www/html/wordpress/小勘误:原文档这里写的是chown -R 755,实为笔误。chown是改属主、chmod才是改权限,此处正确命令应为chmod -R 755。配置完成后,进入 WordPress 后台即可开始写博客、换主题、装插件。项目二:LNMP 部署 ECShop 电商平台0. 项目概览节点名称节点 IP架构ecshop10.1.8.10/24LNMPECShop是一款开源的多场景在线商城系统,用 PHP 开发,常用来做电商二次开发的教学项目。前提条件:同样用 CentOS 7 模板克隆一台干净的 server。1. 准备 LNMP 环境依次准备三大件:Nginx → MariaDB → PHP。2. 准备 Nginx# 配置 EPEL 源(nginx 在 EPEL 里)[rootecshop ~]# wget -O /etc/yum.repos.d/epel.repo \http://mirrors.aliyun.com/repo/epel-7.repo# 安装并启动[rootecshop ~]# yum install -y nginx[rootecshop ~]# systemctl enable nginx.service --now# 写个测试页,验证 Nginx 是否正常[rootecshop ~]# echo Nginx Test Page /usr/share/nginx/html/index.html注意目录差异:Nginx 默认站点目录是/usr/share/nginx/html,而 Apache 是/var/www/html。LNMP 和 LAMP 的站点根目录不一样。3. 准备 MariaDB[rootecshop ~]# yum install -y mariadb-server[rootecshop ~]# systemctl enable mariadb --now# 安全初始化(步骤同项目一,这里从略)[rootecshop ~]# mysql_secure_installation安全初始化的 6 个交互要点与项目一完全一致(第 4 步同样选n)。4. 准备 PHP(关键:改运行用户)[rootecshop ~]# yum install -y php php-fpmLNMP 里 PHP 由PHP-FPM独立管理,Nginx 通过 FastCGI 协议调用它。这里有个必须改的地方——PHP-FPM 默认以apache用户运行,而我们是 Nginx 环境,要改成nginx:[rootecshop ~]# vim /etc/php-fpm.d/www.conf# 更改以下两条记录 # user apache ← 默认 user nginx # 改成 nginx # group apache ← 默认 group nginx # 改成 nginx[rootecshop ~]# systemctl enable php-fpm.service --now为什么必须改?如果 PHP-FPM 仍以apache用户运行,而站点文件属主是nginx,那么 PHP 无法读写文件,网站会报「无权限」。Web 服务器用户、PHP-FPM 用户、站点文件属主三者必须一致——这是 LNMP 最容易踩的坑。5. 配置 Nginx 虚拟主机[rootecshop ~]# vim /etc/nginx/conf.d/vhost-shop.laogao.cloud.confserver { listen 80; listen [::]:80; server_name shop.laogao.cloud; root /usr/share/nginx/html; # 设置默认主页 index index.php; # 设置 PHP 页面处理方式:转发给 PHP-FPM location ~ \.php$ { try_files $uri 404; fastcgi_pass 127.0.0.1:9000; # PHP-FPM 监听地址 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }[rootecshop ~]# systemctl restart nginx关键参数解读:配置项作用server_name绑定的域名root站点根目录location ~ \.php$匹配所有.php结尾的请求fastcgi_pass 127.0.0.1:9000把 PHP 请求转给本机 9000 端口的 PHP-FPM准备测试页,验证 PHP 链路是否打通:[rootecshop ~]# echo ?php echo PHP Test Page.\\n\; ? \/usr/share/nginx/html/test.php浏览器访问http://shop.laogao.cloud/test.php,若显示PHP Test Page,说明Nginx → PHP-FPM 整条链路已经打通。6. 准备数据库与 WordPress 同理,为 ECShop 单独建库、建用户、授权:[rootecshop~]# mysql -u root -phuaweiMariaDB[(none)]CREATEDATABASEecshop;MariaDB[(none)]CREATEUSERecshoplocalhostIDENTIFIEDBYhuawei;MariaDB[(none)]GRANTALLPRIVILEGESONecshop.*TOecshoplocalhost;MariaDB[(none)]FLUSHPRIVILEGES;MariaDB[(none)]exit7. 部署 ECShop 站点使用ECShop_V4.1.20版本,上传到 root 家目录后解压部署:[rootecshop ~]# unzip ECShop_V4.1.20_UTF8.zip# 备份默认站点目录,换成 ECShop 源码[rootecshop ~]# mv /usr/share/nginx/html/ /usr/share/nginx/html.ori[rootecshop ~]# cp -a ECShop_V4.1.20_UTF8_release20250416/source/ecshop \/usr/share/nginx/html# 目录属主改为 nginx[rootecshop ~]# chown nginx:nginx -R /usr/share/nginx/html# 安装站点所需的各种扩展包[rootecshop ~]# yum install -y php-gd php-common php-pear \php-mbstring php-mcrypt php-mysqlnd# session 目录属主也改为 nginx,否则可能报写入失败[rootecshop ~]# chown nginx:nginx -R /var/lib/php/[rootecshop ~]# systemctl restart nginx php-fpm8. 浏览器安装配置浏览器访问http://shop.laogao.cloud,按向导完成安装:勾选协议,点击「下一步」:配置安装环境;输入数据库账户信息(ecshop / huawei),点击「搜索」,选中搜索到的ecshop数据库;时区选择「亚洲 → 中国 → 上海」,点击「立即安装」;页面顶部若出现Warning提示「使用系统时区不安全」,暂时忽略即可;出现「激活系统」页面时,不激活也可以正常使用,直接关闭网页。9. 访问与管理入口地址商城首页http://shop.laogao.cloud商城管理后台http://shop.laogao.cloud/admin用 ecshop 账号登录后台,即可设置商店名称、商品、支付方式等基本信息。LAMP vs LNMP 一张表看懂对比项LAMP(WordPress)LNMP(ECShop)Web 服务器Apache (httpd)NginxPHP 运行方式php-fpm(模块式)php-fpm(FastCGI,:9000)站点根目录/var/www/html//usr/share/nginx/html运行用户apachenginxPHP-FPM 用户apache(默认)需手动改成nginx虚拟主机配置.htaccess/ httpd.confconf.d/*.conflocation擅长场景动态内容、模块丰富高并发、静态性能强两条请求链路的区别(这也是面试高频考点):LAMP浏览器ApachePHPMariaDBLNMPFastCGI :9000浏览器NginxPHP-FPMMariaDB总结维度项目一:LAMP WordPress项目二:LNMP ECShop架构Apache PHP MariaDBNginx PHP-FPM MariaDB核心步骤装 LAMP → 初始化 → 建库 → 部署源码 → 配置 wp-config.php装 Nginx/DB/PHP → 改 PHP-FPM 用户 → 配虚拟主机 → 建库 → 部署源码最容易踩的坑目录属主要改成apache① PHP-FPM 用户要改成nginx② 站点目录属主、session 目录属主都要是nginx一句话总结两个项目:LAMP:老牌稳重,装好httpd php mariadb三件套就能跑;LNMP:性能更强,但多了一个「Nginx 转 PHP-FPM」的配合环节,记得把两边的运行用户统一成nginx。两个项目本质都在做同一件事——「Web 服务器 数据库 应用源码」三者的正确衔接。掌握了 LAMP 和 LNMP 这套套路,以后再部署其他 PHP 站点(如 Discuz、ThinkPHP、Laravel)基本是照葫芦画瓢。

相关新闻

高并发下MySQL数据安全:悲观锁、乐观锁与队列化方案实战解析

高并发下MySQL数据安全:悲观锁、乐观锁与队列化方案实战解析

1. 项目概述:高并发下的数据安全困境做后端开发或者数据库运维的朋友,肯定都遇到过这样的场景:一个热门商品秒杀,或者一个关键配置项被多个服务节点同时更新,数据库里同一行数据在极短时间内被多次修改。这时候&#x…

2026/8/16 2:49:47 阅读更多 →
别人说你不像测出的MBTI怎么办?自评与他评的对照方法

别人说你不像测出的MBTI怎么办?自评与他评的对照方法

“我测出来是这个类型,但朋友都说不像”是常见困惑。自评看到的是自己的动机、消耗和内心取舍,他评看到的则是外显行为。两种观察角度不同,出现冲突并不等于其中一方一定错了,也不需要立刻推翻结果或要求别人认可。 为什么自评与他…

2026/8/16 2:49:47 阅读更多 →
[应用方案] GALT61120套件_TPS92518的电流简单调节

[应用方案] GALT61120套件_TPS92518的电流简单调节

一、前言 GALT61120前灯评估板套件,BUCK电路使用的是TPS92518HVQPWPRQ1芯片。评估板默认是输出300mA电流,那如果需要输出500mA应该如何调节?我整理了学习笔记和调试过程以供参考。二、TPS92518芯片特性 1、基本特性 TPS92518是德州仪器推出的…

2026/8/16 2:49:47 阅读更多 →

最新新闻

可以拆,而且很适合当前“上料位、吹扫位、测试位”形成流水线的设备节拍。但建议拆为长期运行的异步 Worker 加状态机,不要直接创建多个裸线程

可以拆,而且很适合当前“上料位、吹扫位、测试位”形成流水线的设备节拍。但建议拆为长期运行的异步 Worker 加状态机,不要直接创建多个裸线程

可以拆,而且很适合当前“上料位、吹扫位、测试位”形成流水线的设备节拍。但建议拆为长期运行的异步 Worker 加状态机,不要直接创建多个裸线程。PLC、主控、搬运机构仍需要严格串行控制,否则会再次出现指令交叉、Socket 回读错乱的问题。 当…

2026/8/16 3:53:09 阅读更多 →
Zotero文献同步高可用方案:Koofr+OneDrive构建低成本冗余备份

Zotero文献同步高可用方案:Koofr+OneDrive构建低成本冗余备份

1. 从单点脆弱到“铁三角”冗余:为什么我们需要Zotero同步的“叠Buff”方案?如果你和我一样,是个重度依赖Zotero管理文献的研究者、学生或写作者,那你一定经历过或者正在恐惧那个“同步噩梦”。Zotero自带的免费300MB同步空间&…

2026/8/16 3:53:09 阅读更多 →
AI 可以替我读完一本书,但不能替我经历阅读

AI 可以替我读完一本书,但不能替我经历阅读

最近辫子在搬家。 收拾东西的时候,我突然发现一个挺有意思的变化。 两年前搬家,我最多的东西可能还是衣服。 两年后的今天,最多的东西变成了书。 一本一本从书架上拿下来,装进箱子里,我才意识到:原来我已经…

2026/8/16 3:53:09 阅读更多 →
KaihongOS 桌面版原生 VS Code 上线

KaihongOS 桌面版原生 VS Code 上线

2026 年 8 月 15 日,深开鸿正式发布 KaihongOS 桌面版(x86)V5.0.2.53,业界首个基于开源鸿蒙的原生 VS Code 正式落地。 这一版本无需借助容器、无需手动安装,真正实现了"开箱即用",标志着开源鸿蒙…

2026/8/16 3:53:09 阅读更多 →
playwright 登录态失效排查实战:session cookie + Chrome 升级 + 权限设置 3 个根因诊断与 storageState 修复方案

playwright 登录态失效排查实战:session cookie + Chrome 升级 + 权限设置 3 个根因诊断与 storageState 修复方案

8 月 11 日,我让 AI 帮我登录 5 个 AI 平台(千问、硅基流动、智谱、商汤、腾讯云)查免费额度。那天一切顺利,AI 打开浏览器,我输验证码登录,AI 接管查数据,全程只花了 45 分钟。 我把这套流程写…

2026/8/16 3:53:09 阅读更多 →
C# Dictionary字典

C# Dictionary字典

Dictionary字典//字典:类似List 只能存储固定类型的数据,长度不固定//Array ArrayList List使用索引进行数据的操作,字典使用"键"进行数据的操作//存储结构:键值对(key-value)//键(key)&#…

2026/8/16 3:52:08 阅读更多 →

日新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/14 13:40:53 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/14 14:06:45 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/15 2:35:29 阅读更多 →