<p>公司要做一个IM系统,现阶段人力资源很有限。产品、研发、测试目前就我一个人。跟领导沟通后决定先采用开源原件tigase先解决有无问题,后续人员到位后进行重构。本文主要介绍生产环境下tigase的安装问题(此次安装是在测试机器中进行,但是周边环境近似生产环境)。</p><p>网上已有很多Tigase的安装文档,Tigase官方文档(英文)也很详细。但是我还是要再写一下安装过程,主要原因是网上的安装文档基本都是在特别简单的环境中进行安装的过程,细节不够丰富;Tigase官方文档内容和方式很多,也很详细,但是对于新手阅读准备时间较长,此外英文读起来相对困难,一不小心会遗漏细节(原版文档随着版本的更新,有些错误的地方)。</p><p>tigase官方文档有很多安装方式,但是在真实的生产环境下,GUI等方式并不适用。linux服务器需要通过ssh方式连接,中间有堡垒机,研发人员拿不到linux用户的密码(Web安装方式在某些步骤需要输入root密码,该方式也不一定适用)。DBA要掌握数据库管理权限,一般也不会给数据库用户提供超级管理员权限,端口也可能不是默认端口(tigase如果用mysql数据库,个别存储过程需要此权限。DBA提供的用户密码往往很复杂,含有特殊字符,也需要进行特殊处理)。因此在初步研究后,开始了tigase的安装。安装大概花了1天半时间,期间各种趟坑。</p><p><strong>安装环境</strong></p><table><tbody><tr class="firstRow"><td width="162" valign="top" style="word-break: break-all;">环境</td><td width="254" valign="top" style="word-break: break-all;">版本</td></tr><tr><td width="162" valign="top" style="word-break: break-all;">操作系统</td><td width="254" valign="top" style="word-break: break-all;">CentOS release 6.5 (Final)</td></tr><tr><td width="162" valign="top" style="word-break: break-all;">数据库</td><td width="254" valign="top" style="word-break: break-all;">MySQL 5.6.23</td></tr><tr><td width="162" valign="top" style="word-break: break-all;">tigase server</td><td width="254" valign="top" style="word-break: break-all;">7.1.0</td></tr><tr><td width="162" valign="top" style="word-break: break-all;">JDK</td><td width="254" valign="top" style="word-break: break-all;">1.8</td></tr></tbody></table><p>一、硬件服务器操作系统<br></p><p>运维团队负责上架,操作系统CentOS release 6.5 (Final)。 感谢 盖益</p><p>两台机器 bw-test-ab-v01,bw-test-ab-v02(暂时不可访问,运维团队跟进)</p><p>原计划在两台上部署tigase集群,结果有一台不可使用,方案果断改成先单机部署(以后再上集群部署方法)。</p><p>二、数据库</p><p>DBA团队负责安装数据库 MySQL 5.6.23,安装在bw-test-ab-v01服务器。感谢 盛亮、毕常奇</p><p> 数据库安装在bw-test-ab-v01</p><p> 具体参数如下 用户:tigasedb_test 密码:r#xxxxxxx09H^jTQ%p 端口:3324 地址:10.xxx.90.194 (用x隐去敏感信息)</p><p>三、JDK安装</p><p>1、在usr目录下创建java安装目录<br></p><p>cd /usr</p><p>mkdir java</p><p>2、拷贝文件jdk-8u112-linux-x64.tar.gz 到/usr/java 目录(java目录需要提前创建)</p><p>3、解压jdk到当前目录</p><p>tar -zxvf jdk-8u112-linux-x64.tar.gz得到文件夹jdk1.8.0_112</p><p>4、建立快捷连接(节省目录长度)</p><p>ln -s /usr/java/jdk1.8.0_60/ /usr/jdk</p><p>5、编辑配置文件,配置环境变量</p><p>vim /etc/profile</p><p>文件末尾添加如下内容:</p><p>JAVA_HOME=/usr/jdk</p><p>CLASSPATH=$JAVA_HOME/lib/</p><p>PATH=$PATH:$JAVA_HOME/bin</p><p>export PATH JAVA_HOME CLASSPATH</p><p>6、执行命令配置生效</p><p>source /etc/profile</p><p>四、Tigase服务器安装</p><p>1、准备tigase服务器文件</p><p>将tigase-server-7.1.0-b4379-dist-max.tar.gz 文件拷贝到bw-test-ab-v01 机器的 /usr目录。解压缩 tar -xzvf tigase-server-7.1.0-b4379-dist-max.tar.gz ,将得到的目录重命名为tigase。 tigase服务器的安装目录为 /usr/tigase。</p><p>2、修改tigase.conf (/usr/tigase/etc目录中) 中 JAVA_HOME=/usr/jdk (JDK安装路径)。</p><p>3、初始化数据库</p><p>(1)在/usr/tigase目录执行命令 mysql -h 10.xxx.90.194 -P 3324 -utigasedb_test -p'r#xxxxxxx09H^jTQ%p'; (密码用由于有特殊字符,需要用''括起来,另外发现mysql -h localhost -P 3324 -utigasedb_test -p'r#xxxxxxx09H^jTQ%p'; 连不上数据库,可能跟数据库安装方式相关)</p><p>(2)官方文档Prepare the MySQL Database for the Tigase Server章节有一堆数据库账号授权过程,我这边DBA估计已经做了相关工作了,此步骤略过。</p><p>(3)初始化数据库表结构</p><p>mysql> use tigasedb;(切换当前数据库)</p><p>分别执行如下5条语句</p><p>mysql> source database/mysql-schema-7-1-schema.sql; (这一条文件名官方文档写出错了 ) </p><p>mysql> source database/mysql-pubsub-schema-3.2.0.sql;</p><p>mysql> source database/mysql-socks5-schema.sql;</p><p>mysql> source database/mysql-schema-7-1-sp.sql (官方文档遗漏此条,如果不执行,tigase server无法正常启动)</p><p>mysql> source database/mysql-schema-7-1-props.sql (不确定是否必须执行)</p><p><span style="color: rgb(255, 0, 0);">注意:</span>在执行mysql-schema-7-1-sp.sql语句时,由于DBA提供的账号没有SUPER权限(一般DBA都不会给),出现如下错误</p><p>ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)</p><p>经排查,是mysql-schema-4-sp.sql文件中的TigGetDBProperty函数没有创建成功,果断联系DBA给开了权限,将此函数的creat语句单独执行了一遍,成功。</p><p>(4)配置数据库UTF-8支持。DBA给的库已经是该编码了,忽略。</p><p>4、修改init.properties文件。配置如下</p><p>config-type=--gen-config-def</p><p>--admins=admin@bw-test-ab-v01.dns.guazi.com</p><p>--virt-hosts=bw-test-ab-v01.dns.guazi.com</p><p>--debug=server</p><p>--comp-name-1=http</p><p>--comp-class-1=tigase.http.HttpMessageReceiver</p><p>--user-db=mysql</p><p>--user-db-uri=jdbc:mysql://10.xxx.90.194:3324/tigasedb?user=tigasedb_test&password=r#xxxxxxx09H^jTQ%25p&useUnicode=true&characterEncoding=UTF-8</p><p>http/setup/admin-credentials=admin:tigase</p><p>注意几个点:</p><p>(1)virt-hosts配什么</p><p>tigase有一个安装方式 Installation Using Web Installer,才用此方式,中间某一步,tigase会自动读出虚拟主机名字。这个方式我不详细讲了。</p><p>virt-hosts值跟具体的网络环境有关,更多细节未来再描述。我用的方法,通过两个linux命令</p><p>cat /etc/resolv.conf 得到dns.guazi.com</p><p>hostname 得到bw-test-ab-v01</p><p>拼接起来搞定。(之前我在windows上配置tigase7.0.4的时候,是修改了一下hosts文件,设置127.0.0.1为test@org,最后hosts貌似配的机器名)</p><p>(2)user-db-uri的配置</p><p>由于数据库密码中含有'<span style="color: rgb(255, 0, 0);">%</span>'<span style="color: rgb(227, 0, 0);">需要转码</span>, '%'需要改为 '%25' 配置为r#I7Gk9sn09H^jTQ<span style="color: rgb(227, 0, 0);">%25</span>p 。否则tigase连不上数据库</p><p>(3)admins配置</p><p>此时,tigase数据库中还没有用户,这里配置admin@bw-test-ab-v01.dns.guazi.com为管理员,等到服务器装好后,注册admin@bw-test-ab-v01.dns.guazi.com用户,该用户默认就会具有管理员权限。当然可以配置多个管理员。</p><p>(4)http/setup/admin-credentials=admin:tigase 是通过Web方式安装的初始账户和密码,我没有将它删掉。</p><p>5、启动tigase服务器</p><p>按照以上步骤,完成了Tigase服务器配置,在/usr/tigase目录下运行 ./scripts/tigase.sh start 即可启动服务器。观察日志logs/tigase-console.log 和 logs/tigase.log.0 没有报错。服务器安装完毕。访问 http://10.xxx.90.194:8080/ 正常。</p><p>四、注册用户</p><p>访问地址http://10.xxx.90.194:8080/ui,能看到注册按钮,理论上就可以注册用户使用了。但是我装的tigase-server-7.1.0-b4379这个版本此功能竟然无法使用(注册用户没反应,数据库中也没有成功),目前我还不确定是我安装问题,还是这个版本的什么bug。</p><p>怎么解决呢?通过数据库直接注册用户。</p><p>在Navicat(我连接数据库的客户端),运行命令 call TigAddUserPlainPw('test1@bw-test-ab-v01.dns.guazi.com', 'test1'); 成功注册用户test1@bw-test-ab-v01.dns.guazi.com,密码test1。 在注册一个admin@bw-test-ab-v01.dns.guazi.com用户(管理员)。</p><p>检查数据库表tig_users,用户注册成功。</p><p>五、使用</p><p>我是用的Psi软件,两个用户能够正常使用。同时通过Psi软件能够注册新用户。更多使用细节,以后再聊。</p>
<p style="clear:both;"></p>
<p class="translate">
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31556438/viewspace-2284421/,如需转载,请注明出处,否则将追究法律责任。
</p>
原文地址:http://blog.itpub.net/31556438/viewspace-2284421/