项目实战:电商平台-ECshop
项目实战:电商平台-ECshop
LAMP/LNMP 组件
LAMP:Linux+Apache+Mysql/Mariadb+PHP/Python/Perl。
LNMP:Linux+Nginx+Mysql/Mariadb+PHP/Python/Perl。
- Linux:操作系统,提供程序运行基础。
- Apache/Nginx:Web 服务器,提供网页访问。
- Mysql/Mariadb:数据库,提供数据管理。
- PHP/Python/Perl:脚本语言,提供动态执行生成。
LNMP 工作原理

-
客户端通过HTTP协议请求web服务器资源
-
web 服务器根据资源类型进行处理:
-
静态资源:web直接把资源返回至客户端。
-
动态资源:通过指定的通讯方式将脚本网页交给后端程序执行。如果运算期间需要连接mysql数据库,则通过mysql连接器连接mysql。后端程序将运算结果返回给web服务。
-
-
web服务将结果返回给客户端。
实验环境
| 主机名 | IP 地址 | 角色 |
|---|---|---|
| shop.ggg.cloud | 10.1.8.21 | nginx |
| php.ggg.cloud | 10.1.8.22 | php |
| db.ggg.cloud | 10.1.8.23 | mariadb |
| nfs.ggg.cloud | 10.1.8.24 | nfs |
所有节点关闭防火墙和SELinux。
预配置
所有节点配置名称解析:
[root@all-node ~ ]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.1.8.21 shop.ggg.cloud shop
10.1.8.22 php.ggg.cloud php
10.1.8.23 db.ggg.cloud db
10.1.8.24 nfs.ggg.cloud nfs
部署 nfs 服务器
由于静态文件和动态文件没有分开,所以 Web 服务器和 PHP 服务器都要存一份。实验环境通过NFS共享提供ECShop应用。
下载 ECShop,上传到家目录。
[root@nfs ~ 09:26:46]# yum install -y nfs-utils
[root@nfs ~ 09:28:58]# mkdir /www
[root@nfs ~ 09:29:15]# echo '/www 10.1.8.0/24(rw)'>/etc/exports
[root@nfs ~ 09:29:47]# systemctl enable nfs-server.service --now
# 准备 ECShop 资源
[root@nfs ~ 09:29:47]# wget http://192.168.46.200/course-materials/softwares/stage01/ECShop_V4.1.20_UTF8.zip
[root@nfs ~ 09:36:36]# unzip ECShop_V4.1.20_UTF8.zip# unzip ECShop_V4.1.20_UTF8.zip
[root@nfs ~ 09:40:18]# cp -a ECShop_V4.1.20_UTF8_release20250416/source/ecshop/ /www
# 准备网页测试文件
[root@nfs ~ 09:40:45]# echo 'Hello World !' > /www/test.html
[root@nfs ~ 09:42:09]# cat > /www/test.php <<EOF
<?php
echo "<h1>Hello World !</h1>\n";
?>
EOF
[root@nfs ~ 09:42:35]# cat > /www/test-mysql.php <<'EOF'
<?php
$link=mysqli_connect('db.ggg.cloud','ecshop','123');
if($link)
echo "<h1>Connect Mysql Success !</h1>\n";
else
echo "<h1>Connect Mysql Failed !</h1>\n";
$link->close();
?>
EOF
[root@nfs ~ 09:42:59]# cat > /www/info.php <<EOF
<?php
phpinfo();
?>
EOF
# 通过查询shop服务器,获知nginx账户信息
[root@nfs ~ 09:43:11]# yum install -y nginx
[root@nfs ~ 09:43:24]# grep nginx /etc/passwd
nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin
# 修改文件权限
[root@nfs ~ 09:43:40]# chown -R 997:995 /www
部署 db 服务器
[root@db ~ 09:26:36]# yum install -y mariadb-server
[root@db ~ 09:29:47]# systemctl enable mariadb --now
# 加固 MariaDB
[root@db ~ 09:31:38]# mysql_secure_installation
# 交互式提示您进行更改,包括:
# - 为root帐户设置密码,例如123。
# - 禁止root帐户从本地主机外部访问数据库。
# - 删除匿名用户帐户。
# - 删除用于演示的test数据库。
# 准备ECShop数据库和用户
[root@db ~ 09:31:55]# mysql -uroot -p123
mysql> CREATE DATABASE ecshop;
mysql> CREATE USER ecshop@'%' identified by '123';
mysql> GRANT ALL PRIVILEGES ON ecshop.* TO 'ecshop'@'%';
mysql> FLUSH PRIVILEGES;
mysql> exit
部署 PHP 服务器
部署 php 服务
[root@php ~ 09:26:24]# echo 'nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin' >> /etc/passwd
[root@php ~ 09:47:43]# groupadd -g 995 nginx
# 安装 php 基础包
[root@php ~ 09:49:13]# yum install -y php php-fpm php-mysqlnd
# 安装 php 扩展包
[root@php ~ 09:51:43]# yum install -y php-gd php-common php-pear php-mbstring php-mcrypt
[root@php ~]# vim /etc/php-fpm.d/www.conf
#使用;号注释掉原有listen行
;listen = 127.0.0.1:9000
# 新增listen 监听所有ip的9000端口
listen = 9000
# 支持监听特定ip的9000端口,例如listen = 10.1.8.22:9000
# 使用;号注释掉原有 listen.allowed_clients 行
# 允许所有客户端访问
;listen.allowed_clients = 127.0.0.1
# 设置运行用户
user = nginx
group = nginx
[root@php ~ 09:53:25]# systemctl enable php-fpm.service --now
[root@php ~ 09:53:31]# chown -R nginx:nginx /var/lib/php/*
挂载存储
# 安装 nfs 工具
[root@php ~ 09:53:53]# yum install -y nfs-utils
# 挂载存储
[root@php ~ 09:53:53]# echo 'nfs.ggg.cloud:/www /www nfs defaults 0 0' >> /etc/fstab
[root@php ~ 09:54:57]# mount /www
[root@php ~ 09:55:01]# df -h /www
文件系统 容量 已用 可用 已用% 挂载点
nfs.ggg.cloud:/www 50G 1.8G 49G 4% /www
[root@php ~ 09:55:04]# ls /www
ecshop info.php test.html test-mysql.php test.php
php 程序测试
[root@php ~ 09:55:17]# php /www/test.php
<h1>Hello World !</h1>
[root@php ~ 09:55:34]# php /www/test-mysql.php
<h1>Connect Mysql Success !</h1>
# 执行 info.php 的输出内容太多,这里省略。
部署 Nginx 服务器
# 部署 Nginx 服务
[root@shop ~ 09:49:22]# yum install -y nginx
[root@shop ~ 09:52:44]# systemctl enable nginx --now
# 安装 nfs 工具
[root@shop ~ 09:56:47]# yum install -y nfs-utils
# 挂载存储
[root@shop ~ 09:56:47]# echo 'nfs.ggg.cloud:/www /usr/share/nginx/html nfs defaults 0 0'>>/etc/fstab
[root@shop ~ 09:58:34]# mount /usr/share/nginx/html/
[root@shop ~ 09:58:46]# df -h /usr/share/nginx/html/
文件系统 容量 已用 可用 已用% 挂载点
nfs.ggg.cloud:/www 50G 1.8G 49G 4% /usr/share/nginx/html
[root@shop ~ 09:59:03]# ls /usr/share/nginx/html/
ecshop info.php test.html test-mysql.php test.php
配置 Nginx 对接 PHP
[root@shop ~ 10:02:00]# cat > /etc/nginx/conf.d/vhost-shop.conf <<'EOF'
server {
listen 80;
server_name shop.ggg.cloud;
# 静态资源处理
location / {
root /usr/share/nginx/html/ecshop;
index index.html index.htm index.php;
}
# PHP 请求处理
location ~ \.php$ {
# 配置 PHP-FPM 监听的地址和端口
fastcgi_pass php.ggg.cloud:9000;
fastcgi_index index.php;
# 配置 php 服务器上 ecshop 应用文件所在位置
fastcgi_param SCRIPT_FILENAME /www/ecshop/$fastcgi_script_name;
include fastcgi_params;
}
}
EOF
# 重启服务
[root@shop ~]# systemctl restart nginx
配置 ECshop
客户端配置 shop.ggg.cloud 名称解析。访问http://shop.laoma.cloud/。


点击下一步:配置系统

页面上方出现的 Warning,提示使用系统时区不安全,暂时忽略。

输入数据库账户信息后,点击搜,选中搜索到的数据库。
在弹出的界面,点击确定。

继续完成其他配置,时区选择中华人民共和国,点击立即安装。
关闭该窗口,重新点击立即安装。
关闭网页。
访问 ECshop
商城首页 http://shop.laoma.cloud

商城管理后台 http://shop.ggg.cloud/admin

使用ecshop账户登录

登录后界面如下:

管理中心

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)