项目实战: LAMP-电商平台-iwebshop

LAMP-电商平台-iwebshop

bash 复制代码
# 配置服务器流程:
# 1. 安装软件包
# 2. 准备相关材料
# 3. 修改配置文件
# 4. 启用并启动服务
# 5. 设置防火墙
# 6. 客户端测试

#######################################################
10.1.8.11 client.migaomei.cloud client
10.1.8.20 www.migaomei.cloud www
10.1.8.20 proxy.migaomei.cloud proxy
10.1.8.21 company.migaomei.cloud company
10.1.8.22 iwebshop.migaomei.cloud iwebshop


proxy 作为代理节点:
  1. 当访问www.migaomei.cloud,代理节点默认主页
  2. 当访问www.migaomei.cloud/shop/,代理到iwebshop.migaomei.cloud/shop/
  3. 当访问www.migaomei.cloud/company/,代理到company.migaomei.cloud/company/

company  作为公司站点,提供欢迎界面:欢迎来到万和IT教育。
iwebshop 作为商城站点,提供欢迎界面:欢迎来到万和购物天堂。
#######################################################

# 准备后端真实服务器
[root@company ~ 10:02:05]# yum install -y nginx
[root@company ~ 10:02:15]# vim /etc/nginx/nginx.conf
......
    server {
        # 设置字符集,为了能让网页端显示的中文正常
        charset utf-8;
        listen       80;
......
[root@company ~ 10:03:05]# systemctl enable nginx --now
[root@company ~ 10:03:06]# mkdir /usr/share/nginx/html/company/
[root@company ~ 10:03:06]# echo '欢迎来到万和 IT 教育' > /usr/share/nginx/html/company/index.html

[root@iwebshop ~ 10:02:05]# yum install -y nginx
[root@iwebshop ~ 10:02:15]# vim /etc/nginx/nginx.conf
......
    server {
        # 设置字符集
        charset utf-8;
        listen       80;
......
[root@iwebshop ~ 10:02:43]# systemctl enable nginx --now
[root@iwebshop ~ 10:03:00]# echo '欢迎来到万和购物天堂' > /usr/share/nginx/html/shop/index.html

#搭建 Nginx 反向代理服务器,核心目的是:让用户通过同一台代理服务器(proxy 主机)的不同路径,访问背后两台不同的目标服务器,同时还保留了默认的本地静态网页访问功能。
[root@proxy ~ 10:08:59]# yum install -y nginx
[root@proxy ~ 10:09:10]# cp /etc/nginx/nginx.conf /etc/nginx/conf.d/proxy.conf
[root@proxy ~ 10:09:34]# vim /etc/nginx/conf.d/proxy.conf
server {
    listen       80;
    listen       [::]:80;
    server_name  _;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
       root         /usr/share/nginx/html;
    }
    location /company/ {
       proxy_pass http://company.migaomei.cloud; 
    }
    location /shop/ {
       proxy_pass http://iwebshop.migaomei.cloud;
       proxy_set_header Host $host;                # 传递客户端访问的域名
       proxy_set_header X-Real-IP $remote_addr;    # 传递客户端真实IP
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #传递IP链路
       proxy_set_header X-Forwarded-Proto $scheme; # 传递请求协议(http/https)
    }
}

[root@proxy ~ 10:11:35]# systemctl enable nginx --now
配置项 作用说明
listen 80; listen [::]:80; 同时监听 IPv4 和 IPv6 的 80 端口(HTTP 协议默认端口)
server_name _; 匹配所有未明确配置的域名(默认服务器块,适合作为通用反向代理或默认站点)
include /etc/nginx/default.d/*.conf; 引入默认目录下的额外配置(可用于拆分零散配置,保持主配置整洁)
location / 根路径 / 访问本地静态文件,根目录为 /usr/share/nginx/html(Nginx 默认静态文件目录)
location /company/ 路径 /company/ 反向代理到远程服务 http://company.migaomei.cloud
location /shop/ 路径 /shop/ 反向代理到远程服务 http://iwebshop.migaomei.cloud,并传递关键请求头
bash 复制代码
# 访问测试
[root@client ~ 10:16:34]# curl http://www.migaomei.cloud/company/
欢迎来到万和 IT 教育
[root@client ~ 10:16:35]# curl http://www.migaomei.cloud/shop/
欢迎来到万和购物天堂


################## 准备商城运行环境 ##############################
# 商城运行环境需要的php版本是5.5-7.3之间
# 这里以7.2版本为例
[root@iwebshop ~ 11:40:05]# yum install -y yum-utils
[root@iwebshop ~ 11:40:05]# yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
[root@iwebshop ~ 11:40:05]# yum-config-manager --disable 'remi-php*'
[root@iwebshop ~ 11:40:05]# yum-config-manager --enable remi-php72
[root@iwebshop ~ 11:40:05]# yum install -y php php-fpm
[root@iwebshop ~ 11:20:01]# systemctl enable php-fpm --now
命令 作用
yum install -y yum-utils 安装 yum 工具集(提供 yum-config-manager 命令,用于管理 repo 源)
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm 安装 Remi 仓库(CentOS 7 第三方 PHP 仓库,提供多个 PHP 版本)
yum-config-manager --disable 'remi-php*' 禁用 Remi 仓库中所有 PHP 相关子仓库(避免版本冲突)
yum-config-manager --enable remi-php72 单独启用 PHP 7.2 仓库(指定安装目标版本)
yum install -y php php-fpm 安装 PHP 7.2 核心组件 + PHP-FPM(FastCGI 进程管理器,用于 Nginx/Apache 解析 PHP)
systemctl enable php-fpm --now 开机自启 + 立即启动 php-fpm 服务
bash 复制代码
# 配置 Nginx支持 PHP
[root@iwebshop ~ 10:20:29]# vim /etc/nginx/default.d/php.conf
location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}
[root@iwebshop ~ 10:21:04]# systemctl restart nginx
配置项 作用
location ~ \.php$ 匹配所有以 .php 结尾的请求(~ 表示正则匹配)
try_files $uri =404 先检查请求的 PHP 文件是否存在,不存在直接返回 404(防止路径遍历攻击)
fastcgi_pass 127.0.0.1:9000 转发 PHP 请求到本地 PHP-FPM 的 9000 端口(需确保 PHP-FPM 已启动并监听该端口)
fastcgi_index index.php 若请求路径是目录(如 /test/),默认查找 index.php
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name 告诉 PHP-FPM 脚本的真实路径(关键配置,缺失会导致 PHP 报 "文件不存在" 错误)
include fastcgi_params 引入 Nginx 内置的 FastCGI 通用参数(如 REQUEST_METHODQUERY_STRING 等)
bash 复制代码
# 测试php
[root@iwebshop ~ 10:22:24]# cat > /usr/share/nginx/html/phpinfo.php << 'EOF'
<?php phpinfo(); ?>
EOF
#<?php ... ?>:PHP 代码的开始和结束标记(告诉服务器这部分内容需要用 PHP 解析器执行)。
#phpinfo();:PHP 内置函数,功能是打印出当前 PHP 环境的完整信息

[root@client ~ 10:27:35]# curl http://www.migaomei.cloud/shop/phpinfo.php

# 配置数据库
[root@iwebshop ~ 10:29:05]# yum install -y mariadb-server
[root@iwebshop ~ 10:29:05]# systemctl enable mariadb --now

# 安全初始化,设置root密码为123
[root@iwebshop ~ 10:29:22]# mysql_secure_installation

[root@iwebshop ~ 10:30:22]# mysql -u root -p123
MariaDB [(none)]> CREATE DATABASE iwebshop;
MariaDB [(none)]> CREATE USER iwebshop@localhost IDENTIFIED BY '123';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON iwebshop.* TO iwebshop@localhost;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit
操作 作用
CREATE DATABASE iwebshop; 创建了名为 iwebshop 的数据库(项目数据将存储在这里)
CREATE USER iwebshop@localhost IDENTIFIED BY '123'; 创建了专用数据库用户 iwebshop(仅允许本地连接),密码 123
GRANT ALL PRIVILEGES ON iwebshop.* TO iwebshop@localhost; 授权该用户操作 iwebshop 数据库的所有权限(增删改查、建表等)
FLUSH PRIVILEGES; 刷新权限表,让授权立即生效
bash 复制代码
################## 准备商城运行环境 ##############################

################## 配置商城 ##############################
# 安装网站需要的依赖包
[root@iwebshop ~ 11:40:05]# yum install -y php-mysqlnd php-gd php-xml php-mbstring php-json php-opcache php-cli php-pecl-zip

# php-fpm需要以nginx身份运行,因为nginx账户对目录/usr/share/nginx/html/iwebshop读写权限
[root@iwebshop ~ 11:22:46]# vim /etc/php-fpm.d/www.conf
# 修改以下参数,其他保持默认
user = nginx
group = nginx
[root@iwebshop ~ 11:20:01]# systemctl restart php-fpm


# 准备网站文件,找老师获取商城材料
[root@iwebshop ~ 11:10:08]# ls
anaconda-ks.cfg  iwebshop-v.5.15.zip  upload.zip
[root@iwebshop ~ 11:12:59]# unzip iwebshop-v.5.15.zip
[root@iwebshop ~ 11:13:18]# unzip upload.zip
[root@iwebshop ~ 11:13:18]# mv iwebshop-v.5.15 /usr/share/nginx/html/shop
[root@iwebshop ~ 11:14:58]# cp -a upload/* /usr/share/nginx/html/shop/upload/
[root@iwebshop ~ 11:21:36]# chown -R nginx:nginx /usr/share/nginx/html/shop/

# 配置虚拟主机
[root@iwebshop ~ 11:10:10]# cp /etc/nginx/nginx.conf /etc/nginx/conf.d/vhost-shop.conf
[root@iwebshop ~ 11:10:36]# vim /etc/nginx/conf.d/vhost-shop.conf
server {
    charset      utf-8;
    listen       80;
    listen       [::]:80;
    server_name  www.migaomei.cloud;
    root         /usr/share/nginx/html;
    index        index.php index.html;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;
}
[root@iwebshop ~ 11:16:10]# systemctl restart nginx

migaomei123
################## 配置商城 ##############################

商城 LNMP LAMP
Linux
Nginx Apache
MySQL MariaDB
PHP Python Perl


www.migaomei.cloud
代理:
  1. 默认代理节点
  2. 公司宣传站点
  3. 商城

开发一个简单的shell脚本

bash 复制代码
开发脚本monitor.sh,用来监控操作系统以下资源:
1. 收集硬件CPU、内存、硬盘、网卡主要信息
2. 查看cpu、内存、文件系统使用率
3. 监控当前系统网络IO和磁盘IO
使用简单的命令和管道处理,不要使用sed、awk、命令替换等高级用法

#!/bin/bash
echo hello world


vim monitor.sh
[root@proxy ~ 16:32:14]# cat monitor.sh 
#!/bin/bash

# 系统资源监控脚本 monitor.sh
# 功能:收集CPU、内存、硬盘、网卡信息,监控使用率及IO状态
# 依赖:ifstat(若未安装可执行 yum install -y ifstat 安装)

echo "========================================"
echo "          系统资源监控报告"
echo "========================================"

# 1. 收集硬件基础信息
echo -e "\n【1. 硬件基础信息】"
echo -e "\n--- CPU 硬件信息 ---"
cat /proc/cpuinfo | grep "model name" | grep -v grep
cat /proc/cpuinfo | grep "cpu cores" | grep -v grep

echo -e "\n--- 内存硬件信息 ---"
cat /proc/meminfo | grep "MemTotal" | grep -v grep

echo -e "\n--- 硬盘硬件信息 ---"
lsblk | grep "disk" | grep -v grep

echo -e "\n--- 网卡硬件信息 ---"
ip link show | grep "UP" | grep -v grep

# 2. 查看CPU、内存、文件系统使用率
echo -e "\n\n【2. 资源使用率】"
echo -e "\n--- CPU 使用率(整体负载) ---"
uptime | grep -v grep

echo -e "\n--- 内存使用率 ---"
free -h | grep "Mem" | grep -v grep
free -h | grep "Swap" | grep -v grep

echo -e "\n--- 文件系统使用率 ---"
df -h | grep -v "tmpfs" | grep -v "udev"

# 3. 监控网络IO和磁盘IO
echo -e "\n\n【3. IO 监控】"
echo -e "\n--- 网络IO(实时5秒) ---"
ifstat -t 1 5 | grep -v "Time"

echo -e "\n--- 磁盘IO(实时状态) ---"
iostat -d -x 1 3 | grep -v "Device" | grep -v "avg-cpu"

echo -e "\n========================================"
echo "          监控完成 $(date)"
echo "========================================"
bash 复制代码
[root@storage ~ 16:39:25]# ./monitor.sh
========================================
          系统资源监控报告
========================================

【1. 硬件基础信息】

--- CPU 硬件信息 ---
model name	: AMD Ryzen 9 5900HX with Radeon Graphics
model name	: AMD Ryzen 9 5900HX with Radeon Graphics
cpu cores	: 1
cpu cores	: 1

--- 内存硬件信息 ---
MemTotal:        4026124 kB

--- 硬盘硬件信息 ---
sda               8:0    0   20G  0 disk 
sdb               8:16   0   20G  0 disk 

--- 网卡硬件信息 ---
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
3: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000


【2. 资源使用率】

--- CPU 使用率(整体负载) ---
 16:39:27 up 40 min,  1 user,  load average: 0.00, 0.01, 0.05

--- 内存使用率 ---
Mem:           3.8G        184M        3.4G         11M        278M        3.4G
Swap:          2.0G          0B        2.0G

--- 文件系统使用率 ---
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   17G  1.7G   16G  10% /
/dev/sda1               1014M  139M  876M  14% /boot


【3. IO 监控】

--- 网络IO(实时5秒) ---
#kernel
Interface        RX Pkts/Rate    TX Pkts/Rate    RX Data/Rate    TX Data/Rate  
                 RX Errs/Drop    TX Errs/Drop    RX Over/Rate    TX Coll/Rate  

--- 磁盘IO(实时状态) ---
Linux 3.10.0-1160.71.1.el7.x86_64 (storage.migaomei.cloud) 	01/22/2026 	_x86_64_	(2 CPU)

scd0              0.00     0.00    0.01    0.00     0.43     0.00   114.22     0.00    1.33    1.33    0.00   1.00   0.00
sda               0.00     0.05    2.71    0.49   110.10     6.09    72.55     0.00    0.40    0.40    0.39   0.22   0.07
dm-0              0.00     0.00    2.24    0.55   105.14     5.24    79.35     0.00    0.45    0.46    0.42   0.24   0.07
dm-1              0.00     0.00    0.04    0.00     0.91     0.00    50.09     0.00    0.22    0.22    0.00   0.09   0.00
sdb               0.00     0.00    0.04    0.00     1.32     0.00    61.75     0.00    0.21    0.21    0.00   0.18   0.00

scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00


========================================
          监控完成 Thu Jan 22 16:39:29 CST 2026
========================================
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00


========================================
          监控完成 Thu Jan 22 16:39:29 CST 2026
========================================
相关推荐
qq_351754782 小时前
关于vue3切换空白页问题解决
开发语言·前端
风景的人生2 小时前
小程序接收respose中的数组
前端·微信小程序·小程序
晚霞的不甘2 小时前
Flutter for OpenHarmony 电商 App 搜索功能深度解析:从点击到反馈的完整实现
开发语言·前端·javascript·flutter·前端框架
Dragon Wu2 小时前
React Native MMKV完整封装
前端·javascript·react native·react.js
Remember_9932 小时前
网络原理初识:从基础概念到协议分层
开发语言·网络·php
前端(从入门到入土)2 小时前
解决Webpack打包白屏报错问题l.a.browse is not a function
前端·javascript
Jul1en_2 小时前
【Web自动化测试】Selenium常用函数+IDEA断言配置
前端·selenium·intellij-idea
Marshmallowc2 小时前
从源码深度解析 React:Hook 如何在 Fiber 中存储?DOM Ref 如何绑定?
前端·react.js·前端框架·fiber
Eiceblue2 小时前
Vue文档编辑器(Word默认功能)示例
前端·vue.js·word