简单地说说 tigase

本文详细介绍了Tigase IM服务端的开源工程,包括Eclipse部署步骤、Linux环境的安装配置、远程调试、内存监控以及集群模式的设置。重点讲解了配置文件的修改、服务启动和停止、以及如何进行内存快照和HTTP-API组件的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 IM服务端开源工程

1.1 主流开源工程介绍

不介绍这个了。

2 Eclipse部署

2.1 Eclipse安装git插件。

2.2 下载源码

git clone https://repository.tigase.org/git/tigase-server

选择稳定的版本右键 checkout

这里写图片描述

2.3 Pom错误修正

这里写图片描述

修正此错误需要在build节点下添加如下内容(忽略这个报错信息)

<pluginManagement>
   <plugins>
    <!--This plugin's configuration is used to store Eclipse m2e settings 
     only. It has no influence on the Maven build itself. -->
    <plugin>
     <groupId>org.eclipse.m2e </groupId>
     <artifactId>lifecycle-mapping</artifactId>
     <version>1.0.0</version>
     <configuration>
      <lifecycleMappingMetadata>
       <pluginExecutions>
        <pluginExecution>
         <pluginExecutionFilter>
          <groupId>org.codehaus.gmaven</groupId>
          <artifactId>gmaven-plugin</artifactId>
          <versionRange>[1.5,)</versionRange>
          <goals>
           <goal>execute</goal>
          </goals>
         </pluginExecutionFilter>
         <action>
          <ignore></ignore>
         </action>
        </pluginExecution>
       </pluginExecutions>
      </lifecycleMappingMetadata>
     </configuration>
    </plugin>
   </plugins>
  </pluginManagement>


2.4 配置

init.properties 基本配置

config-type=--gen-config-def

--admins= admin@im.cai

--virt-hosts = im.cai

#--debug=http

--debug=server, xmpp, cluster, pubsub

--user-db=mysql

--user-db-uri=jdbc:mysql://192.168.1.100:3306/tigase?user=admin&password=admin

说明:1. admins为管理员账号,需要手动注册。

  1. virt-hosts 为虚拟域名,依个人喜好设定。

  2. debug指定输出哪些包或者类中的日志。

Jvm启动参数配置

1. Program arguments : --property-file etc/init.properties

2. VM argument:

-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8     -Djdbc.drivers=com.mysql.jdbc.Driver:org.postgresql.Driver:org.apache.derby.jdbc.EmbeddedDriver  -server -Xms100M -Xmx200M -XX:PermSize=32m -XX:MaxPermSize=256m -XX:MaxDirectMemorySize=128m

说明: 其中-Xmx200M表示给tigase jvm内存分配最大堆内存大小为200M,此值依个人喜好调整。

3 Linux环境部署

3.1 下载linux环境tigase文件

wget https://projects.tigase.org/attachments/download/2657/tigase-server-7.0.2-b3821-dist-max.tar.gz

3.2 解压

tar –zxvf tigase-server-7.0.2-b3821-dist-max.tar.gz 解压到当前目录下并更名为tigase-server (依个人喜好)

3.3 配置

init.properties 配置文件与eclipse配置文件相同

tigase.conf 此配置文件在 /xx/tigase/etc/ 目录下

这里写图片描述

说明:

  1. JMX是远程监控的配置
  2. REMOTE_DEBUG为远程调试配置
  3. HEAP_DUMP是内存溢出策略配置, 内存溢出后会自动生成dump文件到指定目录
  4. 配置项按需添加

3.4 启动

在安装目录执行: ./scripts/tigase.sh start etc/tigase.conf

也可修改tigase.sh文件,指定tigase.conf配置文件

这里写图片描述

创建tigase命令:

cd /usr/bin

在此目录下执行 : ln –s /xx/tigase/scripts/tigase.sh tigase

表示创建软链接(快捷方式)tigase命令指向 tigase.sh可执行文件

至此,可以直接执行 tigase start|stop|restart 等命令来 启动|停止|重启 tigase

4 Linux环境代码打包

4.1 在自己喜欢的目录创建tigase-XX子目录

使用Xshell的文件传输工具将代码挪到XX目录

4.2 使用maven打包

进入到工程目录cd tigase-XX

执行mvn install -DskipTests (跳过测试)

4.3 部署启动

打包完成后,在target目录下将会生成tigase-server.jar文件,将此jar复制到/XX/tigase/jars目录下,启动tigase

5 远程调试

5.1 服务端配置

etc/tigase.conf 文件添加如下配置:

REMOTE_DEBUG="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787"

5.2 IDE客户端配置

以eclipse为例:

Debug Configurations – Remote Java Application – New

这里写图片描述

6 内存监控

6.1 服务端配置

etc/tigase.conf 文件添加如下配置:

JMX="-Djava.rmi.server.hostname=192.168.1.120 -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

6.2 客户端连接

以jvisualvm为例,jvisualvm.exe在jdk安装目录bin/。

运行jvisualvm.exe ,添加远程主机,输入服务器地址。

右键 主机添加JMX连接,输入端口号8888。
这里写图片描述

7 内存快照

命令 jstack, 将内存快照信息输出到文件。

一般需要获取多份,每隔3~10(依个人喜好)获取一次,用于分析线程等待超时及死锁等等。

这里写图片描述

曾经死过的锁

这里写图片描述

8 http-api 组件

8.1 配置及依赖

init.properties 配置文件添加

--comp-name-2=http

--comp-class-2=tigase.http.HttpMessageReceiver

http/api-keys[s]=open_access

# http/http/port[I]=8080


此组件依赖servlet-api-3.1.jar 、 groovy-all.jar

8.2 访问

a. tigase配置管理页面: http://localhost:8080/setup/

b. 后台管理页面: http://localhost:8080/ui/ (使用管理员账号登陆)

9 monitor 组件(linux环境下)

9.1 配置及依赖

init.properties 配置文件添加

--monitoring = jmx:9050

此组件依赖 jdmkrt.jar tigase-extras.jar

将下列文件放在对应的目录

bin/monitor.sh

etc/monitor.properties

libs/tigase-monitor.jar (放在jars/ 下会导致启动错误)

sounds/Alarm.wav alarm1.wav

配置 monitor.properties中nodes=red:192.168.1.150:admin:admin_pass 

admin:admin_pass 在etc/jmx.access jmx.password 中配置,使用默认配置即可。

9.2 监控使用

在tigase目录下执行命令 ./bin/monitor.sh 启动monitor

如下:

这里写图片描述

10 集群模式

10.1 配置及依赖

init.properties 配置文件添加

--cluster-mode = true

--cluster-connect-all = true

--sm-cluster-strategy-class=tigase.server.cluster.strategy.OnlineUsersCachingStrategy

集群模式需要破解tigase-acs.jar,将破解后的jar包放在jars/目录下,启动各节点,节点之间通过数据库自动发现。

集群模式下每个节点的monitor配置:

配置 monitor.properties中

nodes=red:192.168.1.120:admin:admin_passbule:192.168.1.130:admin:admin_pass
来自官网,更新于201704。官网在国外很难下载,现在放到这里方便国内的朋友下载研究。 F:. │ .gitignore │ build.gradle │ gradle.properties │ gradlew │ gradlew.bat │ settings.gradle │ tigase_dir.txt │ ├─.git │ │ config │ │ description │ │ HEAD │ │ index │ │ packed-refs │ │ │ ├─hooks │ │ applypatch-msg.sample │ │ commit-msg.sample │ │ post-update.sample │ │ pre-applypatch.sample │ │ pre-commit.sample │ │ pre-push.sample │ │ pre-rebase.sample │ │ pre-receive.sample │ │ prepare-commit-msg.sample │ │ update.sample │ │ │ ├─info │ │ exclude │ │ │ ├─logs │ │ │ HEAD │ │ │ │ │ └─refs │ │ ├─heads │ │ │ master │ │ │ │ │ └─remotes │ │ └─origin │ │ HEAD │ │ │ ├─objects │ │ ├─info │ │ └─pack │ │ pack-a5985fcf6d3d54c95897e6cf9f133139e5ee10c1.idx │ │ pack-a5985fcf6d3d54c95897e6cf9f133139e5ee10c1.pack │ │ │ └─refs │ ├─heads │ │ master │ │ │ ├─remotes │ │ └─origin │ │ HEAD │ │ │ └─tags ├─app │ │ .gitignore │ │ build.gradle │ │ proguard-rules.pro │ │ │ └─src │ ├─androidTest │ │ └─java │ │ └─org │ │ └─tigase │ │ └─messenger │ │ └─phone │ │ └─pro │ │ ApplicationTest.java │ │ │ ├─main │ │ │ AndroidManifest.xml │ │ │ │ │ ├─java │ │ │ └─org │ │ │ └─tigase │ │ │ └─messenger │ │ │ ├─jaxmpp │ │ │ │ └─android │ │ │ │ ├─caps │ │ │ │ │ CapabilitiesDBCache.java │ │ │ │ │ CapsDbHelper.java │ │ │ │ │ │ │ │ │ ├─chat │ │ │ │ │ AndroidChatManager.java │ │ │ │ │ ChatProvider.java │ │ │ │ │ MarkAsRead.java │ │ │ │ │ OpenChatDbHelper.java │ │ │ │ │ │ │ │ │ ├─muc │ │ │ │ │ AndroidRoomsManager.java │ │ │ │ │ │ │ │ │ └─roster │ │ │ │ AndroidRosterStore.java │ │ │ │ RosterDbHelper.java │ │ │ │ RosterProvider.java │ │ │ │ │ │ │ └─phone │ │ │ └─pro │ │ │ │ AboutActivity.java │ │ │ │ DividerItemDecoration.java │ │ │ │ MainActivity.java │ │ │ │ MessengerApplication.java │ │ │ │ StatusSelectorAdapter.java │ │ │ │ │ │ │ ├─account │ │ │ │ AccountsConstants.java │ │ │ │ Authenticator.java │ │ │ │ AuthenticatorService.java │ │ │ │ ConnectionChecker.java │ │ │ │ LoginActivity.java │ │ │ │ NewAccountActivity.java │ │ │ │ │ │ │ ├─conenctionStatus │ │ │ │ ConnectionStatusesFragment.java │ │ │ │ StatusesRecyclerViewAdapter.java │ │ │ │ ViewHolder.java │ │ │ │ │ │ │ ├─conversations │ │ │ │ │ AbstractConversationActivity.java │ │ │ │ │ │ │ │ │ ├─chat │ │ │ │ │ ChatActivity.java │ │ │ │ │ ChatItemFragment.java │ │ │ │ │ MyChatItemRecyclerViewAdapter.java │ │ │ │ │ ViewHolder.java │ │ │ │ │ │ │ │ │ └─muc │ │ │ │ JoinMucActivity.java │ │ │ │ MucActivity.java │ │ │ │ MucItemFragment.java │ │ │ │ MucItemRecyclerViewAdapter.java │ │ │ │ ViewHolder.java │ │ │ │ │ │ │ ├─db │ │ │ │ CPresence.java │ │ │ │ CursorRecyclerViewAdapter.java │ │ │ │ DatabaseContract.java │ │ │ │ DatabaseHelper.java │ │ │ │ RosterProviderExt.java │ │ │ │ │ │ │ ├─notifications │ │ │ │ MessageNotification.java │ │ │ │ │ │ │ ├─openchats │ │ │ │ MyOpenChatItemRecyclerViewAdapter.java │ │ │ │ OpenChatItemFragment.java │ │ │ │ ViewHolder.java │ │ │ │ │ │ │ ├─providers │ │ │ │ ChatProvider.java │ │ │ │ RosterProvider.java │ │ │ │ │ │ │ ├─roster │ │ │ │ │ MyRosterItemRecyclerViewAdapter.java │ │ │ │ │ PresenceIconMapper.java │ │ │ │ │ RosterItemFragment.java │ │ │ │ │ ViewHolder.java │ │ │ │ │ │ │ │ │ ├─contact │ │ │ │ │ EditContactActivity.java │ │ │ │ │ │ │ │ │ └─request │ │ │ │ SubscriptionRequestActivity.java │ │ │ │ │ │ │ ├─service │ │ │ │ AndroidLoggingHandler.java │ │ │ │ AutopresenceManager.java │ │ │ │ DataRemover.java │ │ │ │ Features.java │ │ │ │ MobileModeFeature.java │ │ │ │ SecureTrustManagerFactory.java │ │ │ │ ServiceRestarter.java │ │ │ │ StanzaExecutor.java │ │ │ │ XMPPService.java │ │ │ │ │ │ │ ├─settings │ │ │ │ AppCompatPreferenceActivity.java │ │ │ │ SettingsActivity.java │ │ │ │ │ │ │ └─utils │ │ │ AsyncDrawable.java │ │ │ AvatarHelper.java │ │ │ BitmapWorkerTask.java │ │ │ DiskLruCache.java │ │ │ ImageHelper.java │ │ │ │ │ └─res │ │ ├─drawable │ │ │ ic_accounts_24dp.xml │ │ │ ic_add.xml │ │ │ ic_add_chat_24dp.xml │ │ │ ic_connection_info_24dp.xml │ │ │ ic_groupchat_24dp.xml │ │ │ ic_menu_about.xml │ │ │ ic_menu_chats.xml │ │ │ ic_menu_roster.xml │ │ │ ic_menu_settings.xml │ │ │ ic_message_delivered_24dp.xml │ │ │ ic_message_not_sent_24dp.xml │ │ │ ic_message_sent_24dp.xml │ │ │ ic_messenger_icon.xml │ │ │ ic_muc_24dp.xml │ │ │ ic_send_24dp.xml │ │ │ message_bubble_error.9.png │ │ │ message_bubble_received.9.png │ │ │ message_bubble_received_4.9.png │ │ │ message_bubble_sent.9.png │ │ │ message_bubble_sent_1.9.png │ │ │ message_bubble_sysmsg.9.png │ │ │ presence_away.xml │ │ │ presence_chat.xml │ │ │ presence_dnd.xml │ │ │ presence_error.xml │ │ │ presence_offline.xml │ │ │ presence_online.xml │ │ │ presence_unknown.xml │ │ │ presence_xa.xml │ │ │ side_nav_bar.xml │ │ │ user_avatar.png │ │ │ │ │ ├─drawable-hdpi │ │ │ ic_info_black_24dp.png │ │ │ ic_launcher.png │ │ │ ic_notifications_black_24dp.png │ │ │ ic_sync_black_24dp.png │ │ │ │ │ ├─drawable-mdpi │ │ │ ic_info_black_24dp.png │ │ │ ic_launcher.png │ │ │ ic_notifications_black_24dp.png │ │ │ ic_sync_black_24dp.png │ │ │ │ │ ├─drawable-v21 │ │ │ ic_info_black_24dp.xml │ │ │ ic_notifications_black_24dp.xml │ │ │ ic_sync_black_24dp.xml │ │ │ │ │ ├─drawable-xhdpi │ │ │ ic_info_black_24dp.png │ │ │ ic_launcher.png │ │ │ ic_notifications_black_24dp.png │ │ │ ic_sync_black_24dp.png │ │ │ │ │ ├─drawable-xxhdpi │ │ │ ic_info_black_24dp.png │ │ │ ic_launcher.png │ │ │ ic_notifications_black_24dp.png │ │ │ ic_sync_black_24dp.png │ │ │ │ │ ├─drawable-xxxhdpi │ │ │ ic_info_black_24dp.png │ │ │ ic_launcher.png │ │ │ ic_notifications_black_24dp.png │ │ │ ic_sync_black_24dp.png │ │ │ │ │ ├─layout │ │ │ account_list_item.xml │ │ │ activity_about.xml │ │ │ activity_chat.xml │ │ │ activity_edit_contact.xml │ │ │ activity_join_muc.xml │ │ │ activity_login.xml │ │ │ activity_main.xml │ │ │ activity_muc.xml │ │ │ activity_new_account.xml │ │ │ activity_subscription_request.xml │ │ │ app_bar_main.xml │ │ │ content_chat.xml │ │ │ content_main.xml │ │ │ content_muc.xml │ │ │ fragment_chatitem_error.xml │ │ │ fragment_chatitem_list.xml │ │ │ fragment_chatitem_received.xml │ │ │ fragment_chatitem_sent.xml │ │ │ fragment_chatitem_sysmsg.xml │ │ │ fragment_connectionstatusitem.xml │ │ │ fragment_connectionstatus_list.xml │ │ │ fragment_groupchatitem_received.xml │ │ │ fragment_groupchatitem_sent.xml │ │ │ fragment_mucitem_list.xml │ │ │ fragment_openchatitem.xml │ │ │ fragment_openchatitem_list.xml │ │ │ fragment_rosteritem.xml │ │ │ fragment_rosteritem_list.xml │ │ │ nav_header_main.xml │ │ │ status_selectoritem.xml │ │ │ │ │ ├─menu │ │ │ activity_main_drawer.xml │ │ │ chatitem_context.xml │ │ │ connection_status_context.xml │ │ │ main.xml │ │ │ menu_chat.xml │ │ │ openchat_chat_context.xml │ │ │ openchat_fragment.xml │ │ │ openchat_groupchat_context.xml │ │ │ roster_context.xml │ │ │ roster_fragment.xml │ │ │ │ │ ├─mipmap-xhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─mipmap-xxhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─mipmap-xxxhdpi │ │ │ ic_launcher.png │ │ │ │ │ ├─raw │ │ │ trust_store_bks │ │ │ │ │ ├─values │ │ │ attrs.xml │ │ │ colors.xml │ │ │ dimens.xml │ │ │ strings.xml │ │ │ styles.xml │ │ │ │ │ ├─values-v21 │ │ │ styles.xml │ │ │ │ │ ├─values-w820dp │ │ │ dimens.xml │ │ │ │ │ └─xml │ │ account_preferences.xml │ │ authenticator.xml │ │ pref_accounts_list.xml │ │ pref_data_sync.xml │ │ pref_general.xml │ │ pref_headers.xml │ │ pref_notification.xml │ │ │ └─test │ └─java │ └─org │ └─tigase │ └─messenger │ └─phone │ └─pro │ ExampleUnitTest.java │ ├─documentation │ │ build.gradle │ │ │ └─src │ └─asciidoc │ │ index.asciidoc │ │ │ ├─css │ │ docbook-xsl.css │ │ │ ├─images │ │ Accounts.png │ │ ArchiveChat.png │ │ General.png │ │ JoinChat.png │ │ LeaveRoom.png │ │ Menu.png │ │ MUC.png │ │ Notifications.png │ │ Options.png │ │ Register.png │ │ Roster.png │ │ Screenshot_2015-04-26-13-38-30.png │ │ Screenshot_2015-04-26-13-38-46.png │ │ Screenshot_2015-04-26-13-40-14.png │ │ Screenshot_2015-04-26-13-40-53.png │ │ Screenshot_2015-04-26-13-41-20.png │ │ Screenshot_2015-04-26-13-41-42.png │ │ Screenshot_2015-04-26-13-42-20.png │ │ Screenshot_2015-04-26-13-43-54.png │ │ Screenshot_2015-04-26-14-00-37.png │ │ Screenshot_2015-04-26-14-00-49.png │ │ Screenshot_2015-04-26-14-00-56.png │ │ Screenshot_2015-04-26-14-01-13.png │ │ Screenshot_2015-04-26-14-01-23.png │ │ Screenshot_2015-04-26-14-01-31.png │ │ Screenshot_2015-04-26-14-01-50.png │ │ Screenshot_2015-04-26-14-02-01.png │ │ Screenshot_2015-04-26-14-02-36.png │ │ Screenshot_2015-04-26-14-03-06.png │ │ Screenshot_2015-04-26-14-03-16.png │ │ Screenshot_2015-04-26-14-04-35.png │ │ Screenshot_2015-04-26-14-05-35.png │ │ Screenshot_2015-04-26-14-06-03.png │ │ Screenshot_2015-04-26-14-07-03.png │ │ Screenshot_2015-04-26-14-07-11.png │ │ Screenshot_2015-04-26-14-08-09.png │ │ Screenshot_2015-04-26-14-09-31.png │ │ Screenshot_2015-04-26-14-15-35.png │ │ Screenshot_2015-04-26-14-18-03.png │ │ Status.png │ │ tiger-looking-left-small.png │ │ Welcome.png │ │ │ └─text │ Tigase_Tigase_Android_Messenger-General_overview.asciidoc │ Tigase_Tigase_Android_Messenger-User_guide.asciidoc │ └─gradle └─wrapper gradle-wrapper.jar gradle-wrapper.properties
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值