项目实战-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)基本是照葫芦画瓢。