电影院购票系统 — 项目部署文档
一、环境要求
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。
二、数据库初始化
注意:
- 请确保电脑上已经安装MySQL 8.0数据库;
- 配置好环境变量或者使用MySQL客户端工具,如Navicat等。
- 以下步骤采用命令行方式初始化数据库,也可自行使用 MySQL 客户端工具一键导入。
2.1 连接数据库
执行以下命令连接数据库:
mysql -u root -p<password>
2.2 执行初始化脚本(建库建表 + 基础数据)
项目在 /db 目录提供两个数据库脚本:
| 脚本 | 作用 |
|---|---|
init.sql |
必须执行。自动创建数据库 yc_cinema 与全部 11 张表,并写入基础数据(管理员账号 admin/123456、9 个电影分类)。执行后系统即可正常运行 |
demo.sql |
可选。生成完整演示数据(用户、电影、影厅、排片、订单、支付、评论),让页面内容丰富、统计图表有数据;可反复执行,每次重置为最新演示数据(保留管理员与分类) |
执行初始化脚本(init.sql 已包含建库与切换库语句,直接导入即可):
mysql -uroot -p < db/init.sql
导入演示数据(可选,需先执行 init.sql):
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,核心配置项如下:
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 方法。
命令行模式
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 验证后端
- API 文档页面:http://localhost:8080/doc.html
- 健康检查:http://localhost:8080/auth/login(POST 请求,返回 JSON 表示服务正常)
3.4 关于 MyBatis SQL 日志
application.yml 中的 log-impl 默认已注释(SQL 日志默认关闭)。如需在开发调试时打印 SQL,取消注释即可;生产环境保持关闭,避免日志泄露敏感数据。
四、前端部署
4.1 安装依赖
cd vue
npm install
如果安装速度慢,可以配置国内镜像:
npm config set registry https://registry.npmmirror.com
npm install
4.2 配置后端地址
前端请求通过 Vite 代理转发到后端。配置文件为 vue/vite.config.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 开发模式启动
npm run dev
启动后访问:
- 前台页面:http://localhost:5173
- 后台管理:http://localhost:5173/admin(需管理员账号登录)
4.4 生产环境构建
npm run build
构建产物输出到 vue/dist/ 目录。将此目录下的文件部署到 Nginx、Apache 等 Web 服务器即可。
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 模式预览构建结果
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:文件上传成功但图片不显示
原因:路径配置不一致。
解决:
- 确认
application.yml中file.upload.path: ./uploads路径正确 - 确认
uploads/demo/目录存在(演示图片);运行时上传的文件会自动写入uploads/avatar/、uploads/poster/ - 确认
WebMvcConfig.java的静态资源映射生效 - 前端访问图片通过
/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:如何新增管理员账号
方式一:直接在数据库中执行:
UPDATE user
SET role = 1
WHERE username = '目标用户名';
方式二:通过注册接口注册后,在数据库中将 role 字段改为 1。
Q7:生产环境安全建议
- 修改 JWT 密钥:将
jwt.secret改为至少 32 位的随机字符串,通过环境变量注入 - 修改数据库密码:通过环境变量
DB_PASSWORD注入,不写入配置文件 - 关闭 SQL 日志:
application.yml中log-impl保持注释状态(默认已关闭) - HTTPS:生产环境建议配置 SSL 证书
- CORS 限制:
CorsConfig.java中将allowedOrigin改为具体的生产域名 - 文件上传限制:可在
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
