电影院购票系统 — 项目部署文档

一、环境要求

1.1 后端环境

软件 最低版本 说明
JDK 21(兼容 17+) 后端编译与运行
Maven 3.8+ 依赖管理与项目构建
MySQL 8.0+ 数据库服务

1.2 前端环境

软件 最低版本 说明
Node.js 18+ 前端构建与开发服务器
npm 9+ 前端依赖管理(随 Node.js 安装)
Git 2.x(可选) 版本管理工具

注意:后端使用 Spring Boot 3.2,JDK 最低要求 17,推荐使用 JDK 21。

二、数据库初始化

注意:

  1. 请确保电脑上已经安装MySQL 8.0数据库;
  2. 配置好环境变量或者使用MySQL客户端工具,如Navicat等。
  3. 以下步骤采用命令行方式初始化数据库,也可自行使用 MySQL 客户端工具一键导入。

2.1 连接数据库

执行以下命令连接数据库:

bash
  mysql -u root -p<password>

2.2 执行初始化脚本(建库建表 + 基础数据)

项目在 /db 目录提供两个数据库脚本:

脚本 作用
init.sql 必须执行。自动创建数据库 yc_cinema 与全部 11 张表,并写入基础数据(管理员账号 admin/123456、9 个电影分类)。执行后系统即可正常运行
demo.sql 可选。生成完整演示数据(用户、电影、影厅、排片、订单、支付、评论),让页面内容丰富、统计图表有数据;可反复执行,每次重置为最新演示数据(保留管理员与分类)

执行初始化脚本(init.sql 已包含建库与切换库语句,直接导入即可):

bash
mysql -uroot -p < db/init.sql

导入演示数据(可选,需先执行 init.sql):

bash
mysql -uroot -p yc_cinema < db/demo.sql

注意:init.sql 重复执行会重建全部表(清空已有数据),请谨慎;demo.sql 可放心反复执行。

2.3 默认账号

账号 密码 角色 说明
admin 123456 管理员 由 init.sql 创建,可登录后台管理
user1 ~ user5 123456 普通用户 由 demo.sql 创建(演示账号)

三、后端部署

3.1 配置文件说明

后端配置文件位于 springboot/src/main/resources/application.yml,核心配置项如下:

yaml
server:
  port: 8080                     # 后端端口

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/yc_cinema?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&useSSL=false
    username: root         # 数据库用户名
    password: Jiang@8070   # 数据库密码

说明:请修改为自己的数据库地址、账号和密码。

3.2 启动后端

开发模式(IDE 中直接运行)

在 IntelliJ IDEA 中打开 springboot 目录,运行 MainApplication.java 的 main 方法。

命令行模式

bash
cd springboot

# 安装依赖并启动
mvn spring-boot:run

# 或先编译再运行 jar 包
mvn clean package -DskipTests
java -jar target/springboot-1.0.0.jar

启动成功标志:

Started MainApplication in X.XXX seconds

3.3 验证后端

3.4 关于 MyBatis SQL 日志

application.yml 中的 log-impl 默认已注释(SQL 日志默认关闭)。如需在开发调试时打印 SQL,取消注释即可;生产环境保持关闭,避免日志泄露敏感数据。

四、前端部署

4.1 安装依赖

bash
cd vue
npm install

如果安装速度慢,可以配置国内镜像:

bash
npm config set registry https://registry.npmmirror.com
npm install

4.2 配置后端地址

前端请求通过 Vite 代理转发到后端。配置文件为 vue/vite.config.js:

js
server: {
  port: 5173,
    proxy
:
  {
    '/api'
  :
    {
      target: 'http://localhost:8080',   // 后端地址
        changeOrigin
    :
      true,
        rewrite
    :
      (path) => path.replace(/^\/api/, '')
    }
  ,
    '/uploads'
  :
    {
      target: 'http://localhost:8080',   // 静态文件地址
        changeOrigin
    :
      true
    }
  }
}

如果后端部署在其他机器或端口,修改 target 地址即可。

4.3 开发模式启动

bash
npm run dev

启动后访问:

4.4 生产环境构建

bash
npm run build

构建产物输出到 vue/dist/ 目录。将此目录下的文件部署到 Nginx、Apache 等 Web 服务器即可。

Nginx 配置示例:

nginx
server {
    listen       80;
    server_name  localhost;

    # 前端静态文件
    location / {
        root   /path/to/vue/dist;
        index  index.html;
        try_files $uri $uri/ /index.html;
    }

    # 代理 API 到后端
    location /api/ {
        proxy_pass http://localhost:8080/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # 代理上传文件到后端
    location /uploads/ {
        proxy_pass http://localhost:8080/uploads/;
    }
}

4.5 使用 preview 模式预览构建结果

bash
npm run preview

五、常见问题

Q1:启动后端报 “Access denied for user ‘root’@‘localhost’”

原因:数据库密码不正确。
解决:检查 application.yml 中的 password 或环境变量 DB_PASSWORD 是否正确。

Q2:前端页面空白,控制台报 CORS 错误

原因:跨域配置不匹配。
解决:开发模式下前端通过 Vite proxy 同源转发(vue/vite.config.js),一般不会触发 CORS;若直接跨域请求后端,需在后端 CorsConfig.java 启用被注释的 CORS Bean 并配置具体的允许来源。生产环境建议使用 Nginx 反向代理(见 4.4),无需后端 CORS。

Q3:文件上传成功但图片不显示

原因:路径配置不一致。
解决:

  1. 确认 application.yml 中 file.upload.path: ./uploads 路径正确
  2. 确认 uploads/demo/ 目录存在(演示图片);运行时上传的文件会自动写入 uploads/avatar/、uploads/poster/
  3. 确认 WebMvcConfig.java 的静态资源映射生效
  4. 前端访问图片通过 /uploads/... 路径,需确保代理正确

Q4:Token 过期时间太短

解决:修改 application.yml 中的 jwt.expiration 值,单位为毫秒。默认 86400000 = 24 小时。

Q5:如何修改端口

  • 后端端口:修改 application.yml 中 server.port
  • 前端端口:修改 vue/vite.config.js 中 server.port
  • 修改后需同步更新 CorsConfig.java 和 vite.config.js 中的 proxy target

Q6:如何新增管理员账号

方式一:直接在数据库中执行:

sql
UPDATE user
SET role = 1
WHERE username = '目标用户名';

方式二:通过注册接口注册后,在数据库中将 role 字段改为 1。

Q7:生产环境安全建议

  1. 修改 JWT 密钥:将 jwt.secret 改为至少 32 位的随机字符串,通过环境变量注入
  2. 修改数据库密码:通过环境变量 DB_PASSWORD 注入,不写入配置文件
  3. 关闭 SQL 日志:application.yml 中 log-impl 保持注释状态(默认已关闭)
  4. HTTPS:生产环境建议配置 SSL 证书
  5. CORS 限制:CorsConfig.java 中将 allowedOrigin 改为具体的生产域名
  6. 文件上传限制:可在 application.yml 中调整 max-file-size

六、快速启动检查清单

  • 数据库 yc_cinema
  • init.sql 已导入(如需演示数据再导入 demo.sql
  • JDK 21 已安装,java -version
  • Maven 已安装,mvn -version
  • Node.js 18+ 已安装,node -v
  • 后端 application.yml
  • uploads/demo/
  • 前后端均启动后,访问 http://localhost:5173
客服
反馈