828 华为云征文|华为 Flexus 云服务器搭建萤火商城 2.0
《828 华为云征文|华为 Flexus 云服务器搭建萤火商城 2.0》
在 2024 年 9 月 14 日这个特别的日子,我着手利用华为 Flexus 云服务器搭建轻量级、高性能、前后端分离的电商系统萤火商城 2.0,开启了一段充满挑战与惊喜的旅程。 华为 Flexus 云服务器:强大的根基 华为 Flexus 云服务器以其卓越的性能和稳定性成为搭建电商系统的理想选择。其独特的架构能够高效地处理复杂的业务逻辑,为电商系统提供了坚实的底层支撑。 搭建过程:从无到有的蜕变 一、服务器环境初始化 - 操作系统选择与安装:登录华为 Flexus 云服务器控制台,选择 CentOS 操作系统进行安装。在安装过程中,仔细配置磁盘分区,为系统和后续应用预留足够的空间。例如,将系统盘划分为 50GB,数据盘根据电商系统的预期数据量预留 200GB 空间。- 基础软件安装:安装 JDK(Java Development Kit),确保服务器具备运行 Java 程序的环境。通过命令 yum install -y java-1.8.0-openjdk 进行安装。安装完成后,配置环境变量,在 /etc/profile 文件中添加 export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk 和 export PATH= P A T H : PATH: PATH:JAVA_HOME/bin ,然后执行 source /etc/profile 使配置生效。 二、获取萤火商城 2.0 代码 - 从代码仓库克隆:在服务器上使用 Git 工具从萤火商城 2.0 的官方代码仓库克隆代码。执行命令 git clone [仓库地址] ,将代码下载到指定目录,比如 /home/ecmmerce/ 。- 代码检查与整理:克隆完成后,检查代码的完整性。查看是否所有的文件都已正确下载,没有缺失或损坏的文件。同时,整理代码结构,删除不必要的示例文件和临时文件。 三、部署后端服务 - 后端代码上传与解压:将后端代码压缩包通过 SFTP(Secure File Transfer Protocol)工具上传至服务器。在服务器上执行解压命令,如 unzip backend.zip -d /home/ecmmerce/backend 。- 配置文件调整:打开后端服务的配置文件,通常是一个 application.properties 或者 application.yml 文件。在文件中配置数据库连接信息,将数据库的 IP 地址、端口、用户名、密码等信息正确填写。例如: plaintext
复制
spring.datasource.url=jdbc:mysql://[数据库 IP]:3306/ecmmerce?useSSL=false&serverTimezone=UTCspring.datasource.username=[数据库用户名]spring.datasource.password=[数据库密码] - 依赖安装与服务启动:进入后端代码目录,执行 mvn install 命令安装项目依赖。依赖安装完成后,通过 java -jar [后端服务 jar 包名称] 命令启动后端服务。启动后,查看服务日志,确保没有错误信息,服务正常启动并监听在指定端口,比如 8080 端口。 四、构建前端界面 - 前端代码编译:在前端代码目录下执行 npm install 命令安装前端依赖包。依赖安装完成后,执行 npm run build 命令进行代码编译和打包。编译过程中,注意查看是否有编译错误,如果有则根据错误提示进行修改。- 接口对接与优化:在前端代码中配置与后端服务的接口地址。例如,在 config.js 文件中设置 axios.defaults.baseURL = ‘http://[服务器 IP]:8080/api’ 。同时,对前端界面的加载性能进行优化,减少不必要的网络请求和图片资源大小。使用图片压缩工具对图片进行压缩,将大图片转换为 webp 格式以减少加载时间。- 前端服务部署:将编译好的前端静态文件部署到服务器上。可以使用 Nginx 作为静态资源服务器。安装 Nginx 后,在 /etc/nginx/conf.d/ 目录下创建一个配置文件,如 ecmmerce.conf ,内容如下: plaintext
复制
server { listen 80; server_name [服务器 IP]; location / { root /home/ecmmerce/frontend/dist; index index.html; }} 然后执行 nginx -s reload 命令重新加载 Nginx 配置。 配置优化过程:精益求精的雕琢 一、数据库优化 - 索引优化:分析电商系统中频繁查询的数据库表,如商品表、订单表等。为这些表的关键字段添加索引,例如在商品表的商品名称字段添加索引 CREATE INDEX idx_product_name ON product (product_name) 。添加索引后,通过 EXPLAIN 命令分析查询语句的执行计划,查看索引是否被正确使用。- 查询语句优化:检查后端服务中的数据库查询语句,避免使用复杂的嵌套查询和全表扫描。对于关联查询,确保关联字段都有索引。例如,将原来的复杂关联查询进行简化,通过合理的表设计和索引优化,提高查询效率。 二、服务器性能优化 - JVM 参数调整:根据服务器的硬件配置和电商系统的负载情况,调整 JVM(Java Virtual Machine)参数。在启动后端服务的命令中添加 -Xms2g -Xmx4g -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m ,分别设置堆内存的初始大小、最大大小以及元空间的大小。- 缓存机制引入:在后端服务中引入缓存机制,如使用 Redis 缓存热门商品信息和常用的配置信息。安装 Redis 后,在后端服务中集成 Redis 客户端,通过代码实现缓存的读写操作。例如,在获取商品信息的方法中,先从 Redis 中查询,如果不存在再从数据库中查询,并将查询结果存入 Redis 中,减少数据库的访问压力。 三、安全优化 - 防火墙配置:利用服务器的防火墙规则,限制对电商系统的访问来源。只允许特定的 IP 段或者合法的用户 IP 访问服务器的相关端口。例如,通过 firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source address=“192.168.1.0/24” port protocol=“tcp” port=“80” accept’ 命令允许 192.168.1.0/24 网段访问服务器的 80 端口。- 数据加密传输:在前端与后端服务之间的通信以及用户登录等环节,采用加密传输协议,如 HTTPS。通过配置证书和在 Nginx 中开启 HTTPS 支持,确保数据在传输过程中的安全性。 电商之光:萤火商城 2.0 上线 经过细致的搭建与优化,萤火商城 2.0 成功在华为 Flexus 云服务器上线。它以其轻量级、高性能的特点,为用户带来流畅的购物体验,为电商业务的发展奠定了坚实的基础。在未来的运营中,将持续关注系统性能,不断优化与改进,让这盏电商之灯更加璀璨。
相关文章:

828 华为云征文|华为 Flexus 云服务器搭建萤火商城 2.0
《828 华为云征文|华为 Flexus 云服务器搭建萤火商城 2.0》 在 2024 年 9 月 14 日这个特别的日子,我着手利用华为 Flexus 云服务器搭建轻量级、高性能、前后端分离的电商系统萤火商城 2.0,开启了一段充满挑战与惊喜的旅程。 华为 Flexus 云服…...

centos7安装MySQL5.7.44
下载压缩文件 命令: #放到在/usr/local目录下 cd /usr/local #上传命令选择安装包 rz #解压缩包 tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz #给包重命名为mysql mv mysql-5.7.44-linux-glibc2.12-x86_64 mysql #查看mysql目录下有什么东西 [rootlocal…...

HTTP 请求处理的完整流程到Servlet流程图
HTTP 请求处理的完整流程。从 TCP 三次握手开始,一直到 Servlet 处理请求并返回响应。 首先,让我解释一下 response.setContentType("text/html;charsetUTF-8"); 这行代码: 这行代码设置了 HTTP 响应的 Content-Type 头。它告诉浏…...

spingboot中创建简单的WebSocket服务和使用OKHttp创建socket客户端接收数据
背景 springboot 中使用okhttp3创建webSocket服务端 server1 和客户端 client1,客户端clinet1调用server1用于发送图片,创建客户端client2接收此图片. 在Spring Boot中使用OkHttp3创建WebSocket服务端和客户端,涉及到两个不同的操作ÿ…...

Redis入门2
在java中操作Redis Redis的Java客户端 Redis 的 Java 客户端很多,常用的几种: Jedis Lettuce Spring Data Redis Spring Data Redis 是 Spring 的一部分,对 Redis 底层开发包进行了高度封装。 在 Spring 项目中,可以使用Spring Data R…...

嵌入式Linux:信号是什么?
目录 1、信号的来源 2、信号的处理方式 3、信号的异步性 4、信号编号 信号是Linux系统中用于通知进程事件发生的一种机制,可以将其视为一种软件中断。信号类似于硬件中断,能够打断进程当前的执行流程,从而实现对中断机制的一种软件层面的…...

教你搭建一个wifi贴系统
大家好,我是鲸天科技千千,大家都知道我是做小程序开发的,平时会给大家分享一些互联网相关的创业项目,感兴趣的可以跟我关注一下。 搭建一个首先就是要搭建一个自己的wifi贴小程序,我们自己的工作就是把这个小程序推广…...

C#中的LINQ语句
LINQ(Language Integrated Query)是 .NET Framework 中的一个功能强大的查询语言,它允许开发者使用类似 SQL 的语法来查询和操作数据。在 C# 中,LINQ 可以用于查询数组、列表、集合、XML 文档、关系数据库等。以下是一些常见的 LI…...

【C++】——string(模拟实现)
文章目录 string类构造string类拷贝构造string类析构string类运算符重载string类部分常用接口的模拟实现 这篇博客中构造、拷贝构造、析构、还有一些短小频繁调用的函数就不用做函数和定义分离,因为在类中,这种函数会默认是内联函数 string类构造 构造函…...

c++20 std::format 格式化说明
在标头<format>定义 ()功能很强大,它把字符串当成一个模板,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘%’。 1、基本用法 (1)不带编号,即“{}”(2)带…...

HTB-Unified(log4j2漏洞、MongoDb替换管理员密码)
前言 各位师傅大家好,我是qmx_07,今天给大家讲解Unified靶机 渗透过程 信息搜集 服务器开放了SSH服务,HTTP服务 访问网站 验证log4j2漏洞 8443端口:UniFi 网络 ,访问查询 是否有Nday漏洞利用 可以观察到UniFi的版…...

每天五分钟深度学习PyTorch:不同的神经网络层设置不同的学习率
本文重点 我们前面学习了基本网络模型的搭建,获取网络模型的子结构,以及优化器optim,我们发现我们设置优化器的时候,是对整个模型设置的,也就是说整个模型的参数学习率是一样,本节课程我们学习如何给不同的网络层设置不同的学习率。主要还是通过优化器optim来实现的,本…...

【渗透测试】——DVWA靶场搭建
📖 前言:DVWA(Damn Vulnerable Web Application)是一个用于安全漏洞测试的 PHP/MySQL 网络应用,旨在为安全专业人士提供一个合法的环境,以测试他们的技能和工具,同时帮助 Web 开发者更好地理解 …...

国内人工智能产业发展现状及对策研究
一、引言 人工智能作为新时代科技革命和产业变革的核心力量,正深刻改变着全球经济格局。我国政府高度重视人工智能产业发展,将其列为国家战略性新兴产业。在此背景下,本文旨在分析我国人工智能产业发展现状,探讨面临的挑战&#x…...

完整版订单超时自动取消功能
前几天对实习还是继续学习技术产生了抉择,问了一个前辈,他抛给我一个问题,怎么做15分钟订单自动取消,我说然后到时间之后,自动执行这个订单关闭业务,比如把锁了的库存给解开等等操作,然后在数据…...

算法刷题:300. 最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组、1143. 最长公共子序列
300. 最长递增子序列 1.dp定义:dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度 2.递推公式:if (nums[i] > nums[j]) dp[i] max(dp[i], dp[j] 1); 注意这里不是要dp[i] 与 dp[j] 1进行比较,而是我们要取dp[j] 1的最大值…...

go 笔记
数据结构与 方法(增删改查) 安装goland,注意版本是2024.1.1,不是2024.2.1,软件下载地址也在链接中提供了 ‘go’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 在 Windows 搜索栏中输入“环境变量”&#…...

路由等保测评
1.身份鉴别 应对登录的用户进行身份标识和鉴别, 身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。 可以使用“ service password-encryption"命令对存储在配置文件中的所有口令和类似数据进行加密, 以避免攻击者通过读取配…...

C# 反射之动态生成dll/exe
这个可能应该属于反射的高级使用范围了,平常在项目中使用的人估计也不是很多。由于使用反射的话会降低性能,比如之前用到的GetValue、SetValue等之类,但是使用这种方式会大大提高效率,在这里我只想说,都直接写IL指令了…...

Rust 所有权 Slices
文章目录 发现宝藏1. Slice 的基础知识1.1 什么是 Slice?1.2 如何创建 Slice? 2. 处理字符串 Slice2.1 字符串的 Slice2.2 字符串的 Unicode 和切片 3. 在函数中使用 Slice3.1 传递 Slice 给函数3.2 可变 Slice 的函数 4. 复杂示例4.1 处理多维数组的 Sl…...

windows 安全与网络管理问题
问题:当编写的脚本或程序运行的时候,可能被windows阻止访问网络甚至被删除 避免被删除 wini 进入设置界面 -> 选择更新与安全 -> 选择windwos defender -> 点击添加排除项,将指定的文件或目录排除,避免被软件删除 允许…...

基于Python实现一个庆祝国庆节的小程序
功能: 添加互动功能:允许用户选择不同的祝福语或者查询不同的国庆节信息。动态背景音乐:播放国庆节相关的背景音乐。增加节日小测验:提供一些关于国庆节的趣味小测验,让用户参与。增强图形用户界面 (GUI):…...

Anaconda 安装与使用教程
Anaconda 安装与使用教程 介绍 Anaconda 是一个用于科学计算的 Python 和 R 的发行版,它包含了众多流行的科学计算、数据分析、机器学习等领域的库。本教程旨在帮助初学者快速上手 Anaconda,并学会如何使用其管理环境以及安装包。 第一步:…...

时序预测SARIMAX模型
1. 项目背景 本文基于kaggle平台相关竞赛项目,具体连接如下: Time Series Forecasting With SARIMAX 基本信息如内容说明、数据集、已提交代码、当前得分排名以及比赛规则等,如图【1】所示,可以认真阅读。 图 1 2. 数据读取 …...

gin集成jaeger中间件实现链路追踪
1. 背景 新业务线带来新项目启动,需要改进原有项目的基础框架和组件能力,以提升后续开发和维护效率。项目搭建主要包括技术选型、框架搭建、基础服务搭建等。这其中就涉及到链路追踪的内容,结合其中的踩坑情况,用一篇文章来说明完…...

前端层面----监控与埋点
前言: 站在产品的视角,经常会问如下几个问题: 产品有没有用户使用 用户用得怎么样 系统会不会经常出现异常 如何更好地满足用户需求服务用户 当站在技术视角时,经常会问如下几个问题: 系统出现异常的频率如何 异常…...

linux Command
linux Command 1. 系统监控命令 1.1 top top [param] top -H -p pid,查看进程pid下面的子线程。-b以处理模式操作-c显示完整的命令行而不只是显示命令名。-d 屏幕刷新间隔时间。-l 忽略失效过程。-s 保密模式。-S 累积模式。-u 【用户名】 指定用户名。-p 【进程…...

uniapp登录页面( 适配:pc、小程序、h5)
<!-- 简洁登录页面 --> <template><view class"login-bg"><image class"img-a" src"https://zhoukaiwen.com/img/loginImg/2.png"></image><image class"img-b" src"https://zhoukaiwen.com/im…...

关于OceanBase 多模一体化的浅析
在当今多元化的业务生态中,各行各业对数据库系统的需求各有侧重。举例来说,金融风控领域对数据库的高效事务处理(TP)和分析处理(AP)能力有着严格要求;游戏行业则更加注重文档数据库的灵活性和性…...

快速git
下载 sudo apt install git配置 $ git config --global user.name "John Doe" $ git config --global user.email johndoeexample.com没有空格可以不加双引号如果~/.ssh没有先创建(下一步用) ssh方式制作密钥 github解释 #以邮箱作为标签…...