当前位置:首页 > 新闻动态 > 网站文章

在线客服系统 源码(PC/H5/软件PHP开源)+搭建方法

来源: 浏览:138 时间:2023-10-13

  开源在线客服系统软件(源码)搭建流程方便快捷,但无法满足容灾、弹性扩展、零宕机升级与负载均衡等需求,主要用于搭建Demo用于展示,与服务对SLA无要求的用户。

  通过以下命令,可以全自动地搭建一套完整的客服系统源码最小集群(包含turms-gateway、turms-service与turms-admin)及其依赖服务端(MongoDB分片集群与Redis)。

  完整源码:kf.zxkfym.top

  git clone --depth 1 /turms-im/turms.git

  cd turms

  docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions

  # Or "ENV=dev,demo docker-compose -f docker-compose.standalone.yml --profile monitoring up --force-recreate -d" to run with sidecar services in dev profile

  docker-compose -f docker-compose.standalone.yml up --force-recreate

  等集群完成搭建后,可以通过localhost:6510 访问turms-admin后台管理系统,并输入账号密码(默认均为turms)。如果登录成功,则说明Turms集群搭建成功。

  注意:AWS提供了高性价比的t4g系列EC2实例,但由于t4g系列实例使用了ARM处理器,因此很多应用都无法运行在该类EC2实例上,如bitnami所提供的镜像就均无法运行在该类实例上。如果您想要在ARM处理器上运行docker-compose.standalone.yml,您需要先执行下方指令,在本地编译并安装Loki插件,然后才能运行docker-compose.standalone.yml 由于Loki自身有个Critical级别的Bug(/grafana/loki/issues/2361),即当日志无法送达Loki服务端时,直接Freeze我们的服务,因此我们暂时移除了Loki服务,您目前不需要执行下述命令,也可直接运行docker-compose.standalone.yml:

  # Install Go

  sudo add-apt-repository ppa:longsleep/golang-backports

  sudo apt update

  sudo apt install golang-go

  # Install Loki

  sudo docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions

  # Build and Enable Loki

  git clone https://github.com/grafana/loki.git

  cd loki

  git checkout "tags/v2.4.1" -b setup

  sudo GOOS=linux GOARCH=arm GOARM=7 go build ./clients/cmd/docker-driver

  # Replace "" with the real path on your machine

  sudo mv docker-driver /var/lib/docker/plugins//rootfs/bin

  sudo docker plugin enable loki

  补充:

  配合--profile monitoring(docker-compose -f docker-compose.standalone.yml --profile monitoring up --force-recreate),还可以额外自动搭建Prometheus与Grafana服务端。

  客服源码服务端默认使用生产环境配置,不会向控制台打印日志,只会打印日志文件,因此您通过docker logs 是无法查看到Turms服务端的运行日志的。为了方便排查问题,您可以在本地开发测试时,把环境变量设置为ENV=dev,然后再次启动docker-compose.standalone.yml。在dev环境下,Turms会向控制台打印日志,并自动生成测试用的Fake数据,与模拟真实客户端TCP连接与请求

  如果您通过上述指令,无法启动docker-compose.standalone.yml。则确保服务器的docker-compose版本为1.29.x,docker版本为19.x.x或20.x.x

  Turms的Playground环境与网站每次都是通过ENV=dev,demo docker-compose -f docker-compose.standalone.yml --profile monitoring up --force-recreate -d这一条命令自动搭建的。

  基于Terraform与docker-compose

  (由于客服源码目前并没有提供封装好的镜像,因此仍需要使用docker-compose进行环境搭建)

  该方案是在上述docker-compose方案的基础上,引入了客服源码自定义的Terraform模块,以帮助用户自动开通并配置VPC、交换机、安全组与单机ECS抢占式实例。在这台ECS上,Terraform会通过user-data系统初始化脚本,来安装docker-compose与客服源码等服务,并最终启动客服源码单机集群。

  具体操作命令如下:

  git clone --depth 1 /turms-im/turms.git

  cd turms/terraform/alicloud/playground

  export ALICLOUD_ACCESS_KEY=

  export ALICLOUD_SECRET_KEY=

  terraform init

  terraform apply

  在terraform apply命令执行完毕后,等待约3~15分钟(阿里云ECS拉取ghcr镜像很慢),然后再访问公网IP:6510(公网IP可以通过查看控制台输出的public_ip或查看云服务的ECS控制台获得),如果可以成功访问turms-admin后台管理系统,则表明搭建成功。

  基于云服务的集群环境:

  适用场景:有容灾、弹性扩展、跨地域部署与负载均衡等需求。该方案提供的各种能力直接与搭建成本挂钩,因此您通常需要修改默认提供的Terraform module配置,以保证配置既能满足您的需求,同时搭建与运维成本最低。

  具体操作命令如下:

  git clone --depth 1 /turms-im/turms.git

  cd turms/terraform/alicloud/cluster

  export ALICLOUD_ACCESS_KEY=

  export ALICLOUD_SECRET_KEY=

  terraform init

  terraform apply

  该Terraform模块会进行按照互联网应用的常规同城容灾级的部署方案,进行云服务的部署。具体而言包括:

  在一个地域内搭建一个VPC,该VPC下开通2台交换机,代表两个可用区

  在上述两个可用区内默认部署一套MongoDB分片集群服务,实现同城容灾

  在一个可用区内默认部署一套Redis服务

  为接收发送给Turms ECS的外网流量,开通SLB服务

  为实现Turms ECS的外网访问,开通NAT服务

  为turms-gateway、turms-service与turms-admin服务端分别搭建各自的安全组

  为turms-gateway服务端,开通无公网带宽的ECS实例(默认数量为1)。通过user-data实现turms-gateway服务初始化与执行,并与上述SLB、NAT、安全组、MongoDB、Redis服务绑定

  为turms-service服务端,开通无公网带宽的ECS实例(默认数量为1)。通过user-data实现turms-service服务初始化与执行,并与上述SLB、NAT、安全组、MongoDB、Redis服务绑定

  为turms-admin服务端,开通无公网带宽的ECS实例(默认数量为1)。通过user-data实现turms-admin服务初始化与执行,并与上述安全组服务绑定

  自此整套Turms基础集群搭建完成(未来还会提供诸如日志分析服务等。

  在线客服系统源码服务端启动与关闭的大致流程:

  1、启动流程:

  连接并校验mongos与Redis服务端。

  检测MongoDB是否已建表,如果已经建好表了,则跳过这步。如果没有就进行:建表、添加索引、添加分片键、添加Zones用于冷热数据分离存储。如果开启了MongoDB的Fake数据,则turms-service会自动向MongoDB生成Fake数据,用于开发测试。

  对于turms-service服务端,它会检测MongoDB中是否已存在一个角色为ROOT,且账号为turms的超级管理员账号。如果不存在,则会向MongoDB创建一个角色为ROOT、名称为turms与密码为turms.security.password.initial-root-password(默认为:turms)的管理员账号。

  注册本地Node节点到服务注册中心,如果注册成功,则拉取并应用集群全局配置,并搭建RPC服务端,用于接收RPC客户端连接。如果失败,则抛异常并退出进程。

  开启Admin HTTP服务端,用于接收管理员API请求。另外,对于turms-gateway,还要开启网关服务端(如TCP/WebSocket),用于接收客户端连接与请求。

  对于turms-gateway,如果开启了Fake客户端,则生成真实的客户端连接并随机发送真实客户端请求(请求类型随机、请求参数随机),用于开发测试。

  至此,服务端启动完毕。

  2、关闭流程:

  (对于turms-gateway)

  拒绝新客户端网络连接与客户端请求

  关闭Fake客户端,关闭已建立的客户端会话连接

  关闭TCP/UDP/WebSocket客户端服务端,与HTTP管理员API服务端

  (对于turms-gateway与turms-service) 4. 关闭黑名单同步机制 5. 关闭集群服务(如RPC网络连接、服务注册与发现服务) 6. 关闭插件机制 7. 发送完Redis/MongoDB客户端请求后,关闭Redis与MongoDB的客户端网络连接 8. 打印完日志,关闭日志服务

  至此,服务端关闭完成。

地址 · ADDRESS

地址:建邺区新城科技园嘉陵江东街18号2层

邮箱:309474043@qq.Com

点击查看更多案例

联系 · CALL TEL

400-8793-956

售后专线:025-65016872

业务QQ:309474043    售后QQ:1850555641

©南京安优网络科技有限公司 版权所有   苏ICP备12071769号-4  网站地图