CloudTalk服务端编译流水账(下篇)

部署篇

gitee新版本

cloudtalk-server-3.0.1.tar.gz 解压

1
2
3
4
5
# 进入上一层目录
cd ..

# 解压编译生成的文件
tar -xf cloudtalk-server-3.0.1.tar.gz

老版本

im-server-2.0.3.tar.gz 解压

1
2
3
4
5
# 进入上一层目录
cd ..

# 解压编译生成的文件
tar -xf im-server-2.0.3.tar.gz

运行 sync_lib_for_zip.sh

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

1
2
3
4
5
# 进入目录
cd cloudtalk-server-3.0.1/

# 分发lib
./sync_lib_for_zip.sh

导入 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

  1. 因为打算在内网测试,所以 IpAddr1IpAddr1 填的是局域网 IP

  2. 取消了 RouterServerIP2RouterServerPort2 的注释,也就是删除了前面的 #

  • 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
2
# 最先启动 ct_db_proxy_server
./restart.sh ct_db_proxy_server

老版没有 ct_ 前缀,例如:新版为 ct_db_proxy_server ,而老版本是 db_proxy_server

1
2
# 最先启动 db_proxy_server
./restart.sh db_proxy_server

ct_db_proxy_server 是启动数据库操作的服务端,运行完后,到 ct_db_proxy_server 目录下面的 Log 目录下面看日志,看有没有启动成功。如果没有报错信息,应该就可以

1
2
# 启动 ct_route_server
./restart.sh ct_route_server

1
2
# 启动 ct_file_server
./restart.sh ct_file_server

1
2
# 启动 ct_msfs
./restart.sh ct_msfs

1
2
# 启动 ct_push_server
./restart.sh ct_push_server

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

1
2
# 启动 ct_msg_server
./restart.sh ct_msg_server

1
2
# 启动 ct_http_msg_server
./restart.sh ct_http_msg_server

编译篇(API篇)

修改 application.properties

修改 cloudtalk/business-api/src/main/resources 目录下的 application.properties 文件,其中

  • spring.datasource.password123 改为用户 newim的密码;
  • cloudtalk.files.msfspriorhttp://imapi.b56.cn:9701/ 改为了 http://192.168.0.114:8700/
  • cloudtalk.files.msfspriorbackuphttp://imapi.b56.cn:9701/ 改为了 http://192.168.0.114:8701/
  • cloudtalk.api.urlhttp://im.b56.cn:9400/api/sendmsg 改为了 http://192.168.0.114:8400/api/sendmsg

微信支付暂时用不上,所以 cloudtalk.weixin.notifyUrl 改不改无所谓;

application-qa.propertiesapplication-local.properties 等只有老版本中才有,因为官方文档中描述 HttpMsgServerPort 是 http_msg_server 的 websocket 服务监听端口 ,所以将 HttpMsgServerPort 全部从 9900 改为 8400

编译 Java API

business-api 目录执行下面的命令

1
2
3
4
5
# 进入到 business-api 目录
mvn install

# 如果还没有安装 maven ,则执行
yum -y install maven

要等一会儿才能完成,编译成功后会看到 BUILD SUCCESS 提示

1
2
3
4
5
6
7
8
# 进入到 target/distribution 目录
cd target/distribution/

# 增加执行权限
chmod +x startup.sh

# 当前目录下执行
./startup.sh

同目录下会生成 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
2
3
4
5
# 切换到 root 用户
su root

# 一键卸载BT
sh bt-uninstall.sh

卸载成功

服务的端口

以下端口根据 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 的授权;

虽然看到有人问,但是 WindowsMac 的版本目前没见过;

所以如果你确定 CloudTalk 符合你的需求,建议联系作者做定制开发吧。

参考文档

cloudtalk: 源代码
地址:https://gitee.com/pwsns/cloudtalk

【新提醒】CloudTalk服务端源码编译方法(简版) - 技术文档 - CloudTalk支持计划 - Powered by Discuz!
地址:https://b56.cn/thread-6-1-1.html