2025服务端java搭建篇:蜻蜓I即时通讯系统私有化部署深度指南-优雅草卓伊凡|麻子|贝贝
前言
蜻蜓I即时通讯系统是一款不依赖第三方服务的私有化即时通讯解决方案,本指南将详细介绍如何使用宝塔面板在CentOS系统上完成系统的完整部署。私有化部署意味着您可以将整个系统部署在自己的服务器上,完全掌控数据安全和系统运行。
系统架构概述
环境准备
1. 服务器连接工具 - FinalShell
FinalShell是一款功能强大的SSH工具,用于连接和管理Linux服务器。
作用:
- 提供图形化界面操作服务器
- 支持文件上传下载
- 支持多会话管理
配置步骤:
- 下载安装FinalShell
- 添加服务器连接:
-
- 名称:自定义标识
- 主机:服务器IP地址
- 端口:SSH端口(默认22)
- 用户名:root
- 密码/密钥:服务器认证方式
2. 服务器基本要求
组件 |
最低要求 |
推荐配置 |
CPU |
2核 |
4核及以上 |
内存 |
4GB |
8GB及以上 |
磁盘 |
50GB |
100GB SSD |
系统 |
CentOS 7.x/8.x |
CentOS 8.x |
宝塔面板安装
安装命令详解
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
命令分解:
yum install -y wget
:安装wget下载工具wget -O install.sh http://download.bt.cn/install/install_6.0.sh
:下载宝塔安装脚本sh install.sh ed8484bec
:执行安装脚本,ed8484bec为安装验证码
安装后操作:
- 记录安装完成时显示的面板访问地址、用户名和密码
- 通过浏览器访问面板地址
- 登录后绑定宝塔账号(需注册)
基础环境配置
1. 软件安装
通过宝塔面板安装以下必要组件:
软件名称 |
作用 |
安装方式 |
Nginx |
Web服务器和反向代理 |
宝塔软件商店 |
MongoDB |
NoSQL数据库存储消息和用户数据 |
手动安装 |
Redis |
缓存服务,提高系统响应速度 |
宝塔软件商店 |
JDK 1.8 |
Java运行环境 |
手动安装 |
2. JDK环境配置
配置步骤:
- 上传JDK 1.8安装包到
/opt/java
目录 - 编辑
/etc/profile
文件,添加以下内容:
# Java环境变量配置
JAVA_HOME=/opt/java/jdk1.8.0_131
JRE_HOME=$JAVA_HOME/jre
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export PATH JAVA_HOME CLASSPATH
- 使配置生效:
source /etc/profile
- 验证安装:
java -version
预期输出应显示Java版本信息。
常见问题解决:
- 如果出现
bad ELF interpreter
错误,执行:
yum install glibc.i686
文件目录结构准备
1. 资源存储目录
mkdir -p /data/www/resources
cd /data/www/resources
mkdir audio avatar avatar/o avatar/t avatar_r avatar_r/o avatar_r/t gift image image/o image/t other preview temp u video
目录作用说明:
目录路径 |
存储内容 |
/data/www/resources/audio |
音频文件 |
/data/www/resources/avatar |
用户头像(原图) |
/data/www/resources/avatar_o |
头像缩略图(大) |
/data/www/resources/avatar_t |
头像缩略图(小) |
/data/www/resources/image |
聊天图片 |
/data/www/resources/video |
视频文件 |
2. 数据库目录
mkdir -p /data/mongodb
mkdir -p /data/mongodb/logs
服务部署与配置
1. 上传部署包
- 通过宝塔文件管理器上传
服务器部署包.zip
到/opt
目录 - 解压后目录结构应包含:
/opt
├── mongodb-3.4.0 # MongoDB服务
├── redis-4.0.1 # Redis服务
├── rocketmq-4.3.2 # 消息队列服务
├── spring-boot-imapi # IM核心API服务
├── tigase-server-7.1.3 # XMPP协议服务
├── shiku-push # 消息推送服务
├── message-push # 消息发送服务
└── upload # 文件上传服务
2. 配置文件修改
所有服务都需要修改配置文件中的IP地址为实际服务器IP:
服务名称 |
配置文件路径 |
关键配置项 |
IM-API |
/opt/spring-boot-imapi/application.properties |
server.address, mongodb.host |
消息推送 |
/opt/message-push/application.properties |
push.server.host |
XMPP服务 |
/opt/tigase-server-7.1.3-b4482/etc/init.properties |
—cluster-node-ip |
文件上传 |
/opt/upload/application.properties |
file.upload.url |
修改示例:
# 修改前
server.address=192.168.1.100
# 修改后(替换为你的服务器IP)
server.address=43.154.66.102
Nginx配置详解
反向代理配置
server {
listen 80;
listen 8094;
# 消息推送服务路由
location /mp {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8093; # mp-server端口
}
# 公共资源路由
location /public {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8093; # mp-server端口
}
# 默认路由到IM-API服务
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8092; # imapi端口
}
}
配置说明:
listen
:指定监听的端口proxy_set_header
:传递客户端真实IPproxy_pass
:将请求转发到后端服务- 通过不同
location
实现路由分发
服务启动顺序
正确的服务启动顺序对系统稳定运行至关重要:
详细启动命令
- 启动MongoDB:
cd /opt/mongodb-3.4.0
sh start
- 启动Redis:
cd /opt/redis-4.0.1
sh start
- 启动RocketMQ:
cd /opt/rocketmq-4.3.2
sh startSrv # 启动NameServer
sh startBroker # 启动Broker
- 初始化RocketMQ Topic:
```bash
注册推送消息Topic
sh bin/mqadmin updateTopic -n localhost:9876 -c DefaultCluster -t pushMessage
注册XMPP消息Topic
sh bin/mqadmin updateTopic -n localhost:9876 -c DefaultCluster -t xmppMessage
注册用户状态Topic
sh bin/mqadmin updateTopic -n localhost:9876 -c DefaultCluster -t userStatusMessage
5. **启动Tigase XMPP服务**:
```bash
cd /opt/tigase-server-7.1.3-b4482
sh start
- 启动IM-API核心服务:
cd /opt/spring-boot-imapi
sh start
- 启动消息推送服务:
cd /opt/shiku-push
sh start
- 启动消息发送服务:
cd /opt/message-push
sh start
- 启动文件上传服务:
cd /opt/upload
sh start
安全配置
1. 防火墙端口开放
在宝塔面板中开放必要的端口:
端口 |
用途 |
是否必需 |
80 |
HTTP访问 |
是 |
443 |
HTTPS访问 |
推荐 |
8092 |
IM-API服务 |
是 |
8094 |
备用API端口 |
可选 |
9876 |
RocketMQ控制台 |
可选 |
3306 |
MySQL数据库 |
如使用 |
27017 |
MongoDB |
如远程连接 |
2. 安全建议
- 修改默认SSH端口(22)
- 禁用root直接登录,使用普通用户+sudo
- 定期备份数据库和重要文件
- 配置HTTPS加密传输
后台管理系统访问
- 访问地址:
http://你的服务器IP:8092/pages/console/login.html
- 默认登录凭证:
- 用户名:1000
- 密码:1000
- 初始化配置:
-
- 修改系统名称、LOGO等基本信息
- 配置邮件服务器(如需要邮件通知)
- 设置客户端下载地址
常见问题排查
1. 服务启动失败
排查步骤:
- 检查服务日志(通常在服务目录下的logs文件夹)
- 确认端口是否被占用:
netstat -tunlp | grep 端口号
- 检查依赖服务是否正常运行(如MongoDB、Redis)
2. 无法访问后台
- 检查Nginx是否正常运行:
systemctl status nginx
- 检查防火墙设置
- 检查宝塔面板安全组设置
3. 性能优化建议
- 对于高并发场景:
-
- 增加RocketMQ内存配置
- 调整MongoDB连接池大小
- 优化Redis缓存策略
- 数据库索引优化:
-
- 为常用查询字段创建索引
- 定期执行数据库维护
系统维护
1. 日常维护命令
操作 |
命令 | |
查看服务状态 |
`ps aux |
grep 服务名` |
查看服务日志 |
| |
重启服务 |
|
2. 备份策略
- 数据库备份:
mongodump -h 127.0.0.1 -d 数据库名 -o /backup/mongodb
- 文件资源备份:
tar -czvf /backup/resources.tar.gz /data/www/resources
- 配置备份:
tar -czvf /backup/config.tar.gz /opt/*/conf
总结
本文详细介绍了蜻蜓I即时通讯系统的完整部署流程,从环境准备到服务配置,再到系统启动和维护。私有化部署虽然初期配置较为复杂,但能提供更高的数据安全性和系统可控性。建议在生产环境部署前,先在测试环境完整演练整个流程,确保所有服务能正常协同工作。
对于大规模部署,可以考虑将不同服务部署在不同服务器上,并通过负载均衡提高系统可用性。同时,建议建立完善的监控系统,实时掌握系统运行状态。