# reggie **Repository Path**: frsf/reggie ## Basic Information - **Project Name**: reggie - **Description**: 瑞吉外卖,附加注释与一些配置问题 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-01-09 - **Last Updated**: 2023-02-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # reggie ### 介绍 大三寒假复习Spring框架,跟着黑马老师视频一起做的[基于spring boot的瑞吉外卖项目](https://www.bilibili.com/video/BV13a411q753/?spm_id_from=333.337.search-card.all.click&vd_source=dc4fb36fb0caac9672f9bbbb04194206 "b站视频链接"),趁着时间还算充裕,将说明文档尽量写详细一点,方便有需要的同学预览。
### 运行展示
###### 后台
-
-
-
###### 移动端
### 安装方式
1. 使用工具进行基本的Linux环境安装
2. 使用docker(有时间更新)
### 部分功能说明 / 错误避免
1. 移动端登录
我在登录时候,配置了两种登录方式,前端会启用正则进行判断登录方式:
①阿里云SMS短信验证
在utils包下的SendSms类中,代码完全按照阿里云示例代码进行配置。需要说明的是,个人申请短信服务比较繁琐,需要多个证明材料。其实可以直接使用阿里云的测试短信验证,只需要保证阿里云账户余额大于0(发送一条测试短信0.04¥),即可使用测试短信,无需申请证明材料。**若使用阿里短信请修改SendSms内自己的密钥信息**。
②Springboot-mail
**坑:当使用QQ邮箱作发送验证码方时,默认使用port 25发送邮件,本地测试并无问题,但上线阿里云服务器时候,你会发现即使开放25端口,仍然会报25端口错误,这是因为25端口默认是被服务器厂商禁用的,需要提交申请才能使用,所以建议修改端口到465,协议改为smtps,如下**
```yaml
# Mail
spring:
mail:
host: smtp.qq.com # 发送邮箱的服务器地址 smtp.qq.com
username: xxxx@qq.com # 发送邮箱的账号
password: xxxx # 开启IMAP/SMTP服务获得的授权码
default-encoding: UTF-8 # 字符编码
port: 465
protocol: smtps
properties: # 设置邮件超时时间防止服务器阻塞
timeout: 5000
connection-timeout: 5000
write-timeout: 5000
```
---
2. 配置远程Redis
①远程配置文件设置密码,并且取消只能本机访问
②使用高版本Redis时,**坑:yml配置文件里面的Redis密码一定要使用单引号,不使用便会报错**,目前还不知道什么原因造成的
③redis参考配置文件在/data/redis文件夹内,修改密码在 requirepass 后
```yaml
# Redis
spring:
redis:
host: xxxx
port: 6379
# 使用单引号,连接远程Redis不会报错
password: 'password'
database: 0
cache:
redis:
# 30min cache time
time-to-live: 1800000
```
---
3. MySQL8.0 主从复制
推荐直接使用docker拉取MySQL8的镜像进行配置。sql脚本文件,MySQL主数据库和从数据库的my.ini文件均在项目根目录的/data/MySQL文件夹内,需要的可以自取。
> 在使用提供的主库my.ini后,下列为主库的主从复制配置
```yaml
//mysql8授权用户需要先创建,创建和授权同一条语句的话会报错
create user 'slave'@'%' identified by '123456';
//再授权
GRANT ALL PRIVILEGES ON *.* TO 'slave'@'%'WITH GRANT OPTION;
//刷新
flush privileges;
// 查看主库状态,此后不要操作主库
show master status;
```

> 在使用提供的从库my.ini后,下列为从库的主从复制配置
```yaml
//执行前先停下slave
stop slave;
//这是从库和主库连接的关键一步,host是主库的ip,user是前面创建的slave用户,file和pos是主库show master status的信息
change master to
master_host='192.168.81.100',master_user='slave',master_password='123456',
master_log_file='mysql-bin.000001',master_log_pos=157;
//执行后启动slave
start slave;
// 查看从库状态
show slave status\G;
```
说明:当下列两个状态均为Yes即为配置成功,如果显示Connection则可能正在连接,可以等待会查看。

---
4. Nginx配置
①项目后期对于外卖后台进行前后端分离开发,外卖后台打包后的工程在/data/Nginx/dist文件夹内,在配置完成nginx后,放在html文件夹内即可。
②nginx配置文件default.conf在/data/Nginx下,参照修改配置即可
```yaml
# 前端工程位置配置
location / {
root /usr/share/nginx/html/dist;
index index.html index.htm;
}
# 反向代理配置
location ^~ /api/ {
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://8.142.102.66:8080;
}
```
---
5. 已有菜品的原始图片位于/data/Img,存储位置在配置文件下列位置
```yaml
# 用户自定义参数,linux图片存储位置
reggie:
path: /home/java_env/pic/
```
---
6. Knife4j配置类WebMvcConfig.java 文档位置:/data/Knife4j/default_OpenAPI.json
