CloudTalk服务端编译流水账(下篇)
部署篇
gitee新版本
将 cloudtalk-server-3.0.1.tar.gz 解压
1 | # 进入上一层目录 |

老版本
将 im-server-2.0.3.tar.gz 解压
1 | # 进入上一层目录 |
运行 sync_lib_for_zip.sh
进入 cloudtalk-server-3.0.1/ 或者 im-server-2.0.3 目录,运行 sync_lib_for_zip.sh,他的作用是将 lib 分发到每个服务端目录里面。该脚本只需运行一次
1 | # 进入目录 |

导入 sql 文件
方式1
在 BT 面板中,数据库 –> 添加数据库

从 从本地上传 源代码目录 cloudtalk/database 目录中的 newim.sql 文件

开始上传

再 导入

成功后会提示 数据库导入成功
方式2
也可以在在 phpMyAdmin 中新建

新建数据库 newim

选择 导入,上传 database 目录下的 newim.sql 文件

导入成功

获取数据库 root 密码
从服务器获取后能同步到 newim 库

点 root密码,会弹出密码

也可以用 newim 的用户和它的密码

编辑 conf 文件
在启动服务之前,需要先配置 config 文件
ct_msg_server的配置文件ct_msgserver.conf

因为打算在内网测试,所以
IpAddr1和IpAddr1填的是局域网 IP取消了
RouterServerIP2和RouterServerPort2的注释,也就是删除了前面的#号
ct_route_serve的配置文件ct_routeserve.conf

将 ListenMsgPort=8200 改为了 ListenMsgPort=8200;8201
ct_http_msg_server的配置文件ct_httpmsgserver.conf

修改了 RouteServerPort2,从 8200 改为了 8201
ct_file_server的配置文件ct_fileserver.conf

没做任何改动
ct_push_server的配置文件ct_pushserver.conf

没做任何改动
ct_msfs的配置文件ct_msfs

没做任何改动
ct_db_proxy_server的配置文件ct_dbproxyserver.conf

这个文件主要是操作数据库和缓存,修改了
ThreadNum,从48改为了2,按注释为 CPU 核的 2 倍;teamtalk_master_password,从123456改为了前面获取到的root或者newim的密码;teamtalk_slave_password,从123456改为了前面获取到的root或者newim的密码;
数据库用户建议不要使用
root,用newim就行 ;
运行 restart.sh
restart.sh 是运行脚本,是运行服务端的。总共有:
ct_db_proxy_server|ct_msg_server|ct_route_server|ct_http_msg_server|ct_file_server|ct_push_server|ct_msfs 7 个服务端。
接下来依次启动 7 个服务
1 | # 最先启动 ct_db_proxy_server |

老版没有
ct_前缀,例如:新版为ct_db_proxy_server,而老版本是db_proxy_server
1 | # 最先启动 db_proxy_server |
ct_db_proxy_server是启动数据库操作的服务端,运行完后,到ct_db_proxy_server目录下面的 Log 目录下面看日志,看有没有启动成功。如果没有报错信息,应该就可以

1 | # 启动 ct_route_server |

1 | # 启动 ct_file_server |

1 | # 启动 ct_msfs |

1 | # 启动 ct_push_server |

日志里显示错误,不影响在内网的运行

1 | # 启动 ct_msg_server |

1 | # 启动 ct_http_msg_server |

编译篇(API篇)
修改 application.properties
修改 cloudtalk/business-api/src/main/resources 目录下的 application.properties 文件,其中
spring.datasource.password从123改为用户newim的密码;cloudtalk.files.msfsprior从http://imapi.b56.cn:9701/改为了http://192.168.0.114:8700/cloudtalk.files.msfspriorbackup从http://imapi.b56.cn:9701/改为了http://192.168.0.114:8701/cloudtalk.api.url从http://im.b56.cn:9400/api/sendmsg改为了http://192.168.0.114:8400/api/sendmsg
微信支付暂时用不上,所以
cloudtalk.weixin.notifyUrl改不改无所谓;
application-qa.properties和application-local.properties等只有老版本中才有,因为官方文档中描述HttpMsgServerPort 是 http_msg_server 的 websocket 服务监听端口,所以将HttpMsgServerPort全部从9900改为8400;
编译 Java API
在 business-api 目录执行下面的命令
1 | # 进入到 business-api 目录 |
要等一会儿才能完成,编译成功后会看到 BUILD SUCCESS 提示

1 | # 进入到 target/distribution 目录 |

同目录下会生成 im.log 文件
运行篇
web 访问
在浏览器中输入http://虚拟机IP:8080 会显示

也不知道是否正常,论坛有人问过,作者说开发了新的管理后台,但还不知道怎么弄
Android 客户端
官网源代码编译的版本支持更换服务器地址,还是很方便的
只要修改
/cloudtalk/android/app/src/main/java/com/zhangwuji/im/UrlConstant.java中的ACCESS_MSG_ADDRESS即可

先注册 2 个用户,然后就可以互相聊天了。
网页 demo
网页 demo 在 gitee 上并没有
只要修改 demo.js 中的地址为自己的 IP 即可

登录成功后,可以发消息

对端收到后

其他
一键卸载BT
1 | # 切换到 root 用户 |

卸载成功

服务的端口
以下端口根据 conf 文件进行整理
| 服务 | 端口 | 备注 |
|---|---|---|
| msg_server | 8000 | |
| http_msg_server | 8400 | http端口 |
| http_msg_server | 9326 | websocket端口 |
| db_proxy_server | 10600 | |
| route_serve | 8200,8201 | |
| push_server | 8500 | |
| file_server | 8600,8601 | 8600 为 Client;8601 为MsgServer |
| msfs | 8700 | |
| mysql | 3306 | |
| redis | 6379 | |
| api | 8400,9326 | 同 http_msg_server 端口 |
| msfsprior | 8700 | 同 file_server 端口 |
小结
可能是作者考虑要转商业化,因此客户端的代码只提供了 Android 的源代码,从编译出来的 app 看,和官方提供的 demo 存在较大的差异;
群里提供的 iOS 源代码日期上看还是 2019 年的;
Web 版本是基于 LayIM 开发的,而 LayIM 并不是开源产品,所以需要先购买 LayIM 的授权;
虽然看到有人问,但是 Windows 和 Mac 的版本目前没见过;
所以如果你确定 CloudTalk 符合你的需求,建议联系作者做定制开发吧。
参考文档
cloudtalk: 源代码
地址:https://gitee.com/pwsns/cloudtalk【新提醒】CloudTalk服务端源码编译方法(简版) - 技术文档 - CloudTalk支持计划 - Powered by Discuz!
地址:https://b56.cn/thread-6-1-1.html