项目云部署

项目云部署

#tech / ops / cloud #type / howto #status / growing

[!info] related notes


好的,这篇文档为你详细阐述了如何将你的 litemall 项目进行最终的线上部署,以便在毕业答辩时进行稳定、专业的展示。


项目最终部署与展示指南

当你的项目开发完成,从 GitHub Codespaces 的云端开发环境迁移到真实的云服务器进行部署,是项目生命周期的最后一步,也是向老师展示你具备将项目产品化能力的关键环节。本指南将引导你完成这一过程。

基础概念

  • 云服务器 (ECS/CVM):这是一台你从云服务商(如阿里云、腾讯云)租用的、拥有公网 IP 地址的远程计算机。它 24 小时运行,是你的后端服务和管理后台的家。

  • 云数据库 (RDS):一种由云服务商提供的托管式数据库服务。相比于在云服务器上自行安装 MySQL,RDS 提供了自动备份、安全防护、性能监控和高可用性,让你的数据更安全,也让你从繁琐的数据库运维中解脱出来。

  • Nginx:一款高性能的开源 Web 服务器和反向代理服务器。在我们的项目中,它扮演两个核心角色:

    1. 静态内容托管:直接向用户浏览器发送 litemall 管理后台的静态文件(HTML/CSS/JS)。
    2. 反向代理:作为所有外部请求的统一入口。它会智能地判断请求的类型,如果请求的是 API 数据(如 /admin//wx/),就将请求转发给在内部运行的 Spring Boot 后端服务(8080 端口),从而隐藏了后端服务的具体端口和地址,增加了安全性。
  • 后台服务守护进程 (Daemon):直接通过 java -jar 启动的程序,在 SSH 断开连接后就会终止。为了让你的 Spring Boot 后端服务能长期稳定地在后台运行,并能在意外崩溃后自动重启,我们需要使用 systemd 等工具将其注册为系统服务,实现守护运行。

使用指南

  1. 准备云资源

    • 通过学生认证,在阿里云或腾讯云等平台购买一台入门级云服务器(建议至少 1核2G,操作系统选择 CentOS 或 Ubuntu)和一台入门级云数据库 RDS for MySQL。
    • 配置安全组:在云服务器的网络安全组设置中,确保开放以下端口的入站规则:
      • 22 (SSH 远程连接)
      • 80 (HTTP 标准访问)
      • 443 (HTTPS 加密访问,如果后续配置 SSL)
  2. 环境安装

    • 通过 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 的欢迎页面。

  3. 数据库迁移

    • 访问你的云数据库 RDS 控制台,获取数据库的连接地址、端口、用户名和密码。
    • 使用 Navicat 或 DBeaver 等数据库客户端,连接到你的云数据库。
    • litemall-db/sql 目录下的三个 SQL 文件 (litemall_schema.sql, litemall_table.sql, litemall_data.sql) 依次导入到云数据库中。

实战经验 (以 litemall 项目为例)

  1. 打包项目

    • 后端:在你的本地或 Codespaces 环境中,进入 litemall 根目录,执行 Maven 打包命令:

      mvn clean package -DskipTests

      这会在 litemall-all/target/ 目录下生成一个 litemall-all-*.jar 文件。

    • 管理后台:进入 litemall-admin 目录,执行打包命令:

      npm run build:prod

      这会生成一个 dist 文件夹,里面包含了所有管理后台的静态资源。

  2. 上传文件到服务器

    • 使用 scp 命令或 SFTP 工具将打包好的文件上传到你的云服务器。

      # 上传后端 jar 包到用户的 home 目录
      scp litemall-all/target/litemall-all-*.jar AJ1E@<你的服务器IP>:~/
      
      # 上传管理后台 dist 文件夹到用户的 home 目录
      scp -r litemall-admin/dist AJ1E@<你的服务器IP>:~/
  3. 部署后端服务

    • 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)
  4. 部署管理后台

    • 将上传的 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
  5. 最终配置与验证

    • 管理后台:浏览器直接访问 http://<你的服务器IP> 即可看到登录页面。
    • 微信小程序
      1. 修改 litemall-wx/config/api.js 文件,将 WxApiRoot 改为 http://<你的服务器IP>/wx/
      2. 重要:登录微信公众平台,进入你的小程序后台,在 “开发” -> “开发管理” -> “开发设置” -> “服务器域名” 中,将你的服务器IP或域名添加到 request合法域名 列表中,否则小程序会请求失败。

至此,你的项目已成功部署到云端,可以随时随地进行稳定流畅的展示了。

信息参考

创建于 2025/1/1 更新于 2026/5/27