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

本文档说明如何将鸿蒙云购物系统(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:

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

3.2 安装 JDK 8

Ubuntu 22.04:

sudo apt update
sudo apt install -y openjdk-8-jdk

java -version
javac -version

CentOS 7/8:

yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
java -version
javac -version

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

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

sudo apt update
sudo apt install -y mysql-server
sudo systemctl start mysql
sudo systemctl enable mysql

# 安全配置并设置 root 密码(按提示操作)
sudo mysql_secure_installation

# 登录(首次可能无需密码,或使用 sudo mysql)
sudo mysql -u root -p

在 MySQL 中执行:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的强密码';
CREATE DATABASE IF NOT EXISTS harmony_market DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
FLUSH PRIVILEGES;
EXIT;

导入项目 SQL:

mysql -u root -p harmony_market < /path/to/harmony_market.sql

CentOS 7(MySQL 5.7):

wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
rpm -ivh mysql57-community-release-el7-11.noarch.rpm
yum install -y mysql-community-server
systemctl start mysqld
systemctl enable mysqld
grep 'temporary password' /var/log/mysqld.log
mysql -u root -p

在 MySQL 中执行:

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的强密码';
CREATE DATABASE IF NOT EXISTS harmony_market DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
EXIT;
mysql -u root -p harmony_market < /path/to/harmony_market.sql

3.4 安装 Tomcat 9

cd /opt
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.x/bin/apache-tomcat-9.0.x.tar.gz
tar -xzf apache-tomcat-9.0.x.tar.gz
ln -s apache-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.sh
chmod +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 改为你的)
scp Market.war root@<ECS公网IP>:/opt/tomcat/webapps/

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

5.4 Tomcat 部署

# 若上传的是 Market.war,Tomcat 会自动解压为 webapps/Market/
# 启动/重启 Tomcat
/opt/tomcat/bin/shutdown.sh 2>/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 实例所在安全组中添加入方向规则:

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

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

6.2 系统防火墙(若开启)

Ubuntu(ufw):

sudo ufw allow 8080/tcp
sudo ufw allow 80/tcp
sudo ufw reload

CentOS 7(firewalld):

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

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

7.1 安装 Nginx

Ubuntu 22.04:

sudo apt update && sudo apt install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx

CentOS:

yum install -y nginx
systemctl start nginx
systemctl enable nginx

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 -t
systemctl 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
  • Tomcat setenv.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

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐