项目云部署
项目云部署
[!info] related notes
好的,这篇文档为你详细阐述了如何将你的 litemall 项目进行最终的线上部署,以便在毕业答辩时进行稳定、专业的展示。
项目最终部署与展示指南
当你的项目开发完成,从 GitHub Codespaces 的云端开发环境迁移到真实的云服务器进行部署,是项目生命周期的最后一步,也是向老师展示你具备将项目产品化能力的关键环节。本指南将引导你完成这一过程。
基础概念
-
云服务器 (ECS/CVM):这是一台你从云服务商(如阿里云、腾讯云)租用的、拥有公网 IP 地址的远程计算机。它 24 小时运行,是你的后端服务和管理后台的家。
-
云数据库 (RDS):一种由云服务商提供的托管式数据库服务。相比于在云服务器上自行安装 MySQL,RDS 提供了自动备份、安全防护、性能监控和高可用性,让你的数据更安全,也让你从繁琐的数据库运维中解脱出来。
-
Nginx:一款高性能的开源 Web 服务器和反向代理服务器。在我们的项目中,它扮演两个核心角色:
- 静态内容托管:直接向用户浏览器发送
litemall管理后台的静态文件(HTML/CSS/JS)。 - 反向代理:作为所有外部请求的统一入口。它会智能地判断请求的类型,如果请求的是 API 数据(如
/admin/或/wx/),就将请求转发给在内部运行的 Spring Boot 后端服务(8080 端口),从而隐藏了后端服务的具体端口和地址,增加了安全性。
- 静态内容托管:直接向用户浏览器发送
-
后台服务守护进程 (Daemon):直接通过
java -jar启动的程序,在 SSH 断开连接后就会终止。为了让你的 Spring Boot 后端服务能长期稳定地在后台运行,并能在意外崩溃后自动重启,我们需要使用systemd等工具将其注册为系统服务,实现守护运行。
使用指南
-
准备云资源:
- 通过学生认证,在阿里云或腾讯云等平台购买一台入门级云服务器(建议至少 1核2G,操作系统选择 CentOS 或 Ubuntu)和一台入门级云数据库 RDS for MySQL。
- 配置安全组:在云服务器的网络安全组设置中,确保开放以下端口的入站规则:
22(SSH 远程连接)80(HTTP 标准访问)443(HTTPS 加密访问,如果后续配置 SSL)
-
环境安装:
-
通过 SSH 工具连接到你的云服务器。
-
安装项目所需的基础环境。以 CentOS 为例:
# 安装 JDK 1.8 或 11 sudo yum install java-1.8.0-openjdk-devel # 安装 Nginx sudo yum install nginx # 启动并设置 Nginx 开机自启 sudo systemctl start nginx sudo systemctl enable nginx -
验证 Nginx:此时在浏览器中访问你的服务器公网 IP,应该能看到 Nginx 的欢迎页面。
-
-
数据库迁移:
- 访问你的云数据库 RDS 控制台,获取数据库的连接地址、端口、用户名和密码。
- 使用 Navicat 或 DBeaver 等数据库客户端,连接到你的云数据库。
- 将
litemall-db/sql目录下的三个 SQL 文件 (litemall_schema.sql,litemall_table.sql,litemall_data.sql) 依次导入到云数据库中。
实战经验 (以 litemall 项目为例)
-
打包项目:
-
后端:在你的本地或 Codespaces 环境中,进入
litemall根目录,执行 Maven 打包命令:mvn clean package -DskipTests这会在
litemall-all/target/目录下生成一个litemall-all-*.jar文件。 -
管理后台:进入
litemall-admin目录,执行打包命令:npm run build:prod这会生成一个
dist文件夹,里面包含了所有管理后台的静态资源。
-
-
上传文件到服务器:
-
使用
scp命令或 SFTP 工具将打包好的文件上传到你的云服务器。# 上传后端 jar 包到用户的 home 目录 scp litemall-all/target/litemall-all-*.jar AJ1E@<你的服务器IP>:~/ # 上传管理后台 dist 文件夹到用户的 home 目录 scp -r litemall-admin/dist AJ1E@<你的服务器IP>:~/
-
-
部署后端服务:
-
SSH 连接到服务器。
-
创建一个目录用于存放服务,并将 jar 包移动过去。
mkdir /app && mv ~/litemall-all-*.jar /app/litemall.jar -
创建 systemd 服务文件,让后端服务由系统守护:
sudo nano /etc/systemd/system/litemall.service粘贴以下内容(注意修改
User和数据库配置路径):[Unit] Description=Litemall Service After=network.target [Service] User=AJ1E # 替换成你的服务器用户名 ExecStart=/usr/bin/java -jar -Dspring.config.location=file:/app/application-core.yml /app/litemall.jar Restart=on-failure RestartSec=10s [Install] WantedBy=multi-user.target -
创建独立的配置文件,在
/app目录下创建application-core.yml,并填入你的云数据库连接信息。 -
启动服务:
sudo systemctl daemon-reload sudo systemctl enable litemall sudo systemctl start litemall sudo systemctl status litemall # 查看服务状态,确保是 active (running)
-
-
部署管理后台:
-
将上传的
dist文件夹移动到 Nginx 的网站根目录:sudo mv ~/dist /var/www/litemall-admin -
配置 Nginx 反向代理:编辑 Nginx 配置文件
sudo nano /etc/nginx/nginx.conf,在http块的server部分进行修改或新增location块:server { listen 80; server_name <你的服务器IP或域名>; # 管理后台的访问路径 location / { root /var/www/litemall-admin; index index.html index.htm; try_files $uri $uri/ /index.html; } # 将所有 /admin/ 和 /wx/ 开头的 API 请求转发给后端 Spring Boot 服务 location ~ /admin/|/wx/ { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } -
重启 Nginx 使配置生效:
sudo systemctl restart nginx
-
-
最终配置与验证:
- 管理后台:浏览器直接访问
http://<你的服务器IP>即可看到登录页面。 - 微信小程序:
- 修改
litemall-wx/config/api.js文件,将WxApiRoot改为http://<你的服务器IP>/wx/。 - 重要:登录微信公众平台,进入你的小程序后台,在 “开发” -> “开发管理” -> “开发设置” -> “服务器域名” 中,将你的服务器IP或域名添加到
request合法域名列表中,否则小程序会请求失败。
- 修改
- 管理后台:浏览器直接访问
至此,你的项目已成功部署到云端,可以随时随地进行稳定流畅的展示了。
信息参考
- 云厂商学生优惠:
- Nginx 官方文档:Nginx Beginner’s Guide - 学习 Nginx 配置的最佳起点。
- Systemd 教程:DigitalOcean - Understanding Systemd Units and Unit Files - 深入理解如何让你的应用在 Linux 系统中稳定运行。