# 客服配置
文档最后更新时间:2021-06-09 11:05:21
### 注意事项
* `shopro客服系统`采用`workerman`的`gateway-worker`作为服务基础,请先安装`gateway-worker`扩展包
* `shopro商城`兼容了插件市场的`workerman在线客服系统`,因`shopro`无法控制别的插件,如果使用`shopro客服系统`,请在插件管理禁用`workerman在线客服系统`,如果使用`workerman在线客服系统`,请在`商城配置,客服配置`,选择 workerman 在线客服系统
* 如果使用了 workerman 在线客服系统,请移步[workerman 在线客服](https://doc.fastadmin.net/kefu)文档
### 安装部署
#### 安装扩展包
~~~
composer require workerman/gateway-worker:~3.0
~~~
#### 删除禁用函数(如有未列出的,请帮忙反馈,谢谢( ^∀^))
~~~
putenv
shell_exec
proc_open
pcntl_alarm
pcntl_fork
pcntl_wait
pcntl_signal
pcntl_signal_dispatch
~~~
#### linux 服务器
##### 必要扩展
> 如果是宝塔,默认已经开启了这两个扩展
* pcntl
* posix
##### 建议安装扩展(性能提升)
> 可以不装,如果想提升 workerman 性能的小伙伴,需要自行百度搜索 php 安装 event 扩展
* event
### 参数配置
#### 注意事项
* 建议开启 ssl 连接
* 如果wss 连接方式选择 证书,ssl 证书要填写证书在服务器的绝对地址
* 如果一台服务器上同时部署多套商城,则`gateway 端口`,`gateway 内部端口`,`worker 服务端口`,都需要变更,`gateway 内部端口`,和`worker 服务端口`,建议在现有端口基础上`+ 10`,给之后调进程数量留足够的空间,比如 2020 变为 2030
#### 配置
![![image.png](https://cdn.fastadmin.net/uploads/20210531/5ee28a5c2c4d86923fe6165690512826.png "image.png")
A8RVZ0CDphlZ50fTI0hdcg==](images/screenshot_1644736218519.png)
### 部署 wss
* **注意反向代理和证书方式只需要配置一个即可**
#### nginx 反向代理(如果nginx 建议使用)
> 目前只提供 nginx 的配置文档,按照这个配置可以不用放行客服端口\[1819\]
* **反向代理配置一定要在伪静态上面**
* **反向代理配置一定要在伪静态上面**
* **反向代理配置一定要在伪静态上面**
反向代理配置,注意修改里面的端口为自己后台配置的客服端口
Bpi79wa4a9lQspxW3o1K7w==
~~~
location ^~ /websocket {
proxy_redirect off;
proxy_pass http://127.0.0.1:1819; # 转发
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; # 升级协议头
proxy_set_header Connection upgrade;
}
~~~
配置完整示例,注意截图有限,反向代理下面是伪静态和图片跨域,之前配置好了的,都不需要动,只需要在最前面追加反向代理配置
![](https://img.kancloud.cn/0f/bd/0fbdce90201f529f06b478114ab858ea_759x496.png)
#### ssl 证书配置方式
* 证书这里要直接使用 https 域名的证书,wss 证书,和 wss key 输入框这里直接填写证书的绝对地址
* 如果是宝塔证书地址在这里:宝塔-》网站-》设置-》配置文件 里面可以看到
* **注意如果是 linux 要确保客服进程启动用户有读取证书的权限,可以改证书和所在目录的权限,或者是将证书复制一份到项目目录,把证书设置成 www 用户所有**
##### 证书配置方法(推荐,以宝塔为例)
* 第一步,配置域名 https 证书,并且找到证书地址
![](https://img.kancloud.cn/4a/19/4a19b9be5ec306336a5adf0a1b15ae4a_1060x488.png)
* 第二步,去刚才的地址复制证书
![](https://img.kancloud.cn/45/35/453542db970e898b75722e6988a8fbe3_1703x314.png)
* 第三步,将证书放入项目目录,并且给上权限
![](https://img.kancloud.cn/c4/a6/c4a6c76713fdbbad96dd877da82406f8_1365x276.png)
* 第四步,将放置的完整证书地址填入客服配置
![](https://img.kancloud.cn/0b/14/0b149035e05794ab54209d228979c7a5_843x176.png)
### 启动服务
#### linux 服务器
##### 注意事项
* linux 下启动客服命令要使用当前 php-fpm 启动用户作为启动用户,如果是宝塔,则是 www 用户
##### 请先在调试模式下启动
> 调试模式下可以发现绝大部分问题,请一定现在调试模式下调通之后在守护方式启动,调试模式按 ctrl+c 停止,停止时候的报错可以忽略(因为ctrl+c使进程异常终止)
~~~
sudo -u www php think shopro:chat start
~~~
##### 启动
~~~
调试模式启动
sudo -u www php think shopro:chat start
正式模式,守护进程方式启动
sudo -u www php think shopro:chat start d
~~~
##### 停止
~~~
如果调试模式,直接 ctrl + c 即可
正式模式
sudo -u www php think shopro:chat stop
~~~
##### 查看状态
~~~
正式模式
sudo -u www php think shopro:chat status
~~~
##### 启动成功是这个样子的
> 注意 workerman 输出的停止命令是错的,不要使用
~~~
Workerman[shopro:chat] start in DAEMON mode
------------------------------------------------- WORKERMAN --------------------------------------------------
Workerman version:4.0.9 PHP version:7.2.31
-------------------------------------------------- WORKERS ---------------------------------------------------
proto user worker listen processes status
tcp root Register text://0.0.0.0:2238 1 [OK]
tcp root ShoproChatBusinessWorker none 4 [OK]
tcp root ShoproChatGateway websocket://0.0.0.0:1818 2 [OK]
--------------------------------------------------------------------------------------------------------------
Input "php shopro:chat stop" to stop. Start success.
~~~
#### windows 服务器
> windows 不支持命令模式启动
##### 启动服务请双击启动脚本
> 会打开一个命令窗口,并且停在那里
~~~
/addons/shopro/library/chat/start_for_win/shopro_chat_start_for_win.bat
~~~
##### 关闭直接把命令窗口关掉即可