OpenIMServer 与 ChatServer 生产环境源码部署(单机)
一、环境及组件要求
OpenIMServer 与外部组件部署在同一台机器上,部分组件可按需使用云服务。
- 环境要求请先参考:平台及组件要求
二、获取 OpenIMServer 并部署依赖组件
建议通过仓库拉取并切到 GitHub Releases 页面绿色 Latest 对应的最新正式发布 tag。
git clone https://github.com/openimsdk/open-im-server && cd open-im-server
git fetch --tags
LATEST_STABLE_TAG=$(basename "$(curl -fsSLI -o /dev/null -w '%{url_effective}' https://github.com/openimsdk/open-im-server/releases/latest)")
git checkout "$LATEST_STABLE_TAG"
echo "using open-im-server stable release tag: $LATEST_STABLE_TAG"
这里的 latest 指 GitHub Releases 页面绿色 Latest 的正式发布版,不包含 alpha/beta/rc 等预发布版本。
main为开发版分支,生产环境不要直接使用main。
注意:后续所有命令都在 OpenIMServer 项目根目录执行。
2.1 部署外部组件(Docker Compose)
确保 docker 和 docker compose 已可用。
- 如果本机已部署
mongodb/redis/kafka/minio/etcd中一个或多个组件,或计划改用云服务(etcd不支持云服务),可在docker-compose.yml注释对应组件。 - 强烈建议修改
docker-compose.yml里的默认账号和密码。
| 组件 | 在 docker-compose.yml 中的位置 |
|---|---|
| MongoDB | MONGO_INITDB_ROOT_USERNAME MONGO_INITDB_ROOT_PASSWORD MONGO_OPENIM_USERNAME MONGO_OPENIM_PASSWORD |
| Redis | redis-server --requirepass ... |
| MinIO | MINIO_ROOT_USER MINIO_ROOT_PASSWORD |
| Etcd | ETCD_ROOT_USER ETCD_ROOT_PASSWORD(启用鉴权时) |
| Kafka | KAFKA_USERNAME KAFKA_PASSWORD(启用鉴权时) |
- 修改
.env中的DATA_DIR,指向大磁盘目录用于外部组件数据存储。 - 执行以下命令部署外部组件:
docker compose up -d
当前
open-im-server/docker-compose.yml除外部组件外,还会一并拉起openim-web-front、openim-admin-front。如果你当前只想部署依赖组件,可以按需调整 compose 文件后再启动。
2.2 自行部署组件或使用云服务时的初始化要求
| 存储组件 | 初始化要求 |
|---|---|
| MongoDB | 预先创建数据库:openim_v3 |
| Kafka | 预先创建 4 个 topic:toRedis toMongo toPush toOfflinePush,每个 topic 设置 8 个分区 |
三、部署 OpenIMServer
确保 Go 已正确安装。
bootstrap.sh会尝试自动安装mage,但前提是系统里已经有可用的go命令。因此如果go version不通过,后续bash bootstrap.sh、mage都无法执行。