📝 add Q&A

doc: add Q&A
This commit is contained in:
ronger 2023-04-25 15:49:17 +08:00 committed by GitHub
commit 6bc8013e26
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 70 additions and 40 deletions

View File

@ -1,43 +1,58 @@
# forest 食用手册
感谢使用 forest以下是本项目的开发手册
感谢使用 forest以下是本项目的开发手册你将了解到如何从零开始进行开发环境的搭建。运行本项目需要用到 MySQL 和 Redis你可以使用自己配置好的
MySQL 和 Redis也可以使用本项目提供的 `docker` 的方式快速搭建 MySQL 和 Redis 环境。
本项目提供了两种方式,你可以一步一步按照教程来配置,也可以直接使用 `docker` 快速运行本项目。
## 获取最新代码到本地
```shell
git clone "https://github.com/rymcu/forest"
```
## 开发环境搭建
### ide
本项目使用 `JetBrains IntelliJ IDEA UItimate` 作为编辑器进行开发
### java 环境
本项目在 `java se 8` 环境下进行开发
### 数据库
- `redis`
- `mysql`
## 其他
- 本项目使用了 `Lombok`,所以你还需在你的编辑器上安装 `Lombok` 插件
- 本项目使用 `maven` 作为依赖管理工具
> 本项目在以下开发环境下开发,其他环境下可能会出现兼容性问题,建议使用以下环境进行开发。
- IDE: `JetBrains IntelliJ IDEA UItimate`
- `Java 8(8u101 +)`
- `MySQL v7.x +`
- `Redis v7.x +`
## 使用 Docker 初始化开发环境
- 确保本机已安装并启动 `Docker`
- 在 `docker\dev` 目录下执行 `docker-compose up` 可初始化 `redis``mysql` 环境
- 如需修改相关配置,请编辑 `docker\dev` 目录下的 `docker-compose.yml` 文件
### 手动搭建 MySQL 和 Redis 环境
> 手动安装 MySQL 时,需初始化数据库。
## 手动初始化数据库
在配置好 MySQL 和 Redis 的环境之后,在运行项目前,你还需要初始化好数据库中数据。通过执行 `src/main/resources/static`
目录下的 `forest.sql` 文件进行数据库初始化操作。
![forest-sql](https://static.rymcu.com/article/1650261394563.png)
执行 `resources/static` 目录下的 `forest.sql` 文件进行数据库初始化操作
## 配置文件说明
### 使用 docker 快速搭建 MySQL 和 Redis 环境
> 使用 docker 快速搭建 MySQL 和 Redis 环境时,请修改 `docker\dev` 目录下的 `docker-compose.yml` 文件中的默认密码。
- 确保你已经安装了 `Docker`和`Docker-compose`
- 在 `docker\dev` 目录下执行 `docker-compose up` 可初始化 `redis``mysql` 环境
- 如需修改相关配置,请编辑 `docker\dev` 目录下的 `docker-compose.yml` 文件
### 配置文件说明
在初始化好数据库之后,你需要在`application.yml`中进行相关信息的配置,具体分为如下几个部分。
#### 数据库配置
### 数据库配置
```yaml
datasource:
url: jdbc:mysql://localhost:3306/forest?characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true
username: root
password: # 数据库密码
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/forest?characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: # 数据库密码
driver-class-name: com.mysql.cj.jdbc.Driver
```
- `characterEncoding` 指定处理字符的解码和编码的格式
- `serverTimezone` 指定时区
- `allowMultiQueries` 允许多行 `sql` 一起执行
### redis 配置
#### redis 配置
```yaml
redis:
host: 127.0.0.1
@ -52,7 +67,9 @@ redis:
max-idle: 500
min-idle: 0
```
### 邮箱服务配置
#### 邮箱服务配置
```yaml
mail:
host: smtp.163.com # 网站发送邮件邮箱服务 host
@ -61,30 +78,41 @@ mail:
password: # 密码
```
用户注册及找回密码时使用,本项目使用的是网易邮箱,其他邮箱可根据官方教程配置
用户注册及找回密码时使用,本项目使用的是网易邮箱,其他邮箱可根据官方教程配置。
#### 系统资源路径配置
### 系统资源路径配置
```yaml
resource:
domain: http://yourdomain.com # 网站域名,本地测试时填写前端项目访问地址即可
file-path: http://yourdomain.com # 上传文件前缀域名,本地测试时填写前端项目访问地址即可
pic-path: /yoursrc/xx/nebula/static # 上传文件存储地址,本地测试时填写前端项目路径下的 static 目录即可
```
### 百度相关配置
```yaml
baidu:
data:
site: https://yourdomain.com # 百度搜索(SEO)绑定网站域名
token: xxxx
ai:
appId: xxx # 百度AI-文字识别 应用 appId
appKey: xxxx # 百度AI-文字识别 应用 appKey
secretKey: xxxx # 百度AI-文字识别 应用 secretKey
```
### 运行项目
在你完成了前面的操作之后,就可以直接运行`ForestApplication.java`启动项目了,至此,如果后端项目已经成功启动,则可以切换到
[nebula](https://github.com/rymcu/nebula) 运行前端项目了。
## 常见问题
**Q: 找不到数据库配置Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.**
**Q: 找不到数据库配置Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource
could be configured.**
A: 检查是否配置了资源文件目录
![1636569760e18471dd2c74bedac5756e5fff537df.png](https://static.rymcu.com/article/1650261657433.png)
**Q: Caused by: java.lang.IllegalArgumentException: Failed to decrypt.
Caused by: java.lang.IllegalArgumentException: String length must be a multiple of four.**
A: 这种情况一般是发生在你使用`application-dev.yml`
启动项目的时候里面在druid初始化的时候你需要修改一下相关的参数具体如下:
```yaml
spring:
datasource:
druid:
# 关闭密码加密
connection-properties: config.decrypt=false;config.decrypt.key=${publicKey}
```

View File

@ -9,6 +9,7 @@ services:
- "6379:6379"
volumes:
- "redis-volume:/data"
# default password: d9d2j9w2
command: redis-server --requirepass d9d2j9w2 --appendonly yes
environment:
- TZ=Asia/Shanghai
@ -23,6 +24,7 @@ services:
- "mysql8-volume:/var/lib/mysql"
- "mysql8-volume:/logs"
environment:
# user: rootpasswordXzHvhX4CDaN696oQAXdmlcsrqgWbkxRl
- MYSQL_ROOT_PASSWORD=XzHvhX4CDaN696oQAXdmlcsrqgWbkxRl
- TZ=Asia/Shanghai
command: ["--default-authentication-plugin=mysql_native_password", "--init-file=/forest.sql"]