当前位置: 首页 > news >正文

鸿蒙云购物系统 - 阿里云部署文档

鸿蒙云购物系统 - 阿里云部署文档

本文档说明如何将鸿蒙云购物系统(Java Web + MySQL)部署到阿里云 ECS 上,并可选使用阿里云 RDS MySQL、域名与 HTTPS。


一、部署架构概览

组件说明
应用Spring MVC + MyBatis,打包为 WAR,运行在 Tomcat
数据库MySQL 5.7+,库名harmony_market
部署方式单机:ECS 上安装 JDK + Tomcat + MySQL;或应用在 ECS、数据库使用阿里云 RDS

推荐:1 台 ECS(应用 + 可选自建 MySQL)ECS + RDS MySQL


二、准备工作

2.1 阿里云账号与资源

  • 已注册阿里云账号并完成实名认证。
  • 已购买ECS 实例(推荐:Ubuntu 22.04、CentOS 7/8 或 Alibaba Cloud Linux 2,2 核 2G 起,如 ecs.e-c1m1.large)。
  • (可选)已购买RDS MySQL实例,用于数据库单独部署、备份与高可用。

2.2 本地准备

  • 项目在本地可正常编译、运行。
  • 已执行sql/harmony_market.sql在本地或测试库验证通过。
  • 可打包出Market.war(或使用 IDE 导出的 WAR / 部署目录)。

三、ECS 基础环境

示例环境:华北2(北京)、Ubuntu 22.04 64 位、2 核 2 GiB、公网 IP 如 8.131.73.250。以下同时给出Ubuntu 22.04CentOS两种系统的命令,请按实际系统选择。

3.1 登录 ECS

使用阿里云控制台远程连接(VNC)或本地 SSH:

sshroot@<你的ECS公网IP># 示例:ssh root@8.131.73.250(Ubuntu 可能需先启用 root 或使用 ubuntu 用户 + sudo)

3.2 安装 JDK 8

Ubuntu 22.04:

sudoaptupdatesudoaptinstall-yopenjdk-8-jdkjava-versionjavac-version

CentOS 7/8:

yuminstall-yjava-1.8.0-openjdk java-1.8.0-openjdk-develjava-versionjavac-version

3.3 安装 MySQL 5.7/8(当数据库部署在 ECS 时)

Ubuntu 22.04(默认是 MySQL 8,兼容本项目):

sudoaptupdatesudoaptinstall-ymysql-serversudosystemctl start mysqlsudosystemctlenablemysql# 安全配置并设置 root 密码(按提示操作)sudomysql_secure_installation# 登录(首次可能无需密码,或使用 sudo mysql)sudomysql-uroot-p

在 MySQL 中执行:

ALTERUSER'root'@'localhost'IDENTIFIEDWITHmysql_native_passwordBY'你的强密码';CREATEDATABASEIFNOTEXISTSharmony_marketDEFAULTCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;FLUSHPRIVILEGES;EXIT;

导入项目 SQL:

mysql-uroot-pharmony_market</path/to/harmony_market.sql

CentOS 7(MySQL 5.7):

wgethttps://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpmrpm-ivhmysql57-community-release-el7-11.noarch.rpm yuminstall-ymysql-community-server systemctl start mysqld systemctlenablemysqldgrep'temporary password'/var/log/mysqld.log mysql-uroot-p

在 MySQL 中执行:

ALTERUSER'root'@'localhost'IDENTIFIEDBY'你的强密码';CREATEDATABASEIFNOTEXISTSharmony_marketDEFAULTCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;EXIT;
mysql-uroot-pharmony_market</path/to/harmony_market.sql

3.4 安装 Tomcat 9

cd/optwgethttps://dlcdn.apache.org/tomcat/tomcat-9/v9.0.x/bin/apache-tomcat-9.0.x.tar.gztar-xzfapache-tomcat-9.0.x.tar.gzln-sapache-tomcat-9.0.x tomcat

(将9.0.x替换为具体版本号。)

可选:配置 JVM 编码与内存(/opt/tomcat/bin/setenv.sh,若无则新建):

echo'JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8 -Xms256m -Xmx512m"'>/opt/tomcat/bin/setenv.shchmod+x /opt/tomcat/bin/setenv.sh

四、数据库配置

4.1 使用 ECS 本机 MySQL

  • 在 ECS 上已安装 MySQL,并已创建harmony_market、导入harmony_market.sql
  • 应用连接地址为127.0.0.1:3306localhost:3306

4.2 使用阿里云 RDS MySQL

  1. 在 RDS 控制台创建 MySQL 实例,选择 5.7,字符集选utf8mb4
  2. 在 RDS 控制台创建数据库:harmony_market
  3. 创建高权限账号或普通账号,并记录内网地址、端口(一般为 3306)、用户名、密码。
  4. 在 RDS 的白名单中放行 ECS 的内网 IP(应用与 RDS 同地域时建议用内网地址)。
  5. 使用 DMS 或mysql客户端连接 RDS,执行harmony_market.sql建表。

五、应用配置与部署

5.1 修改数据库连接(db.properties)

配置文件在源码中为src/db.properties,打包后位于 WAR 内的WEB-INF/classes/db.properties

方式一:打包前修改(推荐)

在项目里修改src/db.properties,再重新打 WAR:

  • 本机 MySQL(ECS 上)示例:
user=root passWord=你的MySQL密码 driverClass=com.mysql.cj.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/harmony_market?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
  • RDS MySQL示例(将内网地址、端口、库名、用户名、密码替换为实际值):
user=你的RDS用户名 passWord=你的RDS密码 driverClass=com.mysql.cj.jdbc.Driver url=jdbc:mysql://rm-xxxxx.mysql.rds.aliyuncs.com:3306/harmony_market?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=Asia/Shanghai

方式二:部署后修改

上传 WAR 并解压或部署后,在服务器上编辑WEB-INF/classes/db.properties,修改后重启 Tomcat。

5.2 打包 WAR

  • 使用 IDEA:Build -> Build Artifacts -> Market:war explodedMarket:war,在out/artifacts/下得到部署目录或Market.war
  • 或使用 Maven/Gradle 构建得到Market.war

确保db.properties已按上面配置后再打包。

5.3 上传到 ECS

# 在本地执行(将路径和 IP 改为你的)scpMarket.war root@<ECS公网IP>:/opt/tomcat/webapps/

或使用 FTP、阿里云 OSS 中转等方式上传。

5.4 Tomcat 部署

# 若上传的是 Market.war,Tomcat 会自动解压为 webapps/Market/# 启动/重启 Tomcat/opt/tomcat/bin/shutdown.sh2>/dev/null /opt/tomcat/bin/startup.sh# 查看日志tail-f/opt/tomcat/logs/catalina.out

访问应用:

  • Web 管理端:http://<ECS公网IP>:8080/Market/(默认会到login.jsp
  • 移动端接口示例:http://<ECS公网IP>:8080/Market/api/user/login

若将 WAR 命名为ROOT.war并删除webapps/ROOT后放入,则访问为http://<ECS公网IP>:8080/,无/Market前缀。


六、安全组与防火墙

6.1 阿里云安全组

在 ECS 实例所在安全组中添加入方向规则:

端口协议授权对象说明
22TCP你的IP/0.0.0.0SSH(建议仅限本机 IP)
8080TCP0.0.0.0/0Tomcat 应用
3306TCP可选仅当需要从公网连 MySQL 时开放(不推荐)

生产环境建议 8080 仅对负载均衡或 Nginx 所在 IP 开放,对外只开放 80/443。

6.2 系统防火墙(若开启)

Ubuntu(ufw):

sudoufw allow8080/tcpsudoufw allow80/tcpsudoufw reload

CentOS 7(firewalld):

firewall-cmd--permanent--add-port=8080/tcp firewall-cmd--reload

七、可选:Nginx 反向代理与域名

7.1 安装 Nginx

Ubuntu 22.04:

sudoaptupdate&&sudoaptinstall-ynginxsudosystemctl start nginxsudosystemctlenablenginx

CentOS:

yuminstall-ynginx systemctl start nginx systemctlenablenginx

7.2 反向代理到 Tomcat

新建/etc/nginx/conf.d/market.conf(示例):

server { listen 80; server_name 你的域名或ECS公网IP; location / { proxy_pass http://127.0.0.1:8080/Market/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }

若应用为根路径(ROOT 部署),则proxy_pass http://127.0.0.1:8080/;

nginx-tsystemctl reload nginx

安全组放行80端口后,可通过http://域名或IP访问。

7.3 配置 HTTPS(可选)

  • 在阿里云SSL 证书申请免费证书,下载 Nginx 版。
  • 将证书上传到 ECS,在 Nginx 中配置listen 443 sslssl_certificatessl_certificate_key,并重定向 80 到 443。
  • 安全组放行443

八、鸿蒙 App 与 Web 访问地址

部署完成后,将以下地址配置到鸿蒙 App 或文档中:

用途地址示例
Web 管理端http://<域名或IP>/Market/http://<域名或IP>/
接口基础路径http://<域名或IP>/Markethttp://<域名或IP>
登录接口POST http://<域名或IP>/Market/api/user/login

若使用 Nginx 反向代理且server_name为域名,则将上述中的<域名或IP>换为域名即可。


九、常见问题

9.1 启动后无法访问

  • 检查安全组是否放行 8080(或 80/443)。
  • 检查 Tomcat 是否启动:ps aux | grep tomcat,查看catalina.out是否有异常。
  • 确认 URL 是否带上下文路径:/Market/

9.2 数据库连接失败

  • 检查WEB-INF/classes/db.properties中的urluserpassWord
  • RDS:确认白名单已放行 ECS 内网 IP,使用内网地址。
  • 本机 MySQL:确认mysqld已启动,harmony_market已创建且已导入 SQL。

9.3 中文乱码

  • 确认 MySQL 库表为 utf8mb4,JDBC URL 中已含characterEncoding=utf8utf8mb4
  • Tomcatsetenv.sh中可加-Dfile.encoding=UTF-8
  • JSP 已设置pageEncoding="UTF-8"contentType="text/html;charset=UTF-8"

9.4 商品/轮播图图片不显示

  • 当前为 URL 方式,需填写可公网访问的图片地址。
  • 若使用阿里云 OSS 存图,将 OSS 文件 URL 填入主图/多图字段即可。

十、文档与脚本索引

文档/脚本说明
sql/harmony_market.sql数据库建库建表及示例数据
src/db.properties数据库连接配置(打包进 WAR)
src/db.properties.example配置示例
doc/开发文档.md项目与数据库介绍、鸿蒙对接说明
doc/阿里云部署文档.md本文档

文档版本:1.0

http://www.jsqmd.com/news/485709/

相关文章:

  • Jmeter接口测试:使用教程(下)
  • 基于CW32F030的便携式双参数电压电流表设计
  • SENT信号解码实战——从半字节到完整帧的解析指南
  • YooAsset资源清理实战:如何高效释放Unity项目中的缓存文件(附完整代码示例)
  • 基于GD32F103的简易数字示波器设计与实现
  • 基于STM32F103与MAX30102的反射式血氧仪设计全解析:从硬件电路到心率血氧算法实现
  • STM32G0示波笔:资源受限MCU上的实时波形采集实践
  • 直接上代码先看效果,再聊原理。Matlab搞GPR时序预测这事儿,说难不难,但新手容易在核函数选择上栽跟头。咱这次用的平方指数核,适合多数时序场景
  • IOMMU内存保护避坑指南:如何避免DMA映射中的权限漏洞与对齐陷阱
  • 2026宿州民间借贷律师推荐指南 专业胜诉保障 - 优质品牌商家
  • 大学生编程神器:Baidu Comate智能编码助手如何帮你搞定作业和项目
  • 2026年山东有实力的管道保温管厂商排名,哪家性价比高? - mypinpai
  • 云影密码实战:从攻防世界题目看1248加密的另类应用
  • 如何通过跨平台虚拟化技术实现PC运行macOS?解锁工具的实战应用指南
  • eMMC5.0 vs 4.51性能对比:为什么你的Android设备存储速度上不去?
  • 解密Airkiss:无屏设备WiFi配网的核心技术解析
  • MedGemma实战:如何设计AI影像判读训练课?4个场景教学案例分享
  • 用Arduino+CAN模块玩转汽车数据:低成本车载网络监控方案(基于MCP2515)
  • 探讨推荐实力强的多肽修饰厂商,杰肽生物选购需注意啥? - myqiye
  • PHPStudy环境下的Upload-labs靶场搭建到通关全指南(避坑版)
  • SAP供应商冻结与删除操作全指南:从业务场景到Tcode实操
  • Qwen2.5-VL智慧城市应用:交通监控中的车辆行为分析
  • 避坑指南:Unity嵌入Android项目时常见的5大错误及解决方案
  • 解读北京合金焊材的品牌制造厂家,哪个口碑好 - 工业品牌热点
  • 保姆级教程:用webrtc-streamer(v0.8.12)实现RTSP/H264视频流网页播放(附Vue Demo)
  • EtherCAT总线在实时仿真机中的多场景应用(机器人控制与IO扩展实战)
  • 从任务管理器到内核驱动:深入解析Windows进程名获取的多种方法
  • 2026年电商客服系统选型指南:5家主流智能客服厂商深度解析 - 品牌2026
  • Alpamayo-R1-10B惊艳效果展示:64步高精度轨迹预测可视化作品集
  • PP-DocLayoutV3模型部署详解:从Docker镜像到RESTful API服务