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

什么是 CloudTalk ?

CloudTalk 是专注于企业云布署的即时通讯系统,基于 teamtalk 开源项目二次开发,群集布置效果优化,业务模块与底层分离,能快速与自已现有系统对接。支持音、视频通话,支持 andoird 、ios、 mac 、 windows 、h5/小程序, Http API 是全网唯一支持全平台布署的互联网即时通讯系统。

系统架构图

官方提供的数据:

基于 CloudTalk 的单台服务器聊天室支持10W+ 用户在线(4核8G 服务器配置),理论单台100W以上空闲连接数,20W活动用户量 (4核16G配置)

前言

  1. 编译的只是服务端,客户端只验证了 Android,其他的客户端我也没有;
  2. 本文只是官方「CloudTalk服务端源码编译方法(简版)」的补充,记录了自己编译的过程,属于非官方的操作;

如果需咨询,或者需要源代码什么的,请去加 CloudTalk 的官方 QQ 群;

申明:本人只是 CloudTalk 的用户,和官方无任何关系;是否愿意付费加群,取决于您个人的需要,与本文作者无关;

安装篇

安装 VMware

虚拟机的安装很简单,如果你还不了解虚拟机,可以看看之前的文章: VMware安装MacOS Big Sur系统

注意:

  1. 当然这一步不是必须的,部署的话建议直接在物理机上安装 CentOS
  2. 如果你用的 MacOS,也可以用 Parallels Desktop 来运行虚拟机;

安装 CentOS

版本的选择

这里踩的坑有点多,花了很多时间安装、测试,总共使用了 4 个版本的镜像,

  • CentOS-7-x86_64-DVD-1708.iso
  • CentOS-7-x86_64-Minimal-1708.iso
  • CentOS-8.3.2011-x86_64-dvd1.iso
  • CentOS-8.3.2011-x86_64-minimal.iso

虽然还有很多没弄明白,但是可以把确定性的先说一下,起码可以避免后面的人走重复的弯路。

  1. 按照官方要求的 需要 CentOS 7.0 以上版本。推荐使用纯净的新系统进行安装。,理论上这 4 个镜像都应该满足,但是实际上使用 CentOS 8 在编译的时候会出现

【结论】:只能选择大于 7 但是又小于 8CentOS 版本;

  1. 只要 CentOS 安装图像界面,一装完宝塔面板,重启后图形界面就会无限崩溃

经反复测试,CentOS 7 安装宝塔,图像界面就会崩溃,论坛也有人反馈了同样的问题:【待反馈】centos 7 安装完宝塔之后重启之后图形界面崩溃)(https://www.bt.cn/bbs/thread-56991-1-1.html)

【结论】:只是编译无所谓,但是如果要运行,不建议 CentOS 安装带 GUI

  1. 不要图省事,将文件丢到 /root/ 目录编译,每次编译到最后,都会出现 make ct_http_msg_server failed

【结论】:可能是权限问题吧,在安装 CentOS 的时候,除了设定 root 的密码外,还创建了一个用户 swb,我把要编译的代码丢在了 /home/用户名/ 目录,也就是 /home/swb/,能够正常编译。

下载 CentOS

下载地址 :https://www.centos.org/download/)

我最终使用的版本是 CentOS-7-x86_64-Minimal-1708.iso,除了 VMware 外,还在 Parallels Desktop 中验证过,都顺利通过编译。

安装 CentOS

虚拟机中 CentOS 7 的安装,可以参考这篇文章:VMware 安装 Centos7 超详细过程(https://www.runoob.com/w3cnote/vmware-install-centos7.html),写的非常详细;

不管是用 VMware 还是 Parallels Desktop ,记得把网络设置成桥接模式,这样后面客户端的调试会比较方便;

实体机安装其实和虚拟机中差不多,只是前面的引导方式不一样,iso 文件可以刻录到光驱里面,也可以做成 U 盘引导盘。具体参考这篇文章: 制作U盘启动盘,CentOS系统安装(https://segmentfault.com/a/1190000020105401)

安装宝塔面板

宝塔运维平台介绍:https://www.bt.cn

1
2
3
4
5
# 如果不是用管理员登录的,要切换为管理员才有权限安装宝塔
su root

# 安装宝塔面板
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh

部分图是在 GUI 模式下的终端里截取的,懒得再换;

如果你用 SSH 客户端

安装完成会有提示

账号、密码一定要保存好,保存好,保存好~

VM内的

1
2
3
4
外网面板地址: http://xxx.xxx.xxx.xxx:8888/7c0c531a
内网面板地址: http://192.168.0.114:8888/7c0c531a
username: ofu927vk
password: 6d7910e2

PD内的

1
2
3
4
外网面板地址: http://xxx.xxx.xxx.xxx:8888/490b1953
内网面板地址: http://192.168.197.198:8888/490b1953
username: aa2ftrzs
password: 1465c6a6

这是我的,你要记住的是你自己的~

安装支持环境

浏览器中打开宝塔的内网地址

输入账号密码,协议拉到底部后勾选同意

安装 LNMP

安装成功

LNMP

安装 redis

版本是6.2的

安装 java

选了 Java项目一键部署

安装 protobuf

1
2
# 在 SSH 界面安装,据说一键脚本里已经内置,不安装也可以
yum -y install protobuf

安装 hiredis

1
2
# 在 SSH 界面安装,下图是终端界面
yum -y install hiredis

安装 mysql_client

1
2
# 在 SSH 界面安装,下图是终端界面
yum -y install mysql

安装 log4cxx

1
2
# 在 SSH 界面安装,下图是终端界面
yum -y install log4cxx

编译篇(服务端)

下载源代码

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

winscp 连接到 CentOS,将下载的 pwsns-cloudtalk-master.zip 后上传到服务器

在安装 CentOS 的时候,除了 root 外还建了一个用户 swb,所以把文件上传到 /home/swb/ 目录

编译服务

文件解压

1
2
3
cd /home/swb/

unzip pwsns-cloudtalk-master.zip

进入 cloudtalk/server/src/ 目录,在当前目录执行

gitee 新版本

1
2
3
4
5
6
7
8
9
# 进入 install.sh 所在目录
cd cloudtalk/server/src/

# 如果是在 windows 上解压后再上传的,一定要加上执行权限
chmod +x c_build.sh
chmod +x install.sh

# 执行 install.sh
./install.sh

编译的时间有点长,编译完成后会在 cloudtalk/server 目录中生成 cloudtalk-server-3.0.1.tar.gz

老版本

所谓老版本是在网上找到的一个 2.0.3 版本的,可以忽略;

1
2
3
4
5
6
7
8
9
# 进入 install.sh 所在目录
cd cloudtalk/server/src/

# 依次执行脚本
./make_protobuf.sh
./make_log4cxx.sh
./make_hiredis.sh
./make_mariadb.sh
./build.sh version 2.0.3

执行 ./make_mariadb.sh 可能会有错误,可以不管;

编译的时间有点长,编译完成后会在 cloudtalk/server 目录中生成 im-server-2.0.3.tar.gz

未完待续,下周一的内容包含 JAVA 端的编译及项目部署设置。

参考文档

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

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

VMware 安装 Centos7 超详细过程 | 菜鸟教程
地址:https://www.runoob.com/w3cnote/vmware-install-centos7.html