1 基础知识
1.1 软件简介
Tigase XMPP Server是Tigase.net的旗舰服务器端软件,其提供XMPP服务或实时通讯(IC)服务,即Tigase是一个聊天服务器。
1.2 软件的功能
– 即时通讯服务(适合人员或机器)
– 聊天服务器
1.3 其他可选的即时通讯软件
1.3.1 开源产品
– EJabberd
– Openfire
– Jabberd2
– Prosody
1.3.2 非开源产品
– Isode
– Jabber XCP
1.4 软件特点
– 高度优化,核心代码小于1MB,运行最低仅需10MB内存
– 完全模块化,元素、组件、插件和功能都提供异常丰富的API配置和替换
– 灵活,易于调整和定制,可更具需求或环境定制
– 集群开箱即用,只需修改2行配置即可实现集群
– 硬件要求低,适合小型机,标准服务器以及虚机
– 经过严格测试,由专业工具进行兼容性测试和负载测试
– 内置支持脚本,支持Groovy,Python,Ruby和Scala进行模块扩展
– 易监控,可通过HTTP,SNMP,JMX,XMPP以及数据库进行监控并可服务邮件告警
– 安全,支持TLS,SASL,SSL等加密,API带身份隔离
– 支持在线升级,只是热插拔和系统升级
– 开源
1.5 配置文件
1.5.1 服务器配置文件
– 文件路径“%{TIGASE_HOME}/etc/tigase.xml”
– 存储tigase运行时的配置
– 缺少该文件时会在运行时自动创建
– 部分配置来源于init.properties
– 修改参数建议直接修改init.properties
注:该配置文件支持的属性列表如下,
http://docs.tigase.org/tigase-server/7.0.1/Administration_Guide/html/#_tigase_xmpp_server_configuration_properties
1.5.2 服务器启动文件
– 文件路径“%{TIGASE_HOME}/etc/tigase.conf”
– 该文件定义Java虚拟机启动的系统设置和环境参数
– 该文件仅仅适用于Bash shell的类Unix系统
– 该文件的配置将被”%{TIGASE_HOME}/scripts/tigase.sh”脚本加载
– Windows系统请使用wapper.conf
2 安装部署
2.1 系统配置
2.1.1 基本环境信息
IP Address = 10.168.0.90
Host Name = tigase.cmdschool.org
OS = CentOS 7.3 x86_64
2.1.2 安装所需的工具
yum install -y vim wget unzip net-tools
2.2 安装前的准备
2.2.1 安装JDK环境
请参阅以下文档部署JDK环境,
https://www.cmdschool.org/archives/397
2.2.2 准备数据库
请参阅以下文档部署MariaDB数据库,
https://www.cmdschool.org/archives/2364
2.2.2 预设防火墙端口
firewall-cmd --permanent --add-port 5222-5223/tcp firewall-cmd --permanent --add-port 5269/tcp firewall-cmd --permanent --add-port 5280/tcp firewall-cmd --permanent --add-port 5290/tcp firewall-cmd --permanent --add-port 8080/tcp firewall-cmd --reload firewall-cmd --list-all
2.2.3 配置名称解析
echo '10.168.0.90 tigase.cmdschool.org' >> /etc/hosts echo '10.168.0.90 cmdschool.org' >> /etc/hosts
注:
– 此操作代替DNS解析,如有DNS解析则无需设置
– 此域名解析应该配置当前服务器的hostname
2.2.5 下载安装包
cd ~ wget https://tigase.tech/attachments/2455/tigase-server-7.0.1-b3810-dist-max.zip
注:如果无法下载请使用浏览器下载
2.3 部署tigase
2.3.1 创建运行用户
groupadd -g 982 tigase useradd -u 982 -g 982 -d /usr/tigase -s /bin/bash tigase
2.3.2 解压安装包
cd ~ unzip tigase-server-7.0.1-b3810-dist-max.zip
2.3.3 部署Tigase XMPP目录
mv tigase-server-7.0.1-b3810 /usr/ chown root:tigase -R /usr/tigase-server-7.0.1-b3810 chmod 775 -R /usr/tigase-server-7.0.1-b3810 rm -rf /usr/tigase ln -s /usr/tigase-server-7.0.1-b3810/ /usr/tigase
2.3.4 配置Tigase XMPP环境变量
echo 'export TIGASE_HOME="/usr/tigase"' > /etc/profile.d/tigase.sh source /etc/profile
2.3.5 部署配置文件
mkdir /etc/tigase cp ${TIGASE_HOME}/etc/init.properties ${TIGASE_HOME}/etc/init.properties.default cp ${TIGASE_HOME}/etc/tigase.conf ${TIGASE_HOME}/etc/tigase.conf.default ln -s ${TIGASE_HOME}/etc/init.properties /etc/tigase/init.properties ln -s ${TIGASE_HOME}/etc/tigase.conf /etc/tigase/tigase.conf
2.3.6 修改启动配置文件
vim /etc/tigase/tigase.conf
修改如下参数:
osgiEnabled=true JAVA_HOME="/usr/java/jdk1.8.0_161" TIGASE_HOME="/usr/tigase" TIGASE_CONSOLE_LOG="/var/log/tigase/tigase-console.log" TIGASE_CONFIG="/etc/tigase/tigase.xml" TIGASE_OPTIONS=" --property-file /etc/tigase/init.properties " TIGASE_PID="/var/run/tigase/tigase.pid"
注:Java家目录位置是“/usr/java/jdk1.8.0_161”
2.3.7 部署Tigase XMPP日志目录
mkdir /var/log/tigase chown root:tigase -R /var/log/tigase chmod 775 -R /var/log/tigase
2.3.8 部署Tigase XMPP PID目录
mkdir -p /var/run/tigase chown root:tigase /var/run/tigase chmod 775 /var/run/tigase
2.3.9 修改数据库字符编码格式
vim /etc/my.cnf
加入如下参数:
[mysqld] character-set-server=utf8
重启服务使配置生效
/etc/init.d/mysqld restart
确认服务端的字符编码格式修改成功,
mysql -uroot -p -e "show variables like 'character_set_server';"
加入如下参数:
+----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | character_set_server | utf8 | +----------------------+-------+
确认客户端的字符编码格式修改成功,
mysql -uroot -p -e "show variables like 'character_set_client';"
加入如下参数:
+----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | character_set_client | utf8 | +----------------------+-------+
2.4 尝试启动服务
2.4.1 手动启动服务
cd /usr/tigase sudo -u tigase ./scripts/tigase.sh start
2.4.2 查询服务状态
cd /usr/tigase sudo -u tigase ./scripts/tigase.sh status
2.4.3 检查服务的端口
netstat -antp | grep ::: | grep java
端口显示如下:
tcp6 0 0 :::5290 :::* LISTEN 4174/java tcp6 0 0 :::8080 :::* LISTEN 4174/java tcp6 0 0 :::5269 :::* LISTEN 4174/java tcp6 0 0 :::5280 :::* LISTEN 4174/java tcp6 0 0 :::5222 :::* LISTEN 4174/java tcp6 0 0 :::5223 :::* LISTEN 4174/java
2.5 使用Web向导配置tigase
2.5.1 生成配置文件
http://10.168.0.90:8080/setup/
注:按照以上向导提示生成配置(按照向导跑,简单这里不详述)并单击保存
2.5.2 校验保存的配置
cat /etc/tigase/init.properties
保存的配置如下:
config-type=--gen-config-def --virt-hosts=cmdschool.org --admins=admin@cmdschool.org --debug=server --user-db-uri=jdbc:mysql://localhost/tigasedb?user=tigase&password=tigasepwd --sm-plugins=+jabber\:iq\:auth,+urn\:ietf\:params\:xml\:ns\:xmpp-sasl,+urn\:ietf\:params\:xml\:ns\:xmpp-bind,+urn\:ietf\:params\:xml\:ns\:xmpp-session,+jabber\:iq\:register,+jabber\:iq\:roster,+presence,+basic-filter,+domain-filter,+jabber\:iq\:privacy,+jabber\:iq\:version,+http\://jabber.org/protocol/stats,+starttls,-msgoffline,+vcard-temp,+http\://jabber.org/protocol/commands,+jabber\:iq\:private,+urn\:xmpp\:ping,+pep,+zlib,+message-archive-xep-0136,+amp --comp-name-1=muc --comp-class-1=tigase.muc.MUCComponnet --comp-name-2=pubsub --comp-class-2=tigase.pubsub.PubSubComponent --comp-name-3=http --comp-class-3=tigase.http.HttpMessageReceiver
2.5.2 重启服务使配置生效
cd /usr/tigase sudo -u tigase ./scripts/tigase.sh restart
3 优化服务
3.1 优化服务的启动
3.1.1 手动停止服务
cd /usr/tigase sudo -u tigase ./scripts/tigase.sh stop
3.1.2 部署启动脚本
cp ${TIGASE_HOME}/scripts/redhat/init.d/tigase /etc/init.d/tigased
3.1.3 修改环境变量
vim /etc/init.d/tigased
加入如下环境变量
JAVA_HOME="/usr/java/jdk1.8.0_161" USERNAME=tigase USERGROUP=tigase NAME=tigase DESC="Tigase XMPP server" TIGASE_HOME="/usr/tigase" TIGASE_LIB=${TIGASE_HOME}/jars TIGASE_CONFIG=/etc/tigase/tigase-server.xml TIGASE_OPTIONS=" --property-file /etc/tigase/init.properties " TIGASE_PARAMS="/etc/tigase/tigase.conf" PIDFILE="/var/run/tigase/tigase.pid" TIGASE_CONSOLE_LOG="/var/log/tigase/tigase-console.log"
注:以上变量的部分变量会被TIGASE_PARAMS的配置覆盖
修改case分支判断的代码,
case "$1" in start) [...] exit 0 ;; [...] status|check) [...] ;;
注:
– 将start分支判断中的退出返回值修改为“exit 0”
– 将check分支判断中增加对“status”关键字的检测
以上如果不修改将会有如下错误,
Job for tigased.service failed. See 'systemctl status tigased.service' and 'journalctl -xn' for details. [FAILED]
或如下错误:
Usage: /etc/init.d/tigase {start|stop|restart|clearrestart|clear|force-reload|check|status}
3.1.4 增加PDI目录自动创建
vim /etc/init.d/tigased
启动函数中加如下代码:
PIDDIR=`echo $PIDFILE | awk -F'/' '{NF-=1;OFS="/";print}'` if ! test -d $PIDDIR; then mkdir $PIDDIR chown tigase:tigase $PIDDIR fi local cmd="cd ${TIGASE_HOME}; setsid $JAVA $TIGASE_CMD >>${TIGASE_CONSOLE_LOG} 2>&1 & echo \$! >$PIDFILE" su - ${USERNAME} -c "$cmd" || return 1
注:最后两行不用修改,仅用于定位代码
3.1.5 重载修改过的脚本
systemctl daemon-reload
3.1.6 测试启动脚本
/etc/init.d/tigased start /etc/init.d/tigased status /etc/init.d/tigased restart /etc/init.d/tigased stop
3.1.7 配置服务自动启动
chkconfig tigased on
3.2 优化性能
3.2.1 修改打开文件的数量
sysctl -w fs.file-max=1610691 echo 'fs.file-max = 1610691' >> /etc/sysctl.d/99-sysctl.conf
3.2.2 修改KeepaLive设置
sysctl -w net.ipv4.tcp_keepalive_time=60 sysctl -w net.ipv4.tcp_keepalive_probes=3 sysctl -w net.ipv4.tcp_keepalive_intvl=90 echo 'net.ipv4.tcp_keepalive_time = 60' >> /etc/sysctl.d/99-sysctl.conf echo 'net.ipv4.tcp_keepalive_probes = 3' >> /etc/sysctl.d/99-sysctl.conf echo 'net.ipv4.tcp_keepalive_intvl = 90' >> /etc/sysctl.d/99-sysctl.conf
3.2.3 软硬限制
echo 'tigase soft nofile 600000' >> /etc/security/limits.d/30-tigase.conf echo 'tigase hard nofile 600000' >> /etc/security/limits.d/30-tigase.conf
注:查询用户的句柄可使用如下命令,
lsof -u tigase | wc -l
4 客户端测试
以上仅仅完成服务端的配置,如果需要进行客户端测试,请按照如下链接配置客户端,
https://www.cmdschool.org/archives/2670
参阅文档:
=====================
tigase简介
——————
https://tigase.net/content/tigase-xmpp-server
tigase特点
—————–
http://docs.tigase.org/tigase-server/7.0.1/Administration_Guide/html/#_about_tigase_jabber_xmpp_server
安装向导
——————
http://docs.tigase.org/tigase-server/7.0.1/Administration_Guide/html/#_manual_installation_in_console_mode
MySQL数据库配置
——————–
http://docs.tigase.org/tigase-server/7.0.1/Administration_Guide/html/#_configuring_from_the_linux_shell_command_line
tigase的下载
——————
https://tigase.tech/projects/tigase-server/files
tigase的文档
——————
http://docs.tigase.org/index.html
mariadb jdbc
—————–
https://mariadb.com/kb/en/library/about-mariadb-connector-j/
属性的解析:
—————
http://docs.tigase.org/tigase-server/7.0.1/Properties_Guide/html/
没有评论