Teamtalk 部署
部署方案说明:
网上已经出过很多的Teamtalk 部署信息,不过都是写的大体的思路,以及注意的细
节, 这次本人进行一下汇总与细化。如有其它问题或者不明白之处可以QQ 919008779 联
系我, 望大家本着开源精神互帮互助。
前人的部署方案链接:
1. https://github.com/decker502/ttdeploy
2. http://blog.csdn.net/waji2000/article/details/41217885
3 http://blog.csdn.net/aiyuhai/article/details/41359095
等等
下面是我的总结会从部署以及部署部署完成运行成功之间的问题的解决来说明。
文章思路:
1 . Teamtalk 部署
1.1 环境的准备: Centos 6.X 64位版本
最好是全新的环境 root 用户登陆,不用考虑太多的linux 权限,不是也不要紧。最
修改安装 gcc 和gcc-c++
命令: yum install gcc ;
Yum install gcc-c++ ;
1.2 下载官方 一件部署的代码 TTAutoDeploy-master-change.zip
解压文件到一个目录下 .进入TT 目录可以看到如下:
其中 im_db_proxy : java 服务器的代码
Im_web : php 后台管理代码
IM_server: c++各种服务器(消息,路由,登录,文件等等)的代码
修改执行权限 : chmod a+x *.sh ;
一键安装 ./setup.sh install
1.3 一键安装失败的关键的几种情况:
1.3.1: jdk-7u67-linux-x64.rpm 下载不了。
解决办法:
方法一:将配置文件中的 /jdk 目录下的setup.sh 文件中的 JDK=jdk-7u67-linux-x64 ; 这行修改为JDK=jdk-7u71-linux-x64 , 官网最新的是71 版本的。
方法二: 提前在网上下载好 jdk-7u67-linux-x64.rpm文件。
直接放到jdk 目录下即可。
1.3.2: 下载不了 。
这个三个文件有时能够下载下来,有时下载不了。 不好说。我在阿里云上重新下载了
好几次才下载成功。当然是更高的版本。
方法一: 要么多执行下 percona ./setup.sh 文件。
方法二: 提前下载好这三个文件,放在percona 目录下,修改一下 percona 目录下的./setup.sh 文件。
build_percona 方法中的
注释掉 别让它执行。
一键部署 直接凭借 官网提供的TT 目录下的 ./setup.sh install 一般各个服务器以及软件的安装就会安装成功,
但是安装成功并不代表各个服务器跑起来了。
2 各个服务器跑起来问题的解决。
2.1 php 服务器 需要修改的地方:
/var/www/html/im/TT/protected/config/params.php 配置文件
这三个地方需要修改为自己的Ip
当第一步骤中的一键部署成功后 ,nginx 以及mysql 服务就会在后台启动。
启动php 服务器 /usr/local/php5/sbin/php-fpm
访问php 服务,直接在浏览器中访问ip地址即可:
就会出现
这个界面 说明php 服务器启动起来了, 可以用admin ,admin 用户登陆看看里面的内容。
里面就是后台管理的内容 很简单 ,自己可以用其他的语言改写,其中关键的一个接口:
返回的json 信息 :{"login":"192.168.1.27:8008","file":"192.168.1.27"}
Login : 自己的Ip 加上 8008 端口号
File 自己的ip
其中的ip 是自己本机的ip ,这种格式才是正确的。如果不正确可以在上面截图的界面用
账号admin 密码admin 用户登陆修改。在系统配置页面 配置
也可以在mysql的IMConfig 表中修改 cname 和value的字段。
其中cname 就是上面返回json 中login 的字段。
Value 就是上面返回json中的file 字段。
这样各个服务器运行中的php 服务器基本没有问题了。
如果还需要改php 服务器做为后台管理服务,
其中的上传图片有问题需要修改:
解决上传图片的权限问题
mkdir /var/www/html/im/TT/uploadImage
chown -R nobody.nobody /var/www/html/im
2.2 java_proxy 服务器正常运行遇到的问题
2.2.1 正常启动的命令:
进入 java_proxy ttjavaserverPack 目录下
启动命令: ./startup.sh 11000 其中11000 为启动的端口号。
出现以下命令代表成功
其中过一会不会出现 {dataSource-1} closed
{dataSource-2} closed
才代表java_proxy 服务器正常的启动,
2.2.2 如果不能正常启动常见的几种现象以及解决问题的办法
2.2.2.1 如果启动 ./startup.sh 11000 命令后 ,一直没有反应,
代表后台已经报错了,我们需要到后台看一下日志文件
进入 cd /java_proxy/ttjavaserverPack/11000 /logs 目录下
查看 mogutalk-error.log 文件
1 如果是一下信息:
则需要修改 linux 的swap
查看一下swap 的个数:free -m 报以上错一般swap 个数为0
dd if=/dev/zero of=/opt/swap bs=1024 count=1024000
mkswap /opt/swap
swapon /opt/swap
想启动时候自动挂载 需要
修改/etc/fstab文件
增加
/opt/swap swap swap defaults 0 0
2.2.2.2如果报{dataSource-1} closed {dataSource-2} closed 错误
要么是端口被占用, 要么其他的问题 ,一般看一下log 日志就能看懂的
2.3 Mysql 需要修改的地方
3.1 IMUsers 密码需要md5 加密
3.2 如果发送文件没有成功不能发送离线文件
其中在IMTransmitFile 文件需要添加一个taskId 的字段 类型为int
2.4 C++ 各个服务器: /im_server 目录
关键是修改配置文件中的ip
Login_Server : 基本不需要修改
MsgServer :
DBServerIP1 ,DBServerIP2 : 修改为自己的java_proxy 服务器的ip 地址
IpAddr1, IpAddr2 : 需改为自己的消息服务器的ip
FileSever : 修改为自己的ip 不要写 0.0.0.0
可能每个人下的版本不一样 ,注意ip 的key值为Address 。
基本 c++各个服务器启动后出现以下界面 基本上没有大的问题了。
3 客户端连接时候报错分析。
3.1 客户端返回: 登陆服务器失败,有以下几种情况
情况一: php : 服务器无法返回json 数据
情况二: linux 的防火墙没有关闭。
3.2 登陆密码失败
情况一: mysql 数据库 IMUsers 用户没有md5 加密
情况二 : java_proxy 没有启动 或者是挂掉
3.3 连接消息服务器失败 :
情况一: java_proxy 一会儿会报错,
com.alibaba.druid.pool.GetConnectionTimeoutException: loopWaitCount 0, wait millis 60000
自己处理添加业务没有关闭jdbc 连接。
注意事项: 各个服务器可以部署到不同的机子上。 但注意部署的ip 配置
4 java 项目在window 环境下的搭建遇到问题总结
1 :需要自己新建一个maven工程, 将官网的相关的文件copy 到相关的位置, 其中.xml 配置文件需要修改
通知汇报错误 ,也要把
Copy 到项目目录下
5 android 代码 需要修改的地方:
5.1 ProtocolConstant : 中的:
需要修改为自己的需要ip ,登录的端口为8008
5.2 SysConstant 中的
5.3 当加载人员或者是部门少的时候是没有问题的, 当加载人员300 多人或者是更多的的时候,人员和部门会加载不出来,
报 Bigendianheapchannelbuffer Exception 异常 。
需要修改:SocketThread :
官网是400*1024 , 我把它改为1000*1024了 , 这样可以加载更多的人员和部门。