Some checks failed
Publish to Confluence / confluence (push) Failing after 37s
263 lines
5.5 KiB
Markdown
263 lines
5.5 KiB
Markdown
<!-- Space: qifu -->
|
||
<!-- Parent: 后端技术&知识&规范 -->
|
||
<!-- Parent: 技术方案 -->
|
||
<!-- Parent: 基建 -->
|
||
<!-- Title: 20250107-Yearning安装及SSO接入指南 -->
|
||
|
||
<!-- Macro: :anchor\((.*)\):
|
||
Template: ac:anchor
|
||
Anchor: ${1} -->
|
||
<!-- Macro: \!\[.*\]\((.+)\)\<\!\-\- width=(.*) \-\-\>
|
||
Template: ac:image
|
||
Url: ${1}
|
||
Width: ${2} -->
|
||
<!-- Macro: \<\!\-\- :toc: \-\-\>
|
||
Template: ac:toc
|
||
Printable: 'false'
|
||
MinLevel: 2
|
||
MaxLevel: 4 -->
|
||
<!-- Include: 杂项/声明文件.md -->
|
||
|
||
<!-- :toc: -->
|
||
|
||
# Yearning 安装及 SSO 接入指南
|
||
|
||
## Yearning 安装启动
|
||
|
||
- 可以参考:https://next.yearning.io/zh/usage/ixah25xr/
|
||
|
||
### Docker Compose
|
||
|
||
#### `docker-compose.yml` 文件
|
||
|
||
```yaml
|
||
version: '3'
|
||
|
||
services:
|
||
yearning:
|
||
image: yeelabs/yearning:v3.1.5
|
||
environment:
|
||
MYSQL_USER: yearning
|
||
MYSQL_PASSWORD: ukC2ZkcG_ZTeb
|
||
MYSQL_ADDR: mysql
|
||
MYSQL_DB: yearning
|
||
SECRET_KEY: dbcjqheupqjsuwsm
|
||
IS_DOCKER: is_docker
|
||
ports:
|
||
- 8000:8000
|
||
volumes:
|
||
- ./opt/conf.toml:/opt/conf.toml
|
||
#- 首次使用请先初始化
|
||
#- command: /bin/bash -c "./Yearning install && ./Yearning run"
|
||
depends_on:
|
||
- mysql
|
||
restart: always
|
||
|
||
mysql:
|
||
image: mysql:5.7
|
||
environment:
|
||
MYSQL_ROOT_PASSWORD: ukC2ZkcG_ZTeb
|
||
MYSQL_DATABASE: yearning
|
||
MYSQL_USER: yearning
|
||
MYSQL_PASSWORD: ukC2ZkcG_ZTeb
|
||
command:
|
||
- --character-set-server=utf8mb4
|
||
- --collation-server=utf8mb4_general_ci
|
||
volumes:
|
||
- ./data/mysql:/var/lib/mysql
|
||
|
||
#- 默认账号:admin,默认密码:Yearning_admin
|
||
```
|
||
|
||
#### `conf.toml` 文件
|
||
|
||
```toml
|
||
[Mysql]
|
||
Db = "Yearning"
|
||
Host = "127.0.0.1"
|
||
Port = "3306"
|
||
Password = ""
|
||
User = "root"
|
||
|
||
[General]
|
||
SecretKey = "dbcjqheupqjsuwsm"
|
||
Hours = 4
|
||
Lang = "zh_CN"
|
||
|
||
[Oidc]
|
||
Enable = false
|
||
ClientId = "${keycloak的客户端ID}"
|
||
ClientSecret = "${keycloak的客户端Secret}"
|
||
Scope = "openid profile"
|
||
AuthUrl = "${issuer链接}/protocol/openid-connect/auth"
|
||
TokenUrl = "${issuer链接}/protocol/openid-connect/token"
|
||
UserUrl = "${issuer链接}/protocol/openid-connect/userinfo"
|
||
RedirectUrL = "${yearning的地址}/oidc/_token-login"
|
||
UserNameKey = "preferred_username"
|
||
RealNameKey = "name"
|
||
EmailKey = "email"
|
||
SessionKey = "session_state"
|
||
```
|
||
|
||
### Yearning OIDC 配置
|
||
|
||
- 可以参考:https://next.yearning.io/zh/usage/boccobus/
|
||
|
||
#### 修改 `conf.toml`(Keycloak示例)
|
||
|
||
```toml
|
||
[Oidc]
|
||
Enable = true
|
||
ClientId = "${keycloak的客户端ID}"
|
||
ClientSecret = "${keycloak的客户端Secret}"
|
||
Scope = "openid profile"
|
||
AuthUrl = "${issuer链接}/protocol/openid-connect/auth"
|
||
TokenUrl = "${issuer链接}/protocol/openid-connect/token"
|
||
UserUrl = "${issuer链接}/protocol/openid-connect/userinfo"
|
||
RedirectUrL = "${yearning的地址}/oidc/_token-login"
|
||
UserNameKey = "preferred_username"
|
||
RealNameKey = "name"
|
||
EmailKey = "email"
|
||
SessionKey = "session_state"
|
||
```
|
||
|
||
- ${keycloak的客户端ID}:例如 `yearning`
|
||
- ${keycloak的客户端Secret}: Keycloak中获取
|
||
- ${issuer链接}: Keycloak 中获取
|
||
- ${yearning的地址}:yearning 请求地址
|
||
|
||
### 异常处理
|
||
|
||
- 如果出现异常,可以排查 `Yearning` 服务和 `Keycloak` 服务是否可以访问通畅。
|
||
- 或者说 `Yearning` SSO 配置中的链接在 `Yearning` 所在服务中是否可以正常访问
|
||
|
||
## 本地构建启动(参考)
|
||
|
||
- Yearning `3.1.9.1`
|
||
- 系统 `Ubuntu24.04`
|
||
- nodejs `v18.20.5`
|
||
- npm `10.8.2`
|
||
- go `go version go1.22.10 linux/amd64`
|
||
|
||
### 安装 GO
|
||
|
||
#### 下载安装
|
||
|
||
- 下载 go:https://go.dev/dl/
|
||
|
||
```shell
|
||
#- 解压
|
||
tar -zxf go1.22.10.linux-amd64.tar.gz
|
||
|
||
#- 移动
|
||
mv go /usr/local/go
|
||
|
||
#- 配置环境变量
|
||
vi /etc/profile
|
||
####- /etc/profile start
|
||
export GOROOT=/usr/local/go
|
||
export PATH=$PATH:$GOROOT/bin
|
||
####- /etc/profile end
|
||
|
||
#- 使配置生效
|
||
source /etc/profile
|
||
|
||
#- 查看是否成功
|
||
go version
|
||
```
|
||
|
||
#### 配置 go proxy
|
||
|
||
- 参考:https://goproxy.cn/
|
||
|
||
```shell
|
||
go env -w GO111MODULE=on
|
||
|
||
go env -w GOPROXY=https://goproxy.cn,direct
|
||
```
|
||
|
||
### 安装 Node
|
||
|
||
#### 下载安装
|
||
|
||
- 下载 nodejs:https://nodejs.org/en/download/
|
||
|
||
```shell
|
||
#- 解压
|
||
xz -d node-v18.20.5-linux-x64.tar.xz
|
||
tar tar -xf node-v18.20.5-linux-x64.tar
|
||
|
||
#- 移动
|
||
mv node-v18.20.5-linux-x64 /usr/local/nodejs
|
||
|
||
#- 配置环境变量
|
||
vi /etc/profile
|
||
####-/etc/profile start
|
||
export GOROOT=/usr/local/go
|
||
export NODE_HOME=/usr/local/nodejs
|
||
export PATH=$PATH:$GOROOT/bin:$NODE_HOME/bin
|
||
####-/etc/profile end
|
||
|
||
#- 验证安装
|
||
node -v
|
||
|
||
npm -v
|
||
```
|
||
|
||
### Yearning 源码安装
|
||
|
||
- 工作目录 `/usr/local/workspace`
|
||
|
||
#### 获取 Yearning
|
||
|
||
```shell
|
||
git clone https://github.com/cookieY/Yearning.git
|
||
```
|
||
|
||
#### 获取 Yearning 前端
|
||
|
||
```shell
|
||
git clone https://github.com/cookieY/gemini-next.git
|
||
```
|
||
|
||
#### 编译前端代码
|
||
|
||
```shell
|
||
#- 进入目录
|
||
cd /usr/local/workspace/gemini-next
|
||
#- 安装
|
||
npm install --registry https://registry.npmmirror.com
|
||
#- 构建
|
||
npm run build --registry https://registry.npmmirror.com
|
||
|
||
#- 将目标文件移动到源文件目录
|
||
mv dist /usr/local/workspace/Yearning/src/service/
|
||
```
|
||
|
||
#### 编译后端代码
|
||
|
||
```shell
|
||
cd /usr/local/workspace/Yearning
|
||
|
||
go mod tidy
|
||
|
||
cp conf.toml.template conf.toml
|
||
|
||
#- 修改 配置文件
|
||
vi conf.toml
|
||
|
||
#- 初始化(第一次需要)
|
||
#- go run main.go install
|
||
|
||
#- 启动
|
||
go run main.go run
|
||
```
|
||
|
||
- 启动报错 `chat/* xxx`
|
||
- 编辑文件 `vi src/service/yearning.go`
|
||
- 删除报错提示的行相关的代码
|
||
|
||
## 参考
|
||
|
||
- [Yearning安装教程](https://next.yearning.io/zh/usage/ptbzchak/)
|
||
- [使用go语言编译部署最新版Yearning【v3.0.1】](https://blog.csdn.net/qq_44930876/article/details/125679454) |