Tigase服务聊天环境搭建
1.安装tigase
1.1 下载安装包
到tigase的官网下载tigase的jar包。tigase-server-7.1.0-b4379.jar。下载地址是https://projects.tigase.org/projects/tigase-server/files
1.2 安装tigase服务器
启动安装tigase服务器。
双击下载之后的tigase jar包,前提是配置了Java的环境变量。
在Path中配置:C:\Program Files\Java\jre1.8.0_92\bin
选择jdk目录
保留默认的安装和配置两个勾选
选择安装目录
选择配置(数据库支持)
等待解压安装
下一步
配置聊天服务域名和管理员账号以及数据库
修改前:
修改后:
填写mysql的root账号及密码,为tigase数据库新建一个账号
相关信息
提示数据库schema有问题,处理mysql数据库问题
参考:
C:\Users\kl>mysql -hlocalhost -u root -p
mysql >GRANT ALL ON tigasedb.* TO tigase@'%' IDENTIFIED BY 'tigase12';
GRANT ALL ON tigasedb.* TO tigase@'localhost' IDENTIFIED BY 'tigase12';
GRANT SELECT, INSERT, UPDATE ON mysql.proc TO 'tigase'@'localhost';
GRANT SELECT, INSERT, UPDATE ON mysql.proc TO 'tigase'@'%';
GRANT SELECT, INSERT, UPDATE ON mysql.proc TO 'tigase';
FLUSH PRIVILEGES;
Load database schema to initialize the Tigase server database space. First, switch to the database you have just created:
use tigasedb;
执行初始化tigasedb的脚本mysql> source C:/Program Files/Tigase/database/mysql-schema-7-1-schema.sql;
cannot load schema invalid default value for ‘last login’
mysql-schema-4-schema.sql中timestamp 默认值赋值为0,导致执行失败,改为CURRENT_TIMESTAMP
last_login timestamp DEFAULT 0, last_logout timestamp DEFAULT 0,
last_login timestamp DEFAULT CURRENT, last_logout timestamp DEFAULT CURRENT,
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
解决办法下my.cnf中添加以下几行
[mysqld]
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
在sql_mode 中去掉only_full_group_by
然后重启MySQL Server即可。
查询在sql_mode中是否有only_full_group_by 参数,show variables like '%sql_mode%'
发现的确在sql_mode中有only_full_group_by这个参数,然后重新设置sql_mode的值
set sql_mode=(select replace(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
设置完毕后再我又特地又查询了一遍发现sql_mode中已经没有only_full_group_by这个值了,set sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
重装高版本数据库 之后再回到上一步继续
报错:在执行以下脚本时,错在KEY_BLOCK_SIZE=8,这是mysql5.5才支持的,当前版本为5.0.45
create table if not exists tig_users (
uid bigint unsigned NOT NULL auto_increment,
-- Jabber User ID
user_id varchar(2049) NOT NULL,
-- UserID SHA1 hash to prevent duplicate user_ids
sha1_user_id char(128) NOT NULL,
-- User password encrypted or not
user_pw varchar(255) default NULL,
-- Time the account has been created
acc_create_time timestamp DEFAULT CURRENT_TIMESTAMP,
-- Time of the last user login
last_login timestamp DEFAULT 0,
-- Time of the last user logout
last_logout timestamp DEFAULT 0,
-- User online status, if > 0 then user is online, the value
-- indicates the number of user connections.
-- It is incremented on each user login and decremented on each
-- user logout.
online_status int default 0,
-- Number of failed login attempts
failed_logins int default 0,
-- User status, whether the account is active or disabled
-- >0 - account active, 0 - account disabled
account_status int default 1,
primary key (uid),
unique key sha1_user_id (sha1_user_id),
key user_pw (user_pw),
-- key user_id (user_id(765)),
key last_login (last_login),
key last_logout (last_logout),
key account_status (account_status),
key online_status (online_status)
)
ENGINE=InnoDB default character set utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'KEY_BLOCK_SIZE=8' at line 74
mysql版本5.0.45太低,不支持tigase中mysql脚本的格式。
将原mysql 端口改为3307,重装一个最新版mysql5.7.17,使用默认端口3306。
(1)解压缩mysql-5.7.17-winx64.zip到一个目录(C:\Program Files\mysql-5.7.17),在环境变量中Path后添加;C:\Program Files\mysql-5.7.17\bin
(2)修改配置文件my-default.ini
basedir = C:\Program Files\mysql-5.7.17
datadir = C:\Program Files\mysql-5.7.17\data
port = 3306
(3)安装服务 注意命名为mysql57 ,因为已经有一个mysql服务
以管理员身份运行cmd。cd 到该mysql的bin目录,
C:\Program Files\mysql-5.7.17\bin>mysqld -install mysql57
注:卸载命令C:\Program Files\mysql-5.7.17\bin>mysqld-nt -remove mysqld57
(4) 执行{net start mysql57}时,mysql57 服务如果无法启动。
这时要先删除MYSQL目录下的data文件夹,然后在终端里面输入{ mysqld --initialize }初始化,
然后会在目录下自动生成data文件夹,然后net start mysql57:
C:\Program Files\mysql-5.7.17\bin>net start mysql57
mysql57 服务正在启动 .
mysql57 服务已经启动成功。
(5)命令行输入 { mysql -u root -p } 回车后看到输入密码的状态,第一次无密码,敲回车,这时候会报两个错,
报ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor:NO)。
命令行到安装目录下,停止mysql服务 : C:\Program Files\mysql-5.7.17\bin>net stop mysql57
停止权限检查功能,输入运行: mysqld --skip-grant-tables 运行这行命令会一直挂住在那里,不会结束(注意)。
开启另一个命令行窗口,之前的窗口一直在挂起运行中。
命令行到安装目录下,输入: mysql -uroot -p
提示输入密码,直接回车,成功进入到mysql命令行下。
以下开始修改密码:
执行 user mysql
5.6版时执行 UPDATE user SET Password=PASSWORD('k******') where USER='root';就可以了;
但是现在会报错。查了一下user表,发现根本没有password字段,后来才知道用的是authentication_string字段。
执行的语句 update mysql.user set authentication_string=password('kk******') where user='root' and Host = 'localhost';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
成功
安装MYSQL后更改了ROOT的密码后用net start mysql57启动失败
C:\Program Files\mysql-5.7.17\bin>mysqladmin -u root -p shutdown,然后输入密码回车
再net start mysql就没有这个错误提示了!
use mysql;提示要重置密码
执行mysql> SET PASSWORD = PASSWORD('kk******');
然后mysql> use mysql; ok。
回到上一步处理数据库脚本问题
回到tigase安装界面,回退两步,重新执行
以上还是报错,改成tigase5.2.3后安装没报错了!!!
2.客户端测试
pandion客户端测试:admin@iprogram.com.cn admin 反馈账号密码错误。
在 pandion设置中,将安全通讯设置:改为不使用加密,登录成功!!!
注册用户user1,完成。
TSL加密连接不成功问题。----
3.Bosh环境搭建
Tigase从5.x版本之后已经取消了tigase.xml配置文件。在init.properties文件中配置相关属性。
--virt-hosts = iprogram.com.cn
--user-db-uri = jdbc:mysql://localhost/tigasedb?user=tigase&password=tigase12
--user-db = mysql
--admins = admin@iprogram.com.cn
--comp-name-4 = message-archive
--comp-name-3 = proxy
config-type = --gen-config-def
--comp-name-2 = pubsub
--comp-name-1 = muc
--cluster-mode = true
--sm-plugins = +message-archive-xep-0136
--sm-plugins=-starttls (这个很重要,使用这个设置,不开启SSL)
--debug = server
--comp-class-4 = tigase.archive.MessageArchiveComponent
--comp-class-3 = tigase.socks5.Socks5ProxyComponent
--comp-class-2 = tigase.pubsub.PubSubComponent
--comp-class-1 = tigase.muc.MUCComponent
--monitoring=jmx:9050,http:9080,snmp:9060
--user-db-uri=jdbc:mysql://127.0.0.1:3306/mytigdb1?user=root&password=guanghua&useUnicode=true&characterEncoding=UTF-8&autoCreateUser=true
-client-access-policy-file = etc/client-access-policy.xml
-cross-domain-policy-file = etc/cross-domain-policy.xml
-bosh-close-connection =false