业务场景:对于安全注重和可控性更强的企业,自己搭建聊天系统是很多企业选择,功能大概类似微信,QQ,阿里旺旺等,
                             目前及时通讯软件很多,比如商业的腾讯通,开源的基于XMPP开源协议的也很多,但是发现国内此类文章和案例比较少或者很多有问题,没有系统化解决实际问题,碎片化的知识点。
                             我今天讲的就是openfire+mysql+openldap+spark,此架构适用于企业环境中linux客户端和windows客户端并存办公。对安全性有较强要求和把控的企业,基于开源思想,所以选择的都是开源软件来搭建。
                             openfire:基于XMPP协议的服务器端,用java编写,所以你懂的,需要JDK或者JRE支持,下载地址为:http://www.igniterealtime.org/projects/openfire/plugins.jsp      国外网站,可能比较慢,需要此软件可以提供,

openfire提供基础的IM服务,如果想要更多功能,这个软件可以添加自己需要的插件,有很丰富的插件,直接上传下载的JAR包放到plugs下面就可以啦,下载地址也是上面地址,
spark:基于XMPP协议的客户端,也是java编写,客户端丰富,linux,mac,windows 都有,直接下载安装使用,同样是上面地址下载。
mysql 和openldap不是今天讲解的重点,此次安装全部基于centos7 安装,下面不如正题
一,安装openfire服务端,建议下载openfire的rpm包安装,因为这样可以省去在/etc/systemd/system/openfire.service 自己弄个启动器,
1, rpm -ivh openfire-4.5.2-1.x86_64.rpm 安装openfire rpm包,默认安装在/opt/openfire中,本次是2020年下载最新版本4.5.2
2,设置开机启动systemctl enable openfire
IM及时通讯软件openfire+mysql+openldap+spark_第1张图片
2, 安装JDK1.8,也可以不安装,因为此openfire 自带jre,就可以开始试用网页来访问
3,开始安装mysql5.7,我安装5.7版本,5.6也支持,同样rpm安装,然后导入openfire中mysql数据库结构,业支持其他版本数据库
IM及时通讯软件openfire+mysql+openldap+spark
4,openfire配置在网页中访问:http://localhost:9090/

IM及时通讯软件openfire+mysql+openldap+spark_第2张图片
5, 选择语言
IM及时通讯软件openfire+mysql+openldap+spark_第3张图片
6,选择域名和openfire服务器的域名,这里的加密可以暂时不用管
IM及时通讯软件openfire+mysql+openldap+spark_第4张图片
7,选择标准数据库,因为标准数据库性能更好
IM及时通讯软件openfire+mysql+openldap+spark_第5张图片
8,设置mysql数据库驱动,数据库地址,数据库名称,用户名和密码
IM及时通讯软件openfire+mysql+openldap+spark_第6张图片
9,选择用户和组的模式,默认很简单,在数据库中保存用户和组,设置一个管理员密码就OK啦,
IM及时通讯软件openfire+mysql+openldap+spark_第7张图片
10,我们这里介绍的是openldap 同步用户和密码
IM及时通讯软件openfire+mysql+openldap+spark_第8张图片
11,设置openldap,按照如图所示,后面密码为openldap的管理员密码
IM及时通讯软件openfire+mysql+openldap+spark_第9张图片
12,设置用户过滤,这里会去同步部门和人员
用户映射图
用户名域: uid
用户过滤: (objectClass=posixAccount)
IM及时通讯软件openfire+mysql+openldap+spark_第10张图片
13,组映射图主要是组映射到openfire和LDAP

组映射图
组域: cn
成员域: memberUid
描述域: description
Posix 模式: 确定
组过滤: (objectClass=posixGroup)
IM及时通讯软件openfire+mysql+openldap+spark_第11张图片
14,添加openfire管理员,把openldap中一个组织或者用户给授权成管理员,这里是IT组全部成员
需要注意的是,一定要在锯齿设置那里验证下密码是否可用
IM及时通讯软件openfire+mysql+openldap+spark_第12张图片
15,使用openldap管理员登陆openfire,查看用户是否同步过来,这里是从openldap同步过来的
IM及时通讯软件openfire+mysql+openldap+spark_第13张图片
16,目前已知bug,
二,客户端spark安装
1,windows安装spark,直接到http://www.igniterealtime.org/projects/openfire/plugins.jsp 下载exe客户端下一步即可,登录的时候需要注意,高级里面勾选2项内容

IM及时通讯软件openfire+mysql+openldap+spark_第14张图片

IM及时通讯软件openfire+mysql+openldap+spark_第15张图片
2,linux spark 安装,以centos7为例,图像界面为gui或者ghome桌面,直接到http://www.igniterealtime.org/projects/openfire/plugins.jsp 下载RPM客户端安装包,JDK环境自带,如果没有自己安装一个JDK1.8,
安装RPM rpm -ivh spark-2.8.3.rpm

查看Linux 环境中Spark 安装位置
IM及时通讯软件openfire+mysql+openldap+spark_第16张图片

3,启动spark 这个前台启动,terminal 不能断开和关闭,最好是后台启动

./startup.sh

IM及时通讯软件openfire+mysql+openldap+spark_第17张图片
4,目前我没找到systemctl start spark这种方法,或者在图形界面添加启动器方式,如果有大神知道,可以留言
三,openfire 插件 openfire 几乎扩展的功能都是通过插件来实现的,很多人加入到插件中来,其中比较重要的几个插件
1,metting 会议插件,用于视屏会议
2,Client Control 客户端管理插件 ,用户限制客户端发送图片,文件等内容,然后客户端注册,更改组织和人员
3,Candy 是一个web客户端,但是我可以打开,没看到里面内容
4,Monitoring Service 主要是用于显示在线人数,资源使用情况等
5,语音聊天插件 https://code.google.com/archive/p/redfire/downloads 下载后安装好像没啥感觉,
6,其他好用插件也请大神们指点,我安装插件到不少,但是好用的感觉没多少

IM及时通讯软件openfire+mysql+openldap+spark_第18张图片