Tigase服务聊天环境搭建

作者:陆金龙    发表时间:2023-05-28 06:41   

关键词:  

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数据库问题

参考:

http://docs.tigase.org/tigase-server/7.0.2/Administration_Guide/html_chunk/_prepare_the_mysql_database_for_the_tigase_server.html

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