美文网首页iOS开发实践iOS进阶IM
XMPPFramework开发(一):Openfire服务器搭建

XMPPFramework开发(一):Openfire服务器搭建

作者: 神经骚栋 | 来源:发表于2016-12-15 09:17 被阅读3813次

    XMPPFramework开发前言


    这两天没有更新博客,这里先对大家说声对不起了.因为这几天一直忙于研究XMPPFramework这个开源框架.XMPPFramework是一个OS X/iOS平台的开源项目,使用Objective-C实现了XMPP协议,同时还提供了用于读写XML的工具.可以帮助我们快速的开发即时通讯功能.XMPPFramework其实以前培训的时候也是有做过的,不过那只是一顿无脑敲,对其原理以及逻辑并没有深入的了解.而且后期开发使用环信、融云三方开发比较多,XMPPFramework用的其实并不是很多.所以作为小白的我将在XMPPFramework这个专题中对XMPPFramework在实际使用过程中的详细逻辑以及遇到的坑进行分享讲解.希望大家关注.

    XMPP以及Openfire服务器简介


    关于XMPP,它是一种基于标准通用标记语言的子集XML的协议,XMPP中定义了三个角色,客户端,服务器,网关。通信能够在这三者的任意两个之间双向发生。服务器同时承担了客户端信息记录,连接管理和信息的路由功能。

    如下面经典的XMPP示意图所示.其中Client为客户端,Server为服务器,我们可以允许多个服务器,不管是Client与Server之间,还是Server与Server之间的数据传输都是XML格式的数据流.


    在实际开发过程中,Server的搭建并不是需要移动端开进行的.但是我们需要做前期的测试,所以搭建一个服务器还是很有必要的,这里选择Openfire服务器,Openfire是开源的、基于可拓展通讯和表示协议(XMPP)、采用Java编程语言开发的实时协作服务器。 Openfire安装和使用都非常简单,并利用Web进行管理。单台服务器可支持上万并发用户。那么接下来,我们就看一下如何搭建一个本地的Openfire服务器.

    Openfire服务器搭建流程


    由于Openfire服务器是基于java环境的,由于Openfire的版本一定要和JDK的版本对应一致,所以我们需要去Oracle官网去最新版本的JDK.然后安装最新的JDK就好.如下图所示.

    上面我们就搭建好我们的java环境了,不过一定要记住,JDK版本要和Openfire的版本一致.接下来,我们需要去Openfire下载页下载最新的Openfire版本了.

    下载完成之后,我们安装即可.安装完成我们会在系统偏好设置找到我们安装的JDK以及openfire服务器,如下所示.

    接下来,我就需要配置我们的Openfire服务器了,我们先进入Openfire页面启动Openfire服务器.一开始,服务器的状态是处于stop停止状态的,所以我们需要手动启动一下,让状态处于Running状态.

    这里,Openfire服务器也可能启动失败,其实失败的原因不外乎两个,一个是没有访问Openfire的权限,另外一个就是java的环境变量没有配置好,我们需要重新配置一下.所以,我们使用终端启动我们的Openfire服务器,步骤如下所示.

    • 首先,给openfire中的bin文件夹一个权限,允许所有人读写.
    sudo chmod -R 777 /usr/local/openfire/bin
    
    • 配置java环境变量,这里需要注意的是最后一句命令jdk的版本要输自己的jdk的版本.我这里是1.8.0_111版本的,所以命令如下所示.
    sudo su
    
    cd /usr/local/openfire/bin
    
    export JAVA_HOME=`/usr/libexec/java_home`
    
    echo $JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
    
    • 配置好java环境变量之后,我们就启动Openfire服务器即可,具体命令如下所示.
    cd /usr/local/openfire/bin
    
    ./openfire.sh
    
    • 在终端如下图所示,代表着服务器启动成功.


    启动完成之后,我们还是需要进入系统偏好设置进入Openfire页面,然后点击页面中Open Admin Console选项,打开Openfire的web配置页面.

    (由于我已经安装完成了,所以接下来一些配置图并不是自己截的图,如有侵权,请联系我,立马删除)

    • 首先,我们需要先选择语言.这里我们直接选择简体中文就好.


    • 接下来,我们需要配置我们的服务器相关的.我们因为是在本机上设置的,所以直接写127.0.0.1就好.其他的不用做任何修改.

    • 我们光有服务器是不行的,需要一个数据库来存储用户的信息以及数据.接下来是我们对数据库进行设置,我们选择标准数据库连接选项.

    • 选择继续之后,我们要设置我们的数据库.这是我们使用MySQL数据库即可.用户名可以填root,密码不用填写,然后其他的不用改变.

    数据库URL的修改有几点需要注意.一个是,[host-name]修改为127.0.0.1或者localhost,[database-name]改为数据库名称openfire.当然了,数据库现在我们还没创建,接下来我们就需要创建一个名为openfire的数据库,二就是请全部小写,因为url地址需要小写,所以我们创建数据库的时候,数据库的名称也要小写.

    • 关于数据库的创建,我们使用的是XAMPP,这里我们只要往XAMPP官网下载最新的版本即可.
    • 下载安装完成之后,我们可以在我们的用用程序列表中找到XAMPP,然后打开.


    • 打开应用之后,然后我们需要在应用的Manage Servers页面中开启XAMPP服务器的所有服务.如下图所示.这里会有一个坑,那就是如果你电脑上下载了MySQL数据库,记得先把它停止运行,不然,XAMPP中的MySQL数据库是运行不了的.

    • 启动完所有的服务之后,我们就需要去创建MySQL数据库了.首先点击Welcome用用的首页,然后我们点击Go To Application按钮,进入web管理页面.

    • 然后点击页面中phpMyAdmin选项进入管理页面.

    • 然后,我们在管理页面中选择新建一个数据库.


    • 出现创建页面,我们填入我们的数据库名称,这样我们就可以创建成功了.


    • 创建成功数据库之后,我们就需要从Finder里面导出我们的MySQL数据库,首相我们我们打开Finder,然后使用快捷键Shift+Cmd+G输入文件路径usr/local.当然了,如果找到不到文件夹路径,那么只有一种可能,那就是Mac上的隐藏文件已经被隐藏了,这时候,我们需要开启终端,然后输入显示所有文件指令:defaults write com.apple.finder AppleShowAllFiles -bool true,然后从强制退出中重启Finder,这样就可以显示所有的隐藏文件了.

    • 然后,我们需要找到openfire文件夹,然后,右键文件夹显示简介,然后开启所有权限.具体步骤如图所示.


    • 修改完权限之后,我们如下图所示,把openfire_mysql.sql数据库拷贝到桌面上.


    • 然后我们往我们在XAMPP中新建的数据库导入我们这个从openfire文件拿出来的数据库.如下图所示.


    • 点击浏览,我们导入我们的数据库,其他的不用做任何修改.然后点击"执行"即可.


    • 上面我们的数据库已经创建完成了,如下图所示(一大堆表😄).


    • 表格创建完成之后,接着回到Openfire的web配置页面中,URL按照上面步骤填写.点击继续.如果报错的话,那么就可能是大小写的问题了,修改一下即可.接下来,我们设置我们的管理者账号和密码,这是我们登录Openfire服务器的账号密码.


    • 点击继续,我们就完成Openfire服务器的整体搭建了.


    Openfire服务器的数据管理


    上面我们已经完成了Openfire服务器的搭建,接下来,我们需要登录Openfire服务器.还是系统偏好设置中我们打开Openfire控制面板.然后打开Open Admin Console然后打开web控制页面.

    在下面的页面中输入设置的管理者账号和密码.


    然后我们进入管理界面,我们就可以对我们的服务器进行管理了.


    Openfire服务器的删除


    如果当我们不想使用了Openfire服务器的时候,我们要怎么删除它呢?我们只需要以下几步即可完成删除的操作.

    • 一. 打开Mac终端
    • 二. 输入 sudo rm -rf /Library/PreferencePanes/Openfire.prefPane命令之后,然后输入管理员密码.
    • 三. 输入sudo rm -rf /usr/local/openfire
    • 四. 输入sudo rm -rf /Library/LaunchDaemons/org.jivesoftware.openfire.plist

    做完上述的四步,我们就可以把Openfire服务器从我们的Mac中移除了~

    结束


    Openfire服务器在实际开发过程中其实并不是需要移动端开发人员进行搭建的,但是我们需要搭建一个服务器来测试XMPPFramework,所以搭建一个本地的服务器是很有必要的.搭建Openfire服务器如果遇到任何问题欢迎联系骚栋,让骚栋祝你一臂之力~~后期的博客,我将对XMPPFramework在具体使用过程中的步骤以及坑点进行详细的讲解说明,希望大家继续关注骚栋,谢谢大家.

    相关文章

      网友评论

      • 心语风尚:使用XMPPFramework开发即时通讯 这样是不是意味着用第三方的即时通讯 不是自己做的了 面试官说我们自己做即时通讯是什么意思
      • ethan_cun:我在最后一步的时候设置账号和密码,总是报服务器错误 500 , 但是服务器是打开的; 然后我直接跳过, 来到登录界面, 然而没有登录账号和密码... 怎么设置呢:disappointed_relieved:
        ethan_cun:解决了,在之前将openfire_mysql.sql添加到XAMPP数据库管理台后, 会有一张OfUser表,里面可以查看增加等。
      • 8f64fc6e6524:大牛你好。我在配置openfire服务器的时候在“数据库设置-标准设置”数据库驱动选项选择的是“mysql”,jbdc:没做更改,与默认一直,数据库url:jdbc:mysql://127.0.0.1:3306/openfire?rewriteBatchedStatements=true,,用户名填的:root,密码没写,其他设置都是默认设置,一直提示“A connection to the database could not be made. View the error message by opening the "/logs/error.log" log file, then go back to fix the problem”,请问大牛有遇见过吗
        神经骚栋:@kotercy 现在open fire 服务器这块改动有点大,所以没遇到过
      • 377f66eb43c9:您好,我在安装XAMPP后,进入phpAdmin时会报错403,
        Access to the requested directory is only available from the local network.
        This setting can be configured in the file "httpd-xampp.conf".
        我把网上的方法基本全试了,都不好用,请问以下楼主遇到过这个问题嘛?
        377f66eb43c9:@HoyaWhite 我已经下载老版本了,vm版本真是伤
        HoyaWhite:你不要下载XAMPP的VM版本 试试其他版本 因为VM版本和其他版本不一样
      • 叶舞清风:配置服务器时出现这个问题
        View the error message by opening the "/logs/error.log" log file, then go back to fix the problem.
        神经骚栋:@叶舞清风 你就按照这篇文章走就行,
        叶舞清风:@神经骚栋 博客在哪啊》???有链接吗:wink:
        神经骚栋:@叶舞清风 请看博客,近来open fire 服务器好像更新了,好多问题,有些问题你可以去评论区翻一翻,你这个按照博客走下去没问题,没配置好数据库
      • 叶舞清风:想问一下 这句命令行的作用:sudo su
        神经骚栋:@叶舞清风 设置java环境变量,然后启动openfire服务器,当然其之前的那句带有777的命令就是修改openfire所在文件夹的使用权限
        叶舞清风:@神经骚栋 嗯,然后输入下面几行的命令嘛?
        神经骚栋:@叶舞清风 获取权限
      • 不会游泳的飞鱼:安装 open fire 一直报 A connection to the database could not be made. View the error message by opening the "/logs/error.log" log file, then go back to fix the problem.这个错误,请问你遇到了吗?知道怎么解决吗
        OBJECT_C:xmppstream.m 这个类里面result = [self connectToHost:hostName onPort:hostPort withTimeout:XMPPStreamTimeoutNone error:&connectErr]; 这个方法RESULT都 返回的是真
        OBJECT_C:xmppStreamDidConnect 这个委托方法不进来有遇到过吗 result = [self connectToHost:hostName onPort:hostPort withTimeout:XMPPStreamTimeoutNone error:&connectErr]; 这个方法RESULT都 返回的是真
        神经骚栋:@不会游泳的飞鱼 请看博客
      • 菠萝维C命:大哥😞,我在设置openfire的时候出现了设置当前密码的选项,怎么输入都不对我就给跳过直接登陆了,一看不行,我又删除想重新设置,可是每次进去openfire网页的时候都是在登陆页面,这问题咋治啊
        菠萝维C命:@神经骚栋 奥奥 ,
        神经骚栋:@嫱0嫱 这个问题很多人都遇到过了,目前没有很好的解决方案,有的人直接使用嵌入式的数据库。
      • 真爱要有你才完美:谢谢 已经关注
      • 空壳子XJ:666,正是我所需要的东西,时刻关注你
        神经骚栋:@空壳子XJ 可以的 感谢!
      • a2f037f7bfbb:我下载的openfire,设置《管理员账户》那一项,多了一个"当前密码"的设置,不知道输入什么,无法下一步了
        神经骚栋:@Szbdzs 删了重新搞,删除方法,文中说了
        Szbdzs:@神经骚栋 我也遇到了同样的问题。能提示一下吗
        神经骚栋:@itsLUO 请联系QQ
        676758285
      • 罚难:6666厉害
        神经骚栋:@罚难 :heart_eyes::heart_eyes::heart_eyes:
      • e40c669177be:第一篇看完了,留个爪印,栋哥辛苦了
      • 朱Younger:客服端登录不上!是怎么回事儿
        神经骚栋:@云梦众生 自己仔细看第二篇
        神经骚栋:@云梦众生 请配置你的服务器文件
      • swjtu_wj:栋哥,强,无敌! :+1: :+1:
        MR_Baker:@神经骚栋 什么聚会
        swjtu_wj:@神经骚栋 haode,我会带好本子和笔的 :blush:
        神经骚栋:@swjtu_wj 我们年底聚会,我觉得我可以说说这个。。
      • e40c669177be:写这么详细,收藏了

      本文标题:XMPPFramework开发(一):Openfire服务器搭建

      本文链接:https://www.haomeiwen.com/subject/hvtpmttx.html