1. 苍穹外卖项目环境搭建概述
作为Java开发者接触企业级项目的第一步,环境配置往往决定了后续开发的顺畅程度。苍穹外卖作为黑马程序员推出的SpringBoot+SSM实战项目,其环境搭建涉及前后端分离架构下的多项技术栈配置。与常见的教学项目不同,这套环境需要同时支持管理后台(Vue.js)和小程序端的联调开发,这对本地开发环境的完整性提出了更高要求。
我在首次配置这个项目环境时,曾因忽略了Nginx的路径配置导致前端资源加载失败,也遇到过MySQL版本差异引发的字符集问题。本文将结合这些实际踩坑经验,详细介绍从零开始搭建苍穹外卖开发环境的完整流程,特别针对Windows系统下的特殊配置项进行说明。
2. 基础开发环境准备
2.1 JDK与Maven配置
推荐使用JDK 1.8(官方兼容性最佳)配合Maven 3.6+:
# 验证安装 java -version mvn -v在Maven的settings.xml中建议配置阿里云镜像:
<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>注意:苍穹外卖的pom.xml中已指定SpringBoot 2.7.x版本,不要随意升级主版本号,否则可能引发依赖冲突。
2.2 MySQL数据库部署
项目要求MySQL 5.7+,三个关键配置项需要注意:
- 字符集设置为utf8mb4
- 关闭ONLY_FULL_GROUP_BY模式
- 时区设置为Asia/Shanghai
初始化数据库时直接执行提供的sky.sql脚本:
mysql> source /path/to/sky.sql我曾遇到Navicat导入SQL文件时报错,原因是默认字符集不匹配。解决方案是在连接配置中显式指定字符集:
连接名:sky_takeout 主机:localhost 端口:3306 字符集:utf8mb4 排序规则:utf8mb4_general_ci2.3 Redis安装与配置
Redis 5.0+即可满足需求,Windows用户可以使用:
- 官方推荐的WSL2方式安装
- 或使用微软维护的Redis-Windows版本
关键配置项:
# redis.windows.conf maxmemory 256mb appendonly yes requirepass 123456 # 与application-dev.yml中的配置保持一致3. 前端环境配置
3.1 Nginx服务部署
项目前端资源已打包在nginx-1.20.2目录中,需要特别注意:
- 将整个nginx目录放在非中文路径下
- 修改conf/nginx.conf中的关键配置:
server { listen 80; server_name localhost; # 管理端静态资源 location / { root html/sky-admin; index index.html; } # 反向代理配置 location /api/ { proxy_pass http://localhost:8080/admin/; proxy_set_header Host $host; } }常见问题排查:
- 端口冲突:使用
netstat -ano|findstr "80"检查端口占用 - 跨域问题:确保proxy_pass地址与后端服务一致
- 静态资源404:检查root路径是否正确指向打包后的dist目录
3.2 小程序开发环境
微信开发者工具需要配置:
- 导入mp-weixin目录作为小程序项目
- 在详情中勾选"不校验合法域名"(开发阶段)
- 修改app.js中的基础API地址:
const baseUrl = 'http://localhost/api'4. 后端工程配置
4.1 IDEA项目导入
使用IntelliJ IDEA导入项目时注意:
- 选择sky-take-out目录下的pom.xml作为根项目
- 等待Maven自动下载依赖(首次可能较久)
- 配置JDK 1.8和正确的Maven路径
项目结构说明:
sky-take-out ├── sky-common # 公共模块 ├── sky-pojo # 实体类 └── sky-server # 主服务模块4.2 配置文件调整
修改sky-server中的application-dev.yml:
spring: datasource: url: jdbc:mysql://localhost:3306/sky_take_out?useSSL=false&serverTimezone=Asia/Shanghai username: root password: 123456 redis: host: localhost port: 6379 password: 123456 database: 0 jwt: admin-secret-key: sky-take-out-2023 # 生产环境需要修改4.3 启动项配置
在SkyApplication启动类中:
- 添加@MapperScan注解指定Mapper接口路径
- 配置Tomcat端口为8080(与Nginx代理匹配)
- 建议开启热部署:
@SpringBootApplication @MapperScan("com.sky.mapper") public class SkyApplication { public static void main(String[] args) { SpringApplication.run(SkyApplication.class, args); } }5. 联调测试与常见问题
5.1 登录功能测试
访问http://localhost后,使用默认账号登录:
- 用户名:admin
- 密码:123456
后端登录流程:
- 前端请求 → Nginx → 后端Controller
- JWT令牌生成与验证
- 密码MD5加密比对(注意数据库密码需要预先加密)
5.2 接口文档集成
Knife4j文档访问地址:
http://localhost:8080/doc.html配置要点:
@Bean public Docket docket() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(new ApiInfoBuilder() .title("苍穹外卖API文档") .version("1.0") .build()) .select() .apis(RequestHandlerSelectors.basePackage("com.sky.controller")) .paths(PathSelectors.any()) .build(); }5.3 典型问题解决方案
Nginx代理失败:
- 检查proxy_pass末尾是否带/(决定URL重写方式)
- 查看error.log中的具体错误信息
数据库连接异常:
- 确认时区参数?serverTimezone=Asia/Shanghai
- 检查MySQL用户权限
Redis连接超时:
- 关闭防火墙或添加端口例外
- 确认requirepass与配置一致
前端资源加载不全:
- 浏览器强制刷新(Ctrl+F5)
- 检查Nginx的root路径大小写
经过以上步骤,你应该已经完成了苍穹外卖项目的完整环境搭建。建议在启动所有服务后,按照"Nginx → MySQL → Redis → 后端服务 → 前端页面"的顺序进行依赖检查。这套环境配置方案已在Windows 10/11和macOS Ventura上验证通过,如遇特殊环境问题,可以尝试调整组件版本号或查看项目的GitHub Issues区获取解决方案。