安装配置简单记录如下
1.安装mysql,我用的版本是mysql 5.5。
如果用较高版本,在执行过程中会遇到一些数据库的报错,需要对源码进行修改。
错误举例如下
The server time zone value '???ú±ê×??±??' is unrecognized or represents(这个是需要改数据库的连接串)
check the manual that corresponds to your MySQL server version for the right syntax(这个是给用户授权时,会有这个错误)
2.安装jdk,我用的版本是1.8
这个地方 需要检查idea几处的版本是否一致(https://blog.csdn.net/hanjun0612/article/details/72845918)
file-setting- build,execution,deployment-java compiler(project bytecode version 1.8)
file--Project Structure-project settings -project(project sdk 1.8)
file-project structure-project settings-modules(language level:8-lambdas,type annotations etc.)
3.下载tigase源码
可以在这里面找到下载地址 https://tigase.tech/projects/tigase-server/repository
我直接下载的stable 版本 git clone -b stable https://git.tigase.tech/tigase-server.git
4.idea版本 我用的是 2018.1.5(Ultimate Edition)
第一次加载代码,maven会自动去下载相应的jar包
加载代码时,可能会报jdbc的包不存在,手动去pom.xml里面加一下就好了
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.25</version> </dependency>
5.安装Groovy
直接执行 会报Cannot compile Groovy files: no Groovy library is defined for module 的错误
有的解释是直接在file->setting->Compiler的resource中删除 ?*.groovy;就不会报这个错
(https://blog.csdn.net/u013083576/article/details/58288626)
但我不清楚 代码中用没用到这块所以还是安装了一下Groovy(版本2.4.15)
6.建库
用到的文件是 tigase-server\scripts\db-create-mysql.sh(刚开始下载的主干,没找大这个文件,stable分支里面有这个文件)
其实就是执行这句
java -cp "jars/*" tigase.util.DBSchemaLoader -dbHostname ${DB_HOST} -dbType ${DB_TYPE} -schemaVersion ${VERSION} -dbName ${DB_NAME} -rootUser ${ROOT_NAME} -rootPass ${ROOT_PASS} -dbUser ${USER_NAME} -dbPass ${USER_PASS} -logLevel ALL
但是命令行执行,总是不成功,有时也看不出来什么错(有可能是 jars 下面根本就没这个方法,或者数据库版本不对一些语句不支持(刚开始弄时,版本用的版本比较高))
后来就直接在源代码里面执行,把\src\main\java\tigase\util\DBSchemaLoader设置成启动项,然后启动参数配置为:
-dbHostname 127.0.0.1 -dbType mysql -schemaVersion 7-1 -dbName tigasedb -rootUser root -rootPass 000000 -dbUser tigase -dbPass tigase12 -logLevel ALL
然后执行,执行成功后,可以看到数据库
7.配置启动项的参数
配置文件tigase-server\etc
有的文章说改写init.properties 有的说改init-mysql.properties 其实这两个文件内容差不多,主要是看启动时,调哪个配置文件,改哪个就好了,我改的是init-mysql.properties
--admins=admin@127.0.0.1,admin@计算机名
--user-db-uri=jdbc:mysql://127.0.0.1/tigasedb?user=tigase&password=tigase12
--virt-hosts=127.0.0.1,计算机名
计算机名 可以从 控制面板\所有控制面板项\系统 里面获取到
然后开始正式启动
启动入口 为 \src\main\java\tigase\server\XMPPServer.java
VM options:
-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -Djdbc.drivers=com.mysql.jdbc.Driver:org.postgresql.Driver:org.apache.derby.jdbc.EmbeddedDriver
program arguments:
--property-file etc/init-mysql.properties
到目前为止,有一个加载错误还没解决(不过看上去没什么影响)
java.lang.LinkageError: loader (instance of sun/misc/Launcher$AppClassLoader): attempted duplicate class definition for name: "org/groovy/debug/hotswap/ResetAgent$TimestampFieldRemover"
然后看到启动成功
== Thu Oct 11 15:35:50 CST 2018 Server finished starting up and (if there wasn't any error) is ready to use
8.Psi客户端验证
很多都推荐的是spark的客户端作为验证工具,但没有跑通,注册和登录总是报错(连不上服务器,或者账号密码错误 ),我跟了下,可以连接到服务器,但是发送xmpp消息过程中,收到服务器的返回<proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls"/> 之后就没反应了,有的说是证书机制问题,设置了好多,一直没跑起来。
但是我利用SocketTool,直接发送xmpp消息(登录)
<stream:stream to='127.0.0.1' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0' xml:lang='en'>
<auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="PLAIN">AH..........3Bhc3N3ZA==</auth>
是能正常触发服务器的登录相应,并提示成功。
后来我用的Psi作为客户端去测试(https://www.cnblogs.com/eyecool/p/7243661.html)
注册完用户可以看到(注册用户其实最后调用的存储过程TigAddUser,登录调用的是存储过程TigUserLoginPlainPw)
tig_user表里面会有新增一条数据
9.具体的通讯问题,可以看log日志。
在init-mysql.properties 里面可以配置日志级别
写在最后,一年多没摸过java代码,花费了几天勉强把代码跑起来了,任重而道远》。。。