基于linux的跨平台即时通讯系统系统实现部分文档格式.docx
《基于linux的跨平台即时通讯系统系统实现部分文档格式.docx》由会员分享,可在线阅读,更多相关《基于linux的跨平台即时通讯系统系统实现部分文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
1.3Openfire(服务器)7
1.4Spark(客户端)7
1.5Mysql(数据库)7
1.6Apache(web服务器)9
1.7Java(运行环境)10
2系统实现10
2.1操作系统安装10
2.2Java环境安装14
2.3Openfire安装14
2.4Mysql安装15
2.5Apache安装16
2.6PHP安装16
2.7全局配置17
3结束语25
4致谢26
5.参考文献26
摘要
当前即时通讯业务正在不断兴起,QQ的使用已经是相当普遍了。
但是在公司内网使用的即时通讯工具软件相对来说还比较少。
使用QQ作为通讯公司手段未尝不可,但是因为过程需要经过公网,所以带有一定的不稳定因素。
其实,在linux系统下已经有了一套相对成熟的即时通讯系统实现方案,并且具有开源免费及跨平台(Windows,Linux,MacOS)。
所以,在公司内部安装和使用即时通讯软件工具非常有利于提高公司的工作效率,因此,我们致力于够架设出一种集多种功能于一体的应用系统。
通过我们架设的应用系统,可以满足公司内部人员多方面交流的需要,使大中型企业的员工能够顺利、即时的进行即时在线交流及发送各种通知、邮件,并进行文件的共享,从而更好、更顺利、高效地工作。
由于我们这套系统是在公司内部的服务器中运行的,因此,所有资料都是保存在自己公司内部的服务器中,不但方便查找及管理,而且对公司内部资料也有很好的安全保密作用。
关键词:
Linux;
跨平台;
局域网,即时通讯
系统实现
1环境
1.1.XMPP
历史
XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。
它在促进服务器之间的准即时操作。
这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。
XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。
XMPP目前被IETF国际标准组织完成了标准化工作。
标准化的核心结果分为两部分;
核心的XML流传输协议
基于XML流传输的即时通讯扩展应用
XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。
借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮。
XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完整,完善等先进性。
XMPP的扩展协议Jingle使得其支持语音和视频。
Q等有功能完整,完善等先进性。
基本网络结构
XMPP中定义了三个角色,客户端,服务器,网关。
通信能够在这三者的任意两个之间双向发生。
服务器同时承担了客户端信息记录,连接管理和信息的路由功能。
网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信),MSN,ICQ等。
基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML。
如下图,Jabber网络由若干个服务器组成[2],每个服务器可以给众多客户端提供服务,服务器之间通过Internet相互连接。
该网络中还存在一个网关服务器,负责协议的转换,以和其他的即时消息系统进行互联。
功能
传输的是与即时通讯相关的指令。
在以前这些命令要么用2进制的形式发送(比如QQ),要么用纯文本指令加空格加参数加换行苻的方式发送(比如MSN)。
而XMPP传输的即时通讯指令的逻辑与以往相仿,只是协议的形式变成了XML格式的纯文本。
这不但使得解析容易了,也方便了开发和查错。
而XMPP的核心部分就是一个在网络上分片断发送XML的流协议。
这个流协议是XMPP的即时通讯指令的传递基础,也是一个非常重要的可以被进一步利用的网络基础协议。
所以可以说,XMPP用TCP传的是XML流。
1.2Ubuntu(服务器系统)
Ubuntu是2004年9月首次公布的。
虽然相对来说Ubuntu是发行较晚的Linux发行版,该项目没有其他linux发行版本早,但是其邮件列表很快被用户的渴望和热情的开发者讨论所填满。
在随后几年中,Ubuntu成长为最流行的桌面Linux发行版,它朝着发展一种“易用和免费”的桌面操作系统做出了极大的努力和贡献,能够与市场上任何一款个人操作系统相竞争。
是什么因素使得Ubuntu取得如此巨大的成功呢?
首先,该项目是由MarkShuttleworth,一位充满魅力的南非富翁,Debian的开发者和前世界第二太空游客所创建(他创建的的IsleofMan-basedCanonicalLtd公司目前仍然是一个商业项目)。
其次,Ubuntu从一开始就从其他类似Linux发行计划的失败中吸取教训并避免重蹈他们的错误,—它创造了一个优秀的以网络为基础的Wiki风格的文档,用专业的方法为最终用户创建了错误报告反馈机制。
第三,得益于其富裕的创始人,Ubuntu能够给所有互联网上感兴趣的用户发放免费CD,从而促进了Ubuntu发行版的迅速扩大。
在技术方面,Ubuntu是基于Debian的发行版,包含一些著名的软件包,如GNOME,Firefox和OpenOffice.org其最新版本的更新。
它有一个可预测的每6个月发布的时间表,有时发布有长期技术支持的LTS版,一般为3–5年的安全更新支持,这取决于版本(非LTS版的技术支持期为18个月)的支持。
Ubuntu的其他特殊功能还包括一个可安装的liveCD,美术创作和桌面主题,Windows用户迁移助手,支持最新新的技术,如3D桌面效果,易于安装的ATi和NVIDIA显卡驱动以及无线设备驱动的支持等,并按需支持非免费或专利授权的媒体编解码器。
主页:
来源:
马恩岛(位于英格兰岛和爱尔兰岛之间)IsleofMan
桌面:
GNOME
类型:
Beginners,Desktop,Server,LiveMedium,Netbooks
处理器架构:
i386,powerpc,sparc64,x86_64
基于何种发行:
Debian
优点:
固定的发布周期和支持期限;
易于初学者学习;
丰富的文档,包括官方和用户贡献的。
缺点:
缺乏与Debian的兼容性
软件包管理:
高级包管理工具(APT)的使用deb包
这里我采用的是UbuntuServer9.10
1.3Openfire(服务器)
Openfire(原来的Wildfire)是一个跨平台(支持WINDOWS、LINUX、MAC平台),采用Java开发,一个在开源GPL和商业双许可的实时协作(RTC)服务器基于XMPP(Jabber)协议。
Openfire安装和使用都非常简单,并利用Web进行管理,而且还有非常高的安全性和性能。
单台服务器可支持上万并发用户。
同时通过插件,可以在客户端登录MSN,Yahoo,ICQ等即时通讯平台。
这里我们使用的版本是Openfire3.5.1,linux版本
1.4Spark(客户端)
Spark是一个开放源码,跨平台专为企业和组织等客户的优化的IM客户端软件。
它的特性支持集组聊天,电话集成的功能和强大的安全性。
它还提供了整个卓越的终端用户体验的功能,如在线拼写校验,聊天室标签、交谈记录等。
由于业界上有所共识,如果企业内部部署IM使用Openfire+Spark是最佳的组合,于是我决定采用Spark作为客户端。
这里我使用的版本是Spark2.5.8,Windows版本
1.5Mysql(数据库)
简介
MySQL图标
MySQL最初的开发者的意图是用mSQL和他们自己的快速低级例程(ISAM)去连接表格。
不管怎样,在经过一些测试后,开发者得出结论:
mSQL并没有他们需要的那么快和灵活。
这导致了一个使用几乎和mSQL一样的API接口的用于他们的数据库的新的SQL接口的产生,这样,这个API被设计成允许为用于mSQL而写的第三方代码更容易移植到MySQL。
MySQL这个名字是怎么来的已经不清楚了。
基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQLAB创始人之一的MontyWidenius的女儿也叫My。
这两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。
MySQL的海豚标志的名字叫“sakila”,它是由MySQLAB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。
获胜的名字是由来自非洲斯威士兰的开源软件开发者AmbroseTwebaze提供。
根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。
MySQL的概述
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司。
在2008年1月16号被Sun公司收购。
而2009年,SUN又被Oracle收购.对于Mysql的前途,没有任何人抱乐观的态度.目前MySQL被广泛地应用在Internet上的中小型网站中。
由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
MySQL的官方网站的网址是:
MySQL的特性
1.使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性
2.支持AIX、FreeBSD、HP-UX、Linux、MacOS、NovellNetware、OpenBSD、OS/2Wrap、Solaris、Windows等多种操作系统
3.为多种编程语言提供了API。
这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
4.支持多线程,充分利用CPU资源
5.优化的SQL查询算法,有效地提高查询速度
6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名
7.提供TCP/IP、ODBC和JDBC等多种数据库连接途径
8.提供用于管理、检查、优化数据库操作的管理工具
9.可以处理拥有上千万条记录的大型数据库
MySQL的应用
与其他的大型数据库例如Oracle、DB2、SQLServer等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQLCluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。
对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。
目前Internet上流行的网站构架方式是LAMP(Linux+Apache+MySQL+PHP),即使用Linux作为操作系统,Apache作为Web服务器,MySQL作为数据库,PHP作为服务器端脚本解释器。
由于这四个软件都是自由或开放源码软件(FLOSS),因此使用这种方式不用花一分钱就可以建立起一个稳定、免费的网站系统。
1.6Apache(web服务器)
Apache是世界使用排名第一的Web服务器软件。
它可以运行在几乎所有广泛使用的计算机平台上。
Apache源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。
Apache取自“apatchyserver”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。
Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。
Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。
Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个ApacheWeb站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。
到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。
世界上很多著名的网站如A、Yahoo!
、W3Consortium、FinancialTimes等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
Apache的诞生极富有戏剧性。
当NCSAWWW服务器项目停顿后,那些使用NCSAWWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。
就这样,诞生了ApacheGroup,后来这个团体在NCSA的基础上创建了Apache。
Apacheweb服务器软件拥有以下特性:
支持最新的HTTP/1.1通信协议
拥有简单而强有力的基于文件的配置过程
支持通用网关接口
支持基于IP和基于域名的虚拟主机
支持多种方式的HTTP认证
集成Perl处理模块
集成代理服务器模块
支持实时监视服务器状态和定制服务器日志
支持服务器端包含指令(SSI)
支持安全Socket层(SSL)
提供用户会话过程的跟踪
支持FastCGI
通过第三方模块可以支持JavaServlets
1.7Java(运行环境)
是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。
用Java实现的HotJava浏览器(支持Javaapplet)显示了Java的魅力:
跨平台、动态的Web、Internet计算。
从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Javaapplet。
2系统实现
2.1操作系统安装
1、启动
将电脑的BIOS设定成用CD-ROM开机,并将UbuntuServer光盘放入光驱启动。
可以看到Ubuntu启动画面,这时,我们可以先选择接口语言。
这里选择“中文简体”,自然会看到以下的Ubuntu开机画面:
2、选择语言
选择“简体中文”
3、选择所在地区
为方便操作,选择中国。
4、选择键盘类型
安装程序首先会询问我们是否需要侦测键盘排列。
如果选择‘是’(Yes),安装程序会问我们一连串问题以判断键盘的排列属于哪种。
我们使用美式英语(U.S.English)键盘排列,所以选‘不’(No),然后再自行选择键盘排列会比较直接方便。
5、加载安装程序组件
先探测并挂载CD-ROM,并从安装光盘加载安装程序组件。
6、配置网络设备
7、设定主机名称
8、设置时钟
安装程序会根据您之前设定所在地区的选择自动从网络时间服务器读取时间。
9、硬盘分区和格式化
由于硬盘上的资料仍然有用,我们选择手动(Manual)自行分割硬盘。
Linux是多使用用户的操作系统,一台Linux可以容许多个使用者同时使用。
为方便管理每一个使用者的档案和资源,每个使用者都有自己的使用使帐户(useraccount)及密码(password)。
Ubuntu会先要求您输入Ubunut第一个管理者的资料和密码。
11、配置网络
12、选择并安装软件
此时Ubuntu服务器版提供12个软件组合,利用方向键与空格键选好软件组合后,按‘继续’(Continue)开始安装软件。
13、安装启动引导器(GRUB),然后结束并安装进程,重启电脑即可。
2.2Java环境安装
[root@test~]#cpjre-6u6-linux-i586.bin/usr/local
[root@test~]#cd/usr/local
[root@testlocal]#ls–l|grepjre
-rwxr--r--1rootroot197507406月2811:
14jre-6u6-linux-i586.bin
[root@testlocal]#./jre-6u6-linux-i586.bin
此时将显示二进制许可协议。
通读许可协议。
按空格键显示下一页。
读完许可协议后,输入yes继续安装。
JRE安装在其自身的目录中。
在本例中,它将安装在/usr/local/jre1.6.0_6目录中。
当安装完成时,您将看到Done(完成)字样。
[root@testlocal]#ln–ls
/usr/local/jre1.6.0_6/plugins/i386/ns7/libjavaplugin_oji.so/usr/lib/firefox-1.0.4/plugins/
2.3Openfire安装
解压openfire_3_5_1.tar.gz
$sudotar-zxvfopenfire_3_5_1.tar.gz
移动openfire目录至/opt/下
$sudomvopenfire/opt/
$cd/opt/opnfire/bin/
运行bin目录的openfire
$sudo./openfirestart
2.4Mysql安装
使用mysql来作为Openfire服务器使用的数据库,但这并不是必须的,因为Openfire本身内置有数据库,你可以选择使用Openfire内置的数据库,也可以使用外置数据数据库。
[root@testlocal]#tarxzvf/root/mysql-5.0.51a-linux-i686.tar.gz
[root@testlocal]#ln–smysql-5.0.51a-linux-i686mysql
[root@testlocal]#cdmysql
[root@testmysql]#mv/etc/f/etc/f.bak
[root@testmysql]#cpsupport-files/my-f/etc/f
[root@testmysql]#chown–Rmysql.
[root@testmysql]#chgrp–Rmysql.
[root@testmysql]#./scripts/mysql_install_db--user=mysql&
[root@testmysql]#chown–Rroot.
[root@testmysql]#chown–Rmysqldata
[root@testmysql]#./bin/mysqld_safe--user=mysql&
[root@testmysql]#netstat–tlunp|grep3306
[root@testmysql]#cpsupport-files/mysql.server/etc/rc.d/init.d/mysqld
[root@testmysql]#chmod755/etc/init.d/mysqld
[root@testmysql]#chkconfig—addmysqld
[root@testmysql]#chkconfig—level35mysqldon
[root@testmysql]#mkdir/usr/local/mysql/lib/mysql
[root@testmysql]#mkdir/usr/local/mysql/include/mysql
[root@testmysql]#chownroot.mysql/usr/local/mysql/lib/mysql
[root@testmysql]#chwonroot.mysql/usr/local/mysql/include/mysql
[root@testmysql]#ln–s/usr/local/mysql/lib/*/usr/local/mysql/lib/mysql
[root@testmysql]##ln–s/usr/local/mysql/include/*/usr/local/mysql/include/mysql
[root@testmysql]#echo“/usr/local/mysql/lib/mysql”>
>
/etc/ld.so.conf
[root@testmysql]#ldconfig
2.5Apache安装
[root@testmysql]#cd..
[root@testlocal]#tarxzvf/root/httpd-2.2.6.tar.gz
[root@testmysql]#cdhttpd-2.2.6
[root@testhttpd-2.2.6]#./configure–prefix=/usr/local/apache--enable-so--enable-rewrite
[root@testhttpd-2.2.6]#make
[root@testhttpd-2.2.6]#makeinstall
[root@testhttpd-2.2.6]#echo“/usr/local/apa