iOS基于XMPP实现即时通讯之一、环境的搭建

移动端访问不佳,请访问我的个人博客

使用XMPP已经有一段时间了,但是一直都没深入研究过,只是使用SDK做一些简单的操作,看了许多大神的博客,自己总结一下,准备写一系列关于XMPP的使用博客,以便于自己更加深入学习~

IM协议及服务器选型

http://liudanking.me/arch/xmpp%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%80%89%E5%9E%8B/

协议选型:XMPP已经成为标准的IM协议。XMPP官网:http://XMPP.org/

服务器型:使用广泛的是ejabberd,jabberd 2.x, Openfire,Tigase。从编程语言角度来看主要是JAVA和Erlang。JAVA语言的优势是类库完备,容易招人。Erlang的优势是hot code swap,live console, 高并发。而且ejabberd是对XMPP协议支持最好、实现最为全面的server。因此企业在不考虑独立开发服务器的情况下,初期选型基本建议采用ejabberd。

本文我们主要实践iOS端流程,不考虑太多服务器实现,因为Openfire易安装,插件功能丰富,我们使用Openfire

MAC上搭建MySQL

因为服务器需要数据库支撑,所以我们在搭建Openfire前要先搭建数据库。

下载MySQL安装包

我们先去MySQL官网去下载MySQL的安装包,如下图所示:

iOS基于XMPP实现即时通讯之一、环境的搭建

iOS基于XMPP实现即时通讯之一、环境的搭建

安装MySQL

下载完后,开始安装MySQL如下图:

iOS基于XMPP实现即时通讯之一、环境的搭建

注意事项:因为安装完MySQL后它会自动给你生成一个密码,所以你要保存好这个密码,后面修改密码的时候会用到,如下图所示:

iOS基于XMPP实现即时通讯之一、环境的搭建

配置MySQL

启动MySQL

首先在设置里面找到MySQL的启动按钮,启动MySQL服务,如下图:

iOS基于XMPP实现即时通讯之一、环境的搭建

iOS基于XMPP实现即时通讯之一、环境的搭建

定义MySQL别名

然后需要将MySQL的指令重新定义一下,因为MySQL的指令集在/usr/local/mysql/bin/mysql路径下,需要执行一下命令行:

# 定义mysql别名
alias mysql=/usr/local/mysql/bin/mysql
# mysqladmin
alias mysqladmin=/usr/local/mysql/bin/mysqladmin

修改MySQL账户密码

之前安装完成后系统给我们了一个默认的密码,因为那个密码很繁琐不容易记住,所以我们需要重新设置一个密码,我们先输入如下指令设置新密码,”newpassword”为你要设置的新密码:

mysqladmin -u root -p password "newpassword"
#然后 Enter password: 【输入原来的密码】

如下图所示表示密码修改成功:

iOS基于XMPP实现即时通讯之一、环境的搭建

完成后以后root账户需要密码就用你新设置的密码就行了~

连接数据库,创建Openfire数据库

# 连接数据库
mysql -u root -p
# 创建Openfire数据库
create database openfire;

完全卸载MySQL

在系统内存不够时有时候我们会需要删除掉MySQL,一下就是删除MySQL的方法:

Yosemite 系统开始,/etc/hostconfig 这个文件已经移除,所以 Yosemite 后的系统可以忽略下面的命令

sudo nano /etc/hostconfig

然后以下是终端执行代码:

sudo rm -rf /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
sudo nano /etc/hostconfig     (复制前面部分回车,然后删掉这一行: MYSQLCOM=-YES-,control+O回车保存,control+X退出编辑界面)
sudo rm -rf ~/Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm -rf /var/db/receipts/com.mysql.*  

MAC上搭建Openfire

下载并安装openfire

openfire官网上去下载相应的包:

iOS基于XMPP实现即时通讯之一、环境的搭建

双击进行傻瓜式的安装就好了,安装完毕后会在系统偏好设置里面找到openfire的启动器

iOS基于XMPP实现即时通讯之一、环境的搭建

点击Openfire会进入启动页面

iOS基于XMPP实现即时通讯之一、环境的搭建

点击Open Admin Console进入浏览器设置页面,语言选择简体中文

iOS基于XMPP实现即时通讯之一、环境的搭建

接着设置服务器的名字

iOS基于XMPP实现即时通讯之一、环境的搭建

链接数据库

注意里面的用户名和密码是你数据库的用户名和密码,用户名一般是root,密码是你之前重新设置的密码~~~

iOS基于XMPP实现即时通讯之一、环境的搭建

然后一直继续就OK了,最后需要我们登录到openfire

密码就是之前设置的密码

iOS基于XMPP实现即时通讯之一、环境的搭建

openfire启动失败解决办法

当你发现你的电脑上的openfire无论你是重新安装还是重启都无法启动的情况下你可以按照我下面写的那些终端指令来启动你的openfire不用再去重新做你的系统了.

iOS基于XMPP实现即时通讯之一、环境的搭建

一般你发现你的openfire打开出现这样的窗口后你就可以想到你的openfire出问题了,极个别的时候你可以通过重新安装来解决.

如果大家的问题重新安装后没有解决那就试下我下面的方法.

先打开自己电脑上的终端然后输入以下指令:

// 获取权限
sudo chmod -R 777 /usr/local/openfire/bin
cd /usr/local/openfire/bin
export JAVA_HOME=`/usr/libexec/java_home` # 记住这里不是单引号而是英文下数字1左边的按键.
echo $JAVA_HOME
# 终端上打印的内容 /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home
cd /usr/local/openfire/bin
./openfire.sh
# 终端上打印的内容
# Openfire 4.0.3 [Sep 16, 2016 4:19:21 PM]
# Admin console listening at http://wangchongleidemacbook-air.local:9090

一般你输入完成这些指令后你再打开你的openfire就会发现这样的情况.

iOS基于XMPP实现即时通讯之一、环境的搭建

安装openfire后admin无法登录管理控制平台

iOS基于XMPP实现即时通讯之一、环境的搭建

解决方案如下:

  • 使用Mysql查看工具进入数据库,进入表“ofuser”,将该表清空,然后执行SQL 语句
INSERT INTO ofUser (username, plainPassword, name, email, creationDate, modificationDate) VALUES ('admin', 'admin', 'Administrator', 'admin@example.com', '0', '0');
  • 关闭openfire服务,就是从其控制台stop然后再start,再用用户名:admin,密码:admin登录即可.

彻底删除openfire服务器的

首先,确保你已经关掉了openfire

打开终端 (在应用程序–>实用工具–>)

输入以下命令

sudo rm -rf /Library/PreferencePanes/Openfire.prefPane
sudo rm -rf /usr/local/openfire
sudo rm -rf /Library/LaunchDaemons/org.jivesoftware.openfire.plist

第一条会让你输入管理员密码,尽管你输入的时候,终端不会显示,不必担心,正确输入后按回车,它就执行了。

三条命令以后,openfire就彻底消失了.但是需要重启一下系统偏设置。

总结

配置过程还是比较繁琐的,一共需要好几个步骤,需要装的有MySQLJAVA环境openfire,里面有一步没做好都没法使用,自己完整配置下来也花了很长时间,大家如果有什么问题可以留言问我,谢谢大家的阅读~~

参考文档:

http://www.cnblogs.com/xiaodao/archive/2013/04/04/2999426.html

http://www.cnblogs.com/xiaodao/archive/2013/04/05/3000554.html

http://www.jianshu.com/p/5d88fe201c71

上一篇:js中Math.round、parseInt、Math.floor和Math.ceil小数取整小结【转】


下一篇:Pycharm常用的快捷键