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. 因为打算在内网测试,所以 IpAddr1 和 IpAddr1 填的是局域网 IP

  2. 取消了 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
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.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
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 的授权;

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

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

参考文档

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

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