文章目录
前言
苍穹外卖从零开始,今天是第一天,主要内容有:
- 前后端环境配置,包括Nginx,Maven,IDEA,MySQL的安装和配置
- 完善管理端登陆功能
使用的开发平台是MacBook Air M3芯片,更多学习笔记可以点击我的个人网站www.yucan.dev
一、前端环境搭建
安装Nginx
前端工程基于Nginx运行,首先我们需要安装Nginx
Nginx在MAC上的安装、启动、重启和关闭:
https://www.kancloud.cn/sxlcjqq/interviews/890653
推荐使用Homebrew 安装Nginx,只需要一句命令
在终端执行如下命令
brew search nginx
brew install nginx
安装完以后,可以在终端输出的信息里看到一些配置路径:
/usr/local/etc/nginx/nginx.conf(配置文件路径)
/usr/local/var/www (服务器默认路径)
/usr/local/Cellar/nginx/1.8.0 (安装路径)
如果是macOS 1.12以上的系统,在安装过程中可能会出现"warning",说是不支持该版本的操作系统,可以暂时先忽略它。
注意:Nginx目录必须放在没有中文的目录中才能正常运行
配置Nginx
苍穹外卖-Mac配置前端开发环境:
https://blog.csdn.net/weixin_45786868/article/details/133845979
将我们下载的nginx的目录(/opt/homebrew/etc/nginx/)里的nginx.conf替换为老师给的nginx.conf,并将(/opt/homebrew/Cellar/nginx/1.27.0)中的html文件夹替换成老师给的资料中的html文件夹,这里涉及两个路径,小心混淆。
Nginx启动
- windows启动nginx:双击nginx.exe即可启动nginx服务,访问端口号为80
- MAC启动nginx:命令行执行下面的命令
brew services start nginx // 启动nginx服务
ps -ef|grep nginx //检查nginx是否正在运行
打开浏览器输入:localhost:8080,下面页面正常显示 代表前端部署成功
二、后端环境搭建
后端工程基于maven进行项目构建,并且分模块开发
- sky- common子模块中存放的是一些公共类,可以供其他模块使用
- sky-pojo子模块中存放的是一些entity、DTO、VO
- ENtity:实体,通常和数据库中的表对应
- DTO:数据传输对象,通常用于程序中各层之间传递数据
- VO:视图对象,为前端展示数据提供的对象
- POJO:普通Java对象,只有属性 和对应的getter和setter
- sky-server子模块中存放的是配置文件、配置类、拦截器、controller、启动类等
具体搭建环境步骤
IDEA打开sky_take_out工程
- 用IDEA打开初始工程sky_take_out,如下图
- 在命令行检查电脑是否有maven,然后判断是否需要安装maven
brew info maven // 检查电脑maven信息
brew install maven //通过homebrew安装maven,通过homebrew安装,不需要配置环境变量classpath!
- 安装完maven后我们还需要配置IDEA中的maven
打开IDEA->setting,将maven home path换成本地路径,不知道可以通过brew info maven查看,然后通过cd命令进入maven本地文件夹,依次通过cd conf和ls命令,找到settings.xml文件,并将settings.xml文件路径复制到IDEA中User settings file,然后Apply,OK,IDEA中maven配置完成,具体演示步骤看下面的图片
使用Git进行项目代码的版本控制
- 创建Git本地仓库
- 创建Git远程仓库
- 将本地文件推送到Git远程仓库
使用IDEA自带Database可视化并连接MySQL
- 首先在命令行安装并启动MySQL,在安装完MySQL后需要初始化MySQL,设置root密码
# homebrew安装MySQL
brew install MySQL
brew info MySQL
# 启动MySQL
brew services start MySQL
# 进入/退出MySQL环境
MySQL -u root -p // 进入
quit; // 退出
- 安装并熟悉了MySQL后,进入MySQL环境运行sky.sql文件,sky.sql会创建数据库sky_take_out,并在这个数据库中创建11个table。
如何命令行运行sky.sql文件:- 首先命令行进入mysql运行环境
- 拖动sky.sql文件到命令行,回车
- 注意:mac m1芯片 要一层层cd 然后source sky.sql ,不知道为啥,但是实操是这样的
- 然后在IDEA中建立与MySQL的连接,具体见图
上图是填写MySQL的登陆用户和密码以及数据库名称,下图中需要给数据库连接安装对应驱动(Drivers),点击‘+’号,安装对应MySQL版本驱动即可,然后Apply,并test connection能否成功。
三、项目整体
IDEA前后端联调注意事项
- application-dev.yml 中数据库密码是root,需要修改成本地数据库密码,有数字需要加双引号。
- 前端登陆账户密码,可以查看sky_take_out数据库中的employee表,会默认增加初始一项。
- Mac使用IDEA进入某一方法源码 快捷键:option+command+单击;进入方法对应接口:shift+command+单击;
JwtProperties配置类
JwtProperties是一个配置属性类,存放在common模块->properties,这个类是用来封装springboot配置文件中的配置项,也就是.yml配置文件
Nginx反向代理和负载均衡概念
前端发送的请求,是如何请求到后端服务的?
Nginx反向代理:前端发送请求给nginx服务器,然后由nginx服务器动态分陪给后端。为什么不直接通过前端请求后端,反而中间要添加一个nginx服务器,有以下好处:
- 提高访问速度,nginx服务器可以提供缓存,如果请求在缓存中存在可以直接传递数据
- 进行负载均衡:如果前端直接发送请求给后端,前端只能绑定一台后端,而在实际应用中,由于前端请求服务的增加,往往需要部署多台后端组成集群,nginx服务器可以将前端大量请求按照指定方式均衡的分配给集群中每台后端服务器,使得后端服务负载均衡。
- 保证后端服务安全:防止前端直接访问后端
Nginx反向代理和负载均衡的配置方式-nginx.conf
将api/前路径替换,然后剩余的拼接上
负载均衡就是将发送给后端请求,指定服务器ip地址,可以有不同的分配策略
nginx负载均衡策略:
轮询 | 默认方式 |
---|---|
weight | 权重方式,默认为1,权重越高,被分配的客户端请求就越多 |
ip_hash | 依据ip分配方式,这样每个访客可以固定访问一个后端服务 |
least_conn | 依据最少连接方式,把请求优先分配给连接数少的后端服务 |
url_hash | 依据url分配方式,这样相同的url会被分配到同一个后端服务 |
fair | 依据响应时间方式,响应时间短的服务将会被优先分配 |
完善登录功能
Employee table中密码是明文存储,如何解决?
- 将密码加密后存储
使用MD5加密方式MD5信息摘要算法,一种密码散列函数,将原本明文密码生产为一个128位的散列值(16字节),且该过程是单向的。所以进行密码核对是核对加密后的128位密文。
- 修改数据库中的明文密码,改为MD5加密后的密文
- 修改Java代码,前端提交的密码进行MD5加密后再跟数据库中的密码进行对比
- DigestUtils工具类,可以对数据进行DM5加密
Swagger
帮助后端生成接口文档,并进行接口测试使用Swagger只需要按照他的规范去定义接口及接口相关信息,就可以做到生成接口文档,以及在线接口调试页面。Knife4j 是为Java MVC框架集成Swagger生成Api文档的增强解决方案。
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
Swagger使用方式
导入 knife4j的maven坐标
在配置类中加入knife4j相关配置
设置静态资源映射,否则接口文档页面无法访问
Swagger常用注解
注解 | 说明 |
---|---|
@Api | 用在类上,例如Controller,表示对类的说明 |
@ApiModel | 用在类上,例如entity、DTO、VO |
@ApiModelProperty | 用在属性上,描述属性信息 |
@ApiOperation | 用在方法上,例如Controller的方法,说明方法的用途、作用 |
总结
day01主要实现了环境搭建和登陆功能,还学习了Nginx反向代理和负载均衡概念,以及Maven和如何使用Swagger生成接口文档。