项目实战:电商平台-ECshop
项目实战电商平台-ECshopLAMP/LNMP 组件LAMPLinuxApacheMysql/MariadbPHP/Python/Perl。LNMPLinuxNginxMysql/MariadbPHP/Python/Perl。Linux操作系统提供程序运行基础。Apache/NginxWeb 服务器提供网页访问。Mysql/Mariadb数据库提供数据管理。PHP/Python/Perl脚本语言提供动态执行生成。LNMP 工作原理客户端通过HTTP协议请求web服务器资源web 服务器根据资源类型进行处理静态资源web直接把资源返回至客户端。动态资源通过指定的通讯方式将脚本网页交给后端程序执行。如果运算期间需要连接mysql数据库则通过mysql连接器连接mysql。后端程序将运算结果返回给web服务。web服务将结果返回给客户端。实验环境主机名IP 地址角色shop.ggg.cloud10.1.8.21nginxphp.ggg.cloud10.1.8.22phpdb.ggg.cloud10.1.8.23mariadbnfs.ggg.cloud10.1.8.24nfs所有节点关闭防火墙和SELinux。预配置所有节点配置名称解析[rootall-node ~]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain610.1.8.21 shop.ggg.cloud shop10.1.8.22 php.ggg.cloud php10.1.8.23 db.ggg.cloud db10.1.8.24 nfs.ggg.cloud nfs部署 nfs 服务器由于静态文件和动态文件没有分开所以 Web 服务器和 PHP 服务器都要存一份。实验环境通过NFS共享提供ECShop应用。下载 ECShop上传到家目录。[rootnfs ~ 09:26:46]# yum install -y nfs-utils[rootnfs ~ 09:28:58]# mkdir /www[rootnfs ~ 09:29:15]# echo /www 10.1.8.0/24(rw)/etc/exports[rootnfs ~ 09:29:47]# systemctl enable nfs-server.service --now# 准备 ECShop 资源[rootnfs ~ 09:29:47]# wget http://192.168.46.200/course-materials/softwares/stage01/ECShop_V4.1.20_UTF8.zip[rootnfs ~ 09:36:36]# unzip ECShop_V4.1.20_UTF8.zip# unzip ECShop_V4.1.20_UTF8.zip[rootnfs ~ 09:40:18]# cp -a ECShop_V4.1.20_UTF8_release20250416/source/ecshop/ /www# 准备网页测试文件[rootnfs ~ 09:40:45]# echo Hello World ! /www/test.html[rootnfs ~ 09:42:09]# cat /www/test.php EOF?phpechoh1Hello World !/h1\n;?EOF[rootnfs ~ 09:42:35]# cat /www/test-mysql.php EOF?php$linkmysqli_connect(db.ggg.cloud,ecshop,123);if($link)echoh1Connect Mysql Success !/h1\n;elseechoh1Connect Mysql Failed !/h1\n;$link-close();?EOF[rootnfs ~ 09:42:59]# cat /www/info.php EOF?php phpinfo();?EOF# 通过查询shop服务器获知nginx账户信息[rootnfs ~ 09:43:11]# yum install -y nginx[rootnfs ~ 09:43:24]# grep nginx /etc/passwdnginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin# 修改文件权限[rootnfs ~ 09:43:40]# chown -R 997:995 /www部署 db 服务器[rootdb ~ 09:26:36]# yum install -y mariadb-server[rootdb ~ 09:29:47]# systemctl enable mariadb --now# 加固 MariaDB[rootdb ~ 09:31:38]# mysql_secure_installation# 交互式提示您进行更改包括# - 为root帐户设置密码例如123。# - 禁止root帐户从本地主机外部访问数据库。# - 删除匿名用户帐户。# - 删除用于演示的test数据库。# 准备ECShop数据库和用户[rootdb ~ 09:31:55]# mysql -uroot -p123mysqlCREATE DATABASE ecshop;mysqlCREATEUSERecshop%identified by123;mysqlGRANT ALL PRIVILEGES ON ecshop.* TOecshop%;mysqlFLUSH PRIVILEGES;mysqlexit部署 PHP 服务器部署 php 服务[rootphp ~ 09:26:24]# echo nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin /etc/passwd[rootphp ~ 09:47:43]# groupadd -g 995 nginx# 安装 php 基础包[rootphp ~ 09:49:13]# yum install -y php php-fpm php-mysqlnd# 安装 php 扩展包[rootphp ~ 09:51:43]# yum install -y php-gd php-common php-pear php-mbstring php-mcrypt[rootphp ~]# vim /etc/php-fpm.d/www.conf#使用;号注释掉原有listen行;listen127.0.0.1:9000# 新增listen 监听所有ip的9000端口listen9000# 支持监听特定ip的9000端口例如listen 10.1.8.22:9000# 使用;号注释掉原有 listen.allowed_clients 行# 允许所有客户端访问;listen.allowed_clients127.0.0.1# 设置运行用户usernginx groupnginx[rootphp ~ 09:53:25]# systemctl enable php-fpm.service --now[rootphp ~ 09:53:31]# chown -R nginx:nginx /var/lib/php/*挂载存储# 安装 nfs 工具[rootphp ~ 09:53:53]# yum install -y nfs-utils# 挂载存储[rootphp ~ 09:53:53]# echo nfs.ggg.cloud:/www /www nfs defaults 0 0 /etc/fstab[rootphp ~ 09:54:57]# mount /www[rootphp ~ 09:55:01]# df -h /www文件系统 容量 已用 可用 已用% 挂载点 nfs.ggg.cloud:/www 50G1.8G 49G4% /www[rootphp ~ 09:55:04]# ls /wwwecshop info.php test.html test-mysql.php test.phpphp 程序测试[rootphp ~ 09:55:17]# php /www/test.phph1Hello World!/h1[rootphp ~ 09:55:34]# php /www/test-mysql.phph1Connect Mysql Success!/h1# 执行 info.php 的输出内容太多这里省略。部署 Nginx 服务器# 部署 Nginx 服务[rootshop ~ 09:49:22]# yum install -y nginx[rootshop ~ 09:52:44]# systemctl enable nginx --now# 安装 nfs 工具[rootshop ~ 09:56:47]# yum install -y nfs-utils# 挂载存储[rootshop ~ 09:56:47]# echo nfs.ggg.cloud:/www /usr/share/nginx/html nfs defaults 0 0/etc/fstab[rootshop ~ 09:58:34]# mount /usr/share/nginx/html/[rootshop ~ 09:58:46]# df -h /usr/share/nginx/html/文件系统 容量 已用 可用 已用% 挂载点 nfs.ggg.cloud:/www 50G1.8G 49G4% /usr/share/nginx/html[rootshop ~ 09:59:03]# ls /usr/share/nginx/html/ecshop info.php test.html test-mysql.php test.php配置 Nginx 对接 PHP[rootshop ~10:02:00]# cat /etc/nginx/conf.d/vhost-shop.conf EOFserver{listen80;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# 重启服务[rootshop ~]# systemctl restart nginx配置 ECshop客户端配置 shop.ggg.cloud 名称解析。访问http://shop.laoma.cloud/。点击下一步配置系统页面上方出现的Warning提示使用系统时区不安全暂时忽略。输入数据库账户信息后点击搜选中搜索到的数据库。在弹出的界面点击确定。继续完成其他配置时区选择中华人民共和国点击立即安装。关闭该窗口重新点击立即安装。关闭网页。访问 ECshop商城首页 http://shop.laoma.cloud商城管理后台 http://shop.ggg.cloud/admin使用ecshop账户登录登录后界面如下管理中心