苍穹外卖环境搭建实战:从JDK到Nginx的完整指南 📅 发布时间:2026/9/20 13:06:11 👁 浏览次数: 简介面向Java Web初学者和希望夯实项目实战能力的开发者这份“苍穹外卖项目实战二”环境搭建资料包针对从零配置一套可运行的外卖系统开发环境涉及Spring Boot后端服务、MySQL数据库、前端HTML页面及本地Web服务器的完整配合适合边看边练。包内共181个文件、约5.96MB其中86个java文件对应核心逻辑与实体类8个js和6个css支撑前端交互与样式3个sql脚本用于初始化数据库另有图片、Nginx配置、Maven配置等辅助文件结构清晰便于对照学习。资料已有4168人学习说明其在实际项目参考中得到不少开发者认可。借助这份资源可以快速补齐环境搭建中的常见缺口比如数据库初始化、静态资源引入、后端接口联调、本地服务启动等从而把更多精力投入到苍穹外卖的业务功能实现、功能测试与部署演练上少走弯路。1. 项目概述与环境搭建的整体思路1.1 这个项目到底在做什么先交代一下背景。苍穹外卖是一个典型的前后端分离的Java项目实战课模拟真实的外卖点餐业务场景覆盖管理端和用户端两端业务。管理端面向商家处理菜品管理、套餐管理、订单派送、数据统计等后台业务用户端则面向普通消费者包含微信小程序端的点餐、购物车、下单支付等流程。作为系列教程的第二章这一阶段的核心任务就是把整套开发环境跑通为后面的代码编写和业务实现打基础。很多人在这个环节容易犯一个错误觉得环境搭建没什么技术含量直接把教程里的软件下载地址挨个装一遍就算完事。这种心态在前期可能看不出问题但到了后面做数据库迁移、Redis缓存、前后端联调的时候各种版本冲突和环境变量问题就会集中爆发排查起来非常痛苦。我的建议是把环境搭建当成一个正式的工程任务来对待每一步都弄清楚“为什么这么做”而不是机械地执行命令。1.2 你需要准备哪些核心组件整个环境涉及的技术栈并不复杂但组件之间的依赖关系需要理清。我列一下最终需要装齐的东西JDK 1.8注意是这个版本后面会解释为什么不用更新的版本Maven 3.6用于项目依赖管理和构建MySQL 5.7 或 8.0数据库存储Redis 非Windows官方版或Linux环境下的Redis用于缓存和Session共享Nginx用于反向代理和静态资源服务尤其是前端页面挂载Node.js 16用于前端Vue项目的运行和构建微信开发者工具用于用户端小程序的调试可不装但建议装如果你在Windows上开发我强烈建议再装一个虚拟机或者直接用Docker来跑Redis因为Windows版的Redis官方不支持GitHub上有第三方编译的版本但稳定性和性能都不如Linux原生版。后面我在常见问题章节会详细讲这块的坑。2. 版本选型与下载安装的环境准备2.1 JDK为什么必须是1.8苍穹外卖这个项目在文档上标注的就是JDK 1.8很多新手不理解觉得既然有Java 17、Java 21这些新版为什么还要用老掉牙的1.8原因其实很现实项目的基础框架Spring Boot使用的是2.7.x版本这个版本的底层设计和部分依赖只保证在JDK 8到JDK 17之间跑得平稳教程方为了最大限度减少环境差异选择锁定JDK 1.8是最稳妥的。换个说法如果你用JDK 17去编译运行这个项目大概率有一些第三方jar包会报模块访问错误比如CGLIB代理、JAXB这些老库在JDK 9之后被移除了模块化支持。排查这些问题的成本远比一开始装一个JDK 1.8高得多。所以我的建议是跟着项目走项目用什么版本你就装什么版本等你有能力自己去升级框架解决了再考虑换版本。安装JDK时有个细节要注意Windows下安装完成后需要手动配置环境变量。在系统变量里新增JAVA_HOME值为JDK的安装路径然后在Path变量里加上%JAVA_HOME%\bin。配置完成后打开命令行输入java -version确认输出版本号是1.8。如果系统里之前装过其他版本的JDK记得检查Path里是否有多余的旧路径这个是最常见的版本冲突来源。2.2 Maven的仓库镜像配置Maven是Java项目的构建和依赖管理工具苍穹外卖会用到Spring Boot、MyBatis、Redis等一堆依赖包Maven会自动从中央仓库下载。问题在于中央仓库的服务器在国外国内网络环境下下载速度极慢经常会卡在某个依赖上下不动。这时候就需要配置阿里云的镜像仓库让依赖从国内镜像源下载。配置文件在Maven安装目录下的conf/settings.xml找到mirrors标签在里面加上这一段mirror idaliyunmaven/id mirrorOfcentral/mirrorOf name阿里云公共仓库/name urlhttps://maven.aliyun.com/repository/public/url /mirror配置完之后跑一下mvn help:system命令如果能看到下载日志里出现aliyunmaven字样就说明镜像配置生效了。另外需要在IDE里把Maven的settings.xml路径指向你配置的这个文件IDEA默认用的是自带的那份配置需要手动改一下。在我带过的项目里至少有三成的新人栽在Maven配置这一步表现是引入依赖后IDEA长时间卡在Resolving状态或者项目一启动就报ClassNotFoundException。排查方向就是先确认仓库地址是不是阿里云镜像再确认IDEA的Maven设置里User settings file是否选对了文件。2.3 数据库与缓存的版本注意事项数据库我建议直接用MySQL版本5.7和8.0都可以。如果是从零开始直接用8.0就行安装向导会要求设置root密码建议设成容易记住的比如root因为后续项目的配置文件里默认连接串就是jdbc:mysql://localhost:3306/sky_take_out用户名密码都是root。如果你想改密码记得同步修改后端项目里的application.yml。Redis这个环节需要注意前面提过Windows版本的问题。我的实践方案是本地装一个Docker Desktop在Docker里跑一个Redis 6.2容器这样最接近生产环境。如果你觉得Docker太重量级也可以找一个编译好的Windows版Redis但启动时经常出现Creating Server TCP listening socket *:6379: bind: No error这类端口冲突的报错需要先检查6379端口是否被占用。关于Nginx它的作用是作为反向代理服务器将前端请求转发到后端服务同时托管前端静态资源。Windows下的Nginx解压即用配置文件在conf/nginx.conf后续做前后端联调时需要在这里配置跨域转发规则这部分在后面的实操章节会详细展开。3. 后端运行环境的搭建流程3.1 安装MySQL并导入初始数据库脚本拿到项目源码后一般会有一个sql目录里面放着初始的数据库建表脚本sky_take_out.sql。在安装好MySQL后需要手动创建数据库并导入这个脚本。我用命令行方式演示一下Windows或Linux通用mysql -uroot -p # 输入密码后进入MySQL命令行 create database sky_take_out default character set utf8mb4; exit;然后回到普通命令行执行mysql -uroot -p sky_take_out sky_take_out.sql导入成功后可以登录MySQL查看表结构确认是否导入完整。这里判断导入成功的标志是能看到orders、dish、category、user等核心业务表。有的教程会提供图形化工具导入的方式比如用Navicat但如果你想在面试时说清楚这个环节最好掌握命令行导入的方式。数据库字符集统一使用utf8mb4这点很重要。外卖这类业务涉及用户备注、菜品描述等文本信息如果遇到特殊字符比如emoji只有utf8mb4能正常存储utf8会报Incorrect string value错误。3.2 导入后端项目并配置application.yml后端项目代码导入IDEA后需要重点关注这几个文件application.yml框架核心配置包含数据库连接、Redis连接、文件上传路径application-dev.yml开发环境配置通常覆盖application.yml中的内容pom.xmlMaven依赖清单修改application.yml里的spring.datasource部分确认你本地的MySQL端口、用户名和密码与配置一致。如果使用默认配置不需要改动这些内容因为教程里的默认值就是localhost:3306、root/root。启动项目前还要确认本地的Redis服务已经在运行。因为苍穹外卖的项目里Redis不仅做缓存还承担登录Token的存储如果Redis没启动项目会报连接超时。执行启动类SkyApplication的main方法看到控制台输出类似“Started SkyApplication in xx seconds”的日志再配合端口号8080或配置里指定的端口出现Tomcat started on port字样就说明后端启动成功了。3.3 验证后端接口是否正常响应后端启动后可以用一个简单的HTTP请求来验证接口是否发起。打开浏览器访问http://localhost:8080/employee/login会看到一个404或者405的响应这代表服务在运行只是没有正确的请求方式。也可以直接访问http://localhost:8080/如果返回一个JSON格式的错误信息说明HTTP层是通的。更专业的验证方式是使用Postman或Apifox这类工具发送POST请求到登录接口完整的请求体格式可以在项目文档里找到。我个人习惯用IDEA自带的HTTP Client文件来快速验证新建一个.http文件写上请求方法和参数即可方便整个项目周期里反复使用。4. 前端环境与联调配置4.1 Node.js环境和npm镜像源前端项目通常是Vue编写需要Node.js环境来运行开发服务器和打包构建。安装Node.js时直接去官网下载LTS版本安装完成后在命令行验证node -v npm -vnpm是Node.js自带的包管理工具默认下载源在国外同样需要切换成国内镜像。执行下面这行命令即可npm config set registry https://registry.npmmirror.com切换完成后进入前端项目根目录通常是sky-take-out-front之类执行npm install安装依赖。这个过程根据网络情况可能需要几分钟到十几分钟不等。如果中途报错常见的是node-sass这类依赖需要编译而本地环境的Python版本或Visual Studio Build Tools不满足要求。这种问题直接切换成sass包可以绕过或者按报错提示安装对应构建工具。4.2 前端项目的启动与代理配置依赖安装完成后在项目目录执行npm run serve开发服务器默认跑在http://localhost:8081。如果前端项目没有单独配置代理请求后端接口时会遇到跨域问题浏览器控制台会报No Access-Control-Allow-Origin header is present。解决方式有两种。一种是在后端的WebMvcConfiguration里配置跨域映射CORS把允许的来源地址加上。另一种更推荐的方式是在前端项目根目录创建vue.config.js配置开发服务器代理module.exports { devServer: { proxy: { /api: { target: http://localhost:8080, changeOrigin: true } } } }这样前端发起的以/api开头的请求就会被代理转发到后端的8080端口绕开了浏览器的跨域限制。配置完成后需要重启npm run serve才生效。整个环境跑通的标志性画面是浏览器访问http://localhost:8081能看到管理端的登录页面输入账户密码后能进入主界面左侧菜单能正常渲染后端控制台里能看到对应的SQL日志和Redis写入记录。4.3 Nginx在项目中的作用有的阶段教程会用Nginx将打包后的前端产物和后端服务统一挂在80端口下模拟真实线上部署。这个环节虽然属于部署范畴但如果想在环境搭建阶段就把后面的路铺好可以提前把Nginx装好并理解它的配置。基础配置思路是前端打包后生成dist目录将dist路径指向Nginx的root将包含/api前缀的请求通过proxy_pass转发到后端服务。完整的配置模板后续在部署章节会用到环境阶段只需要安装好Nginx会做基础的start nginx操作确认它启动不报错就够了。5. 常见问题与排查技巧实录5.1 问题速查表直接抄作业我整理了一份环境搭建阶段最高频的问题清单都是我实际带项目时帮别人排查过的基本可以覆盖九成以上的坑问题现象可能原因解决方案Maven依赖下载卡住不动未配置阿里云镜像修改settings.xml添加镜像源启动项目报UnsupportedClassVersionErrorJDK版本不对确认JAVA_HOME指向JDK 1.8连接MySQL报Access denied密码错误或用户权限不足检查application.yml中的账号密码Redis连接超时Redis服务未启动启动Redis检查6379端口监听状态前端npm install报node-sass错误本机缺少编译环境切换sass包或在项目目录重新安装页面访问接口报404Nginx代理路径配置错误检查location匹配规则项目启动提示端口被占用8080端口被其他服务占用命令行执行netstat -ano | findstr 8080结束对应进程5.2 端口冲突的排查思路端口冲突在环境搭建中出现的频率最高尤其是8080端口几乎每个Java后端的默认端口都是它本机只要装过别的Java项目就极易冲突。排查思路分三步命令行执行netstat -ano | findstr 8080查看占用进程的PID打开任务管理器在“详细信息”标签页找到该PID对应的进程如果是没用的旧进程直接结束任务如果是有用的服务修改本项目端口绕开修改后端端口也很简单在application.yml里改server.port的值即可。但要记住如果改了后端端口前端代理和Nginx配置里的目标端口也要同步修改否则还是不通。我之前见过一个情况改完后端端口却忘了改Nginx前端页面的请求全部打到了旧端口上排查了半个小时才找到问题。5.3 关于MySQL和Redis的两个特别提醒MySQL的时区问题。如果你的MySQL版本是8.0连接串中最好加上时区参数jdbc:mysql://localhost:3306/sky_take_out?serverTimezoneAsia/ShanghaiuseUnicodetruecharacterEncodingutf8。不加时区参数时控制台会报The server time zone value 乱码 is unrecognized的警告严重时会导致时间字段插入数据库后偏差8个小时。这个参数在教程的默认配置里可能没有写全需要自己注意。Redis的数据持久化。如果本地Redis是Docker跑的容器删除后数据会全部丢失。环境搭建阶段虽然不涉及重要数据但如果你用Redis存了登录Token重新启动后旧Token失效前端页面会跳回登录页。这不是bug是Redis的内存特性。如果不想每次重新登录可以在创建容器时挂载一个数据卷具体命令在Docker文档里有这里不展开写。6. 收尾环境跑通后的经验总结到这里整套苍穹外卖的环境就搭建完成了。回顾一下这个过程中容易出问题的环节其实核心就是三个方面版本一致性、镜像源配置、端口管理。只要这三块处理妥当整个搭建流程半小时以内就能搞定。我个人在实际操作中的体会是环境搭建阶段一定不要跳过验证步骤。很多人在导入项目后看到IDEA不报错就认为环境已经配好了直到写业务代码启动服务时才暴露问题。正确的做法是每一环安装后都立即验证JDK用java -version、Maven用mvn -v、MySQL用命令行连接、Redis用redis-cli ping、前端用浏览器打开页面。这几颗零散的“锚点”全部确认无误后再往后推进才是学项目最稳妥的节奏。如果你在搭建过程中遇到了教程之外的环境报错先别急着百度完整报错信息巧用关键信息搜索反而更快比如报错堆栈中最核心的异常类名和报错行号。找到解决方案之后再回头想想这个报错为什么会发生这个习惯会让你的排错能力快速提升。环境问题没有什么高深的技术含量但每次踩坑都是一次实操经验积累等你自己能独立从零搭一套环境项目的学习之路就成功了一半。本文还有配套的精品资源点击获取