优化
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 69 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 101 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 91 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 112 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 49 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 47 KiB |
@@ -0,0 +1,40 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
title: 使用宝塔安装
|
||||
---
|
||||
|
||||
:::info
|
||||
Tailchat 已上架宝塔应用商店,你可以在应用商店中一键安装Tailchat
|
||||
|
||||
宝塔服务器面板,一键全能部署及管理: [https://www.bt.cn](https://www.bt.cn/u/P0shD8)
|
||||
:::
|
||||
|
||||
## 安装宝塔
|
||||
|
||||
如果您已经有宝塔服务器,直接登录宝塔面板,跳过本节内容即可。
|
||||
|
||||
[](https://www.bt.cn/u/P0shD8)
|
||||
|
||||
点击以上链接跳转到宝塔官网,查看如何在你的服务器安装宝塔
|
||||
|
||||
## 在应用商店安装
|
||||
|
||||
登录到宝塔面板,在侧边栏点击 `docker` 菜单
|
||||
|
||||

|
||||
|
||||
在应用商店中搜索 Tailchat,点击安装按钮
|
||||
|
||||

|
||||
|
||||
如果使用的是ip,请勾选`允许外部访问`。端口默认为11000
|
||||
|
||||

|
||||
|
||||
点击确定,需要等待一段时间,等待时间主要取决于服务器网络
|
||||
|
||||

|
||||
|
||||
等待一段时间后,显示完成后在浏览器打开 `http://<your-ip>:11000`
|
||||
|
||||

|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"label": "Kubernetes",
|
||||
"position": 2
|
||||
}
|
||||
@@ -0,0 +1,176 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
title: 在 Sealos 上部署Tailchat
|
||||
---
|
||||
|
||||
`Sealos` 是一款开源的 Kubernetes 部署系统。通过 `Sealos` 我们可以快捷的创建一个按需付费的应用集群。
|
||||
|
||||
## 首先进入 Sealos 并打开「应用管理」
|
||||
|
||||

|
||||
|
||||
## 新建应用
|
||||
|
||||

|
||||
|
||||
### 创建依赖
|
||||
|
||||
`tailchat` 作为企业级的应用,最小依赖: `mongodb`, `redis`, `minio`.
|
||||
|
||||
接下来让我们来一一创建。
|
||||
|
||||
#### mongodb
|
||||
|
||||
为了方便起见我们固定一个实例,并且为数据库绑定本地存储。
|
||||
|
||||
使用的镜像是 `mongo:4`
|
||||
|
||||
需要注意的是因为我没有给数据库设置密码,因此不要对外网提供网络服务。容器暴露端口填数据库默认服务端口 `27017` 即可
|
||||
|
||||
内容如下:
|
||||
|
||||

|
||||
|
||||
点击部署应用提交部署
|
||||
|
||||
耐心等待一会,就可以看到应用已经启动起来了
|
||||
|
||||

|
||||
|
||||
> 需要注意的是初始分配的64m对于mongodb来说实在太小了,所以通过变更应用改为了128m。可以随时分配资源大小这也是sealos/k8s很方便的一点
|
||||
|
||||
#### minio
|
||||
|
||||
接下来我们创建minio, minio是一个开源的对象存储服务。我们同样可以通过`sealos`的点点点来快速创建
|
||||
|
||||
使用的镜像是: `minio/minio`
|
||||
|
||||
需要注意的是我们要进行一些调整:
|
||||
|
||||
- 暴露端口: 9000
|
||||
- 运行命令改为: `minio`
|
||||
- 命令参数改为: `server /data`
|
||||
- 设置环境变量:
|
||||
- MINIO_ROOT_USER: tailchat
|
||||
- MINIO_ROOT_PASSWORD: com.msgbyte.tailchat
|
||||
- 本地存储: `/data`
|
||||
|
||||
最终结果如下:
|
||||
|
||||

|
||||
|
||||
点击部署按钮同样看到服务已经正常启动起来了。
|
||||
|
||||
#### redis
|
||||
|
||||
最后我们需要部署redis作为内容缓存与信息转发。
|
||||
|
||||
使用镜像: `redis:alpine`
|
||||
|
||||
暴露端口: `6379`
|
||||
|
||||
最终结果如下:
|
||||
|
||||

|
||||
|
||||
|
||||
### 创建 Tailchat 本体
|
||||
|
||||
此时Tailchat所需要的依赖均已部署完毕,如下:
|
||||
|
||||

|
||||
|
||||
现在我们来部署 `Tailchat` 本体。
|
||||
|
||||
`Tailchat` 的本体会相对复杂一点,不过因为`sealos`纯UI操作也不会太过复杂。
|
||||
|
||||
- 使用镜像: `moonrailgun/tailchat`
|
||||
- 暴露端口: `11000`(记得要打开外网访问)
|
||||
- 配置环境变量如下:
|
||||
```
|
||||
SERVICEDIR=services,plugins
|
||||
TRANSPORTER=redis://redis:6379
|
||||
REDIS_URL=redis://redis:6379
|
||||
MONGO_URL=mongodb://mongo/tailchat
|
||||
MINIO_URL=minio:9000
|
||||
MINIO_USER=tailchat
|
||||
MINIO_PASS=com.msgbyte.tailchat
|
||||
```
|
||||
|
||||
最终效果如下:
|
||||
|
||||

|
||||
|
||||
耐心等待一段时间后可以看到`Tailchat` 服务已经启动起来了
|
||||
|
||||

|
||||
|
||||
## 预览服务
|
||||
|
||||
首先我们可以先检查一下`Tailchat`服务的可用性,可以通过外网地址提供的服务后面加上 `/health` 来检查服务可用性, 如: `https://<xxxxxxxxxx>.cloud.sealos.io/health`
|
||||
|
||||
当启动完毕后,Tailchat服务会返回如下内容:
|
||||
|
||||

|
||||
|
||||
这段json字符串中包含了使用的镜像版本,节点名称,系统占用,微服务加载情况。
|
||||
|
||||
这里我们可以看到我的常见的服务, 如`user`/`chat.message`以及一些带有插件前缀的服务如`plugin.registry`都已经正常启动起来了,说明我们的服务端是正常运行的。
|
||||
|
||||
现在我们可以直接访问我们的外网地址,可以看到经过短暂的加载后,页面正常打开自动跳转到了登录界面。
|
||||
|
||||

|
||||
|
||||
随便注册一个账号,可以看到我们可以正常进入Tailchat的主界面, 如下图:
|
||||
|
||||

|
||||
|
||||
至此我们的服务已经成功在 sealos 中落地了。
|
||||
|
||||
## 扩容服务
|
||||
|
||||
当然,作为一个分布式架构的系统,`Tailchat` 天然是支持水平扩容的。而在 `sealos` 想要实现扩容也非常简单, 只需要通过变更操作修改实例数即可:
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
此时当我们访问 `https://<xxxxxxxxxx>.cloud.sealos.io/health` 可以看到我们可以访问到不同的节点
|
||||
|
||||

|
||||
|
||||
## 添加 Tailchat 入口到桌面
|
||||
|
||||
打开 Terminal, 输入`vim app.yml`创建并编辑一个配置文件
|
||||
|
||||
输入以下内容,注意url要换成自己部署的网址
|
||||
|
||||
```yml
|
||||
apiVersion: app.sealos.io/v1
|
||||
kind: App
|
||||
metadata:
|
||||
name: tailchat-app-entry
|
||||
spec:
|
||||
name: Tailchat
|
||||
icon:
|
||||
type: iframe
|
||||
data:
|
||||
url: <Your url>
|
||||
desc:
|
||||
icon: https://tailchat.msgbyte.com/img/logo.svg
|
||||
menuData:
|
||||
nameColor: text-black
|
||||
helpDropDown:
|
||||
helpDocs:
|
||||
displayType: normal
|
||||
```
|
||||
|
||||
按`esc`退出编辑模式, 按`:wq`保存并退出vim
|
||||
|
||||
输入`kubectl apply -f app.yml`启动配置。
|
||||
|
||||
完毕后刷新页面,此时我们可以看到我们的入口就出现在`sealos`的桌面上了
|
||||
|
||||

|
||||
@@ -0,0 +1,116 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
title: 简单部署
|
||||
---
|
||||
|
||||
## 简介
|
||||
|
||||
Kubernetes 是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它提供了一种容器编排的方法,可以自动化容器的部署、调度、负载均衡和故障恢复等任务,使得容器化应用程序可以在分布式系统中高效地运行。
|
||||
|
||||
Kubernetes 的优点包括:
|
||||
- 自动化:Kubernetes 可以自动化容器的部署、调度、负载均衡和故障恢复等任务,减少了人工干预的工作量。
|
||||
- 可扩展性:Kubernetes 可以在大规模集群中管理数千个容器化应用程序,具有良好的水平扩展性和垂直扩展性。
|
||||
- 灵活性:Kubernetes 支持多种容器运行时和多种云平台,可以在不同的环境中部署和管理应用程序。
|
||||
- 可靠性:Kubernetes 提供了强大的故障恢复机制和自我修复能力,可以确保应用程序的高可用性和可靠性。
|
||||
- 社区支持:Kubernetes 是一个活跃的开源项目,有庞大的社区支持和生态系统,可以快速获取更新和支持。
|
||||
|
||||
|
||||
## 快速入门
|
||||
|
||||
如果您想要在 Kubernetes 上部署 Tailchat 项目,那么您可以在项目目录中的 `docker/simple/k8s` 子目录中找到已经准备好的简单 Tailchat 部署配置。这些配置文件包括了用于运行 Tailchat 的 Kubernetes 资源定义,例如 StatefulSet、Service 和 依赖的数据库、持久化存储 等等。这些资源定义可以让您快速地在 Kubernetes 上部署一个简单的 Tailchat 项目,而无需手动创建和配置这些资源。
|
||||
|
||||
:::info
|
||||
需要注意的是,本教程部署的 Tailchat 不包含完整的 Tailchat 生态如**开放平台**与**Admin后台管理平台**
|
||||
:::
|
||||
|
||||
### 环境依赖
|
||||
|
||||
为了开始本章的内容,我们假设你已经准备好了一个可用的 kubernetes 环境,关于如何搭建 k8s 环境本节不进行赘述。
|
||||
|
||||
### 开始
|
||||
|
||||
首先我们需要clone项目仓库:
|
||||
|
||||
```bash
|
||||
git clone git@github.com:msgbyte/tailchat.git
|
||||
```
|
||||
|
||||
将工作目录切到配置文件目录
|
||||
|
||||
```bash
|
||||
cd docker/simple/k8s
|
||||
```
|
||||
|
||||
此时我们可以看到有许多已经准备好了的配置文件,我们可以通过一条命令直接启动:
|
||||
|
||||
```bash
|
||||
kubectl apply -f namespace.yml -f pv.yml -f mongo.yml -f minio.yml -f redis.yml -f tailchat.yml
|
||||
```
|
||||
|
||||
这条命令会依次执行创建`namespace`、创建`pv`和`pvc`、创建`mongodb`、`minio`、`redis`等必须的第三方中间件,最后启动一个多实例的 `tailchat` 服务。
|
||||
|
||||
你可以通过以下命令检测各个服务的状态:
|
||||
|
||||
```bash
|
||||
kubectl get svc -n tailchat
|
||||
```
|
||||
|
||||
### 路由与负载均衡。
|
||||
|
||||
当所有的服务都就绪后,我们的Tailchat服务目前已经在集群中运行起来了,但是此时我们还无法访问,因为还没有暴露在外部。
|
||||
|
||||
对于本地测试,我们可以用`port forward`功能将一个pod的端口映射到本地。而在生产环境,我们则需要构建路由转发。
|
||||
|
||||
以 `traefik` 为例:
|
||||
|
||||
> Traefik 是一款开源的反向代理和负载均衡器,专门用于处理容器化应用程序和微服务架构中的流量路由和负载均衡。Traefik 支持多种后端服务,包括 Docker、Kubernetes、Mesos、Swarm、Consul、Etcd 等等。它可以自动地发现和配置后端服务,并根据规则将流量路由到相应的服务实例。
|
||||
|
||||
#### 安装helm, 并增加仓库地址
|
||||
|
||||
`helm` 的安装不做赘述。我们执行以下命令将`traefik`添加到仓库列表
|
||||
|
||||
```bash
|
||||
helm repo add traefik https://helm.traefik.io/traefik
|
||||
```
|
||||
|
||||
#### 在 tailchat 命名空间中安装traefik
|
||||
|
||||
```bash
|
||||
helm install traefik traefik/traefik -n tailchat
|
||||
```
|
||||
|
||||
#### 启动 ingress 资源声明
|
||||
|
||||
```bash
|
||||
kubectl apply -f ingress.yml
|
||||
```
|
||||
|
||||
如果一切正常,则通过以下命令可以看到如下输出
|
||||
|
||||
```bash
|
||||
kubectl get services -n tailchat
|
||||
```
|
||||
|
||||

|
||||
|
||||
#### 设置DNS服务
|
||||
|
||||
你可以在上述的`ingress.yml`中修改域名地址配置,默认是 `http://tailchat.internal.com/`
|
||||
|
||||
如果不期望修改或者没有域名则可以通过修改`hosts`文件来实现:
|
||||
```bash
|
||||
sudo vim /etc/hosts
|
||||
```
|
||||
|
||||
然后增加如下路径:
|
||||
|
||||
```
|
||||
127.0.0.1 tailchat.internal.com
|
||||
```
|
||||
|
||||
现在你可以打开浏览器并打开`http://tailchat.internal.com`来访问部署在k8s中的tailchat服务
|
||||
|
||||
当然,你也可以访问如下地址检测服务可用性:
|
||||
```
|
||||
http://tailchat.internal.com/health
|
||||
```
|
||||
@@ -0,0 +1,87 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
title: 手动部署
|
||||
---
|
||||
|
||||
:::caution
|
||||
本章内容需要你对 nodejs, git, linux 有一定程度的了解。当出现如依赖问题、环境问题、系统问题等问题时需要具备自行解决和排查问题的能力。
|
||||
|
||||
如果你对此并不了解,不建议你使用本章内容进行部署。建议使用统一镜像进行部署。
|
||||
:::
|
||||
|
||||
## 依赖
|
||||
|
||||
- git
|
||||
- nodejs v16.18.0 或以上
|
||||
- pnpm v8.3.1 或以上
|
||||
- mongodb
|
||||
- redis
|
||||
- minio
|
||||
|
||||
## 下载源码
|
||||
|
||||
```bash
|
||||
mkdir msgbyte && cd msgbyte
|
||||
|
||||
git clone https://github.com/msgbyte/tailchat.git
|
||||
```
|
||||
|
||||
### 切换到稳定代码
|
||||
|
||||
因为克隆下来的代码是最新代码,可能存在短时间内不稳定的情况,因此如果想要切换到各个版本的稳定代码的话可以使用git的tag功能
|
||||
|
||||
如切换到`v1.7.6`则可以使用命令:
|
||||
|
||||
```bash
|
||||
git checkout v1.7.6
|
||||
```
|
||||
|
||||
## 编译项目
|
||||
|
||||
Tailchat 是一个前后端分离的项目。因此我们要分别处理前端代码和后端代码
|
||||
|
||||
### 安装依赖
|
||||
|
||||
我们假设你已经安装了 `nodejs v16.18.0+` 或者以上的版本。以及安装了 `pnpm v8.3.1` 或以上版本
|
||||
|
||||
```bash
|
||||
cd tailchat
|
||||
pnpm install
|
||||
```
|
||||
|
||||
该命令会花费一些时间,将Tailchat所有的依赖都安装一遍。当安装完毕后内部的插件会自动执行编译命令。
|
||||
|
||||
### 构建项目
|
||||
|
||||
```bash
|
||||
NODE_ENV=production pnpm build
|
||||
```
|
||||
|
||||
该命令会并行执行编译前端后端管理端的命令。并将前端产物移动到服务端的 `server/dist/public` 目录
|
||||
|
||||
当项目构建完毕后我们的产物就可以正常运行了
|
||||
|
||||
:::caution
|
||||
请尽可能在 `macos` / `linux` 环境进行构建,window 对 shell 命令支持并不一定完全
|
||||
:::
|
||||
|
||||
## 运行项目
|
||||
|
||||
为了确保项目能够水平扩容,`Tailchat` 的核心代码虽然写在同一个项目中,但是实际启动起来的时候可以被划分为多个细分的微服务。通过传入不同的环境变量的组合来实现有选择的启用不同的服务。
|
||||
|
||||
在server目录下以`.env.example`目录为例创建一个环境变量文件
|
||||
|
||||
```bash
|
||||
cp server/.env.example server/dist/.env
|
||||
vim .env
|
||||
```
|
||||
|
||||
将必要的环境变量修改为自己的,如 `MONGO_URL`, `REDIS_URL`, `MINIO_URL`
|
||||
|
||||
然后启动服务
|
||||
|
||||
```bash
|
||||
SERVICEDIR=services,plugins pnpm start:service
|
||||
```
|
||||
|
||||
> `SERVICEDIR` 表示加载微服务的目录
|
||||
Reference in New Issue
Block a user