上线必须要做的事情

通过快速开始可以看出,野火IM是非常容易运行的,但是离系统最优化还是有一定的距离,还需要详细的配置和优化,这里就统一说明一下:

1. IM服务

  1. IM服务除了配置外,不要修改任何代码,如果修改了我们就不提供任何的技术支持了,因为我们不了解您修改的内容,所以就无法技术支持。
  2. 建立测试环境。野火IM是在不断的升级和完善中的,如果发现问题或者添加新功能,不能直接上线,需要先在测试环境跑通后再上生产环境。
  3. 升级时要选择业务低峰期,数据库要备份,以便于出现问题能够及时回滚。
  4. 升级时要注意migrate文件夹,这里面是数据库版本管理sql,一定要更新,注意程序会自动执行脚本,不需要手动执行,只需要更换这个文件夹就可以了。其它配置文件也要对比变化。
  5. IM服务要单独部署,不要和其它混合在一起。服务器要选择大内存的,因为野火IM缓存内容很多。
  6. 社区版不要使用nginx,IM服务的长短连接逻辑比较复杂,使用nginx很容易出问题。如果使用了nginx,我们不会进行技术支持。专业版可以按照专业版的说明文档使用nginx。
  7. IM服务的端口要对外开放80,1883,8083和8084(8083和8084是web用的,如果没有web可以不开放)的入访访问权限。18080端口对应用服务开放入访访问权限。出访权限只保留IM服务器需要出访的地址,比如推送服务,消息转发服务,机器人服务等,其余全部关闭。
  8. IM服务数据库不能使用H2,要切换成MySQL或其他关系型数据库。如果是专业版且预计未来业务量很大,需要启用mongodb。见如下配置
    ## 数据库类型。0 mysql;1 h2db;2 mysql+mongodb;3 kingbase-v8;4 dameng;5 sql server;6 postgresql;7 shentong。
    embed.db 0
    
  9. 数据库要使用独立数据库,不要跟IM服务放置在一起(要注意IM服务与数据库服务器直接的ping值,如果过大还是放回一起吧),另外业务量大时数据库要使用SSD硬盘。如果业务压力非常大,数据库支撑不住,可以考虑升级到专业版。
  10. 数据库需要调优的,不能直接使用默认配置。可以百度一下MySQL参数调优。数据库的使用主要是写操作,读的较少(使用缓存缓存了大量的内容,只有服务启动时读取才比较多)。
  11. 对象存储不要选择内部文件服务器。内部文件服务器不具备正常商业对象存储的基本功能,仅仅是建议在开发时使用。上线要换成七牛云对象存储。如果是专业版还可以选择野火定制的私有存储Minio或其他更多主流云平台存储。另外就是使用七牛要自己购买服务,不要用我们提供的默认配置。
    ##是否使用七牛云存储。1使用七牛,0使用内部文件服务器,2使用阿里云对象存储,3野火私有对象存储,4对象存储网关,5腾讯云存储,6华为云存储, 7AWS S3。
    media.server.use_qiniu 1
    
  12. server.ip要改成域名,这样以后要是更换服务器,平滑更换。

  13. IM服务的Server API密钥要修改默认值

    ##服务器管理接口密钥 上线前要修改
    http.admin.secret_key 123456
    
  14. Server API请求时不检查时间参数功能要关闭,这个是为了调试方便用的。

    ##这个地方上线前要改为false
    http.admin.no_check_time true
    
  15. 生成token的密钥要更改

    ##用来生产im token的私钥,只在服务器使用,客户端不用。正式使用时为了安全一定要修改这个值,切记切记
    token.key testim
    
  16. 日志使用了log4j2,如果遇到业务压力较大,可以修改配置,提高日志效率。

  17. 对象存储下载支持https,配置文件中配置bucket domain为https格式

    media.bucket_XXX_domain https://47.58.66.148/media
    //或
    qiniu.bucket_XXX_domain https://cdn.domain.com
    
  18. 启动脚本 wildfirechat.sh 里需要配置JVM最大最小内存,请配置为您期望的大小。

    echo "请设置JVM参数Xmx和Xms!!!"
    JAVA_OPTS="$JAVA_OPTS -Xmx24G"
    JAVA_OPTS="$JAVA_OPTS -Xms24G"
    

2. 应用服务

如果要使用我们提供的应用服务,需要检查以下:

  1. 在配置文件中修改登录欢迎语言
  2. 配置短信,代码已经支持腾讯云和阿里云短信,后台开通短信配置就可以使用,如果是其它供应商需要二次开发
  3. 切换h2数据库到mysql或其他关系型数据库,注意不能用IM的数据库,需要另外创建一个应用服务的数据库。可以使用同一个数据库服务器。
  4. 应用服务使用了shiro鉴权组件,鉴权信息存储在数据库中,如果业务量比较大,建议引入RedisSessionDao。详情可以参考项目的readme。
  5. 调整用户名和用户昵称的生成方式,默认的方式不一定适合。
  6. 使用nginx,支持HTTPS,比如我们的demo可以使用 https://app.wildfirechat.net(demo也同时支持 http://wildfirechat.net:8888 是为了便于客户端快速开始使用,正式上线建议不要支持http,强制只支持https)。
  7. 调通客户端日志上传功能,如果应用使用了nginx,需要配置最大上传文件大小,日志文件最大可达50MB。
  8. 去掉super code或者设置为复杂密码。

如果使用自己的应用服务,需要实现以下

  1. 调通客户端日志上传功能。
  2. 支持群公告功能
  3. 如果使用了web,小程序或者pc,需要增加web和pc登录相关逻辑,可以参考demo的实现。
  4. 如果使用了小程序,需要支持amr与mp3互转功能,可以参考AudioController文件

3. 推送服务

调通所有厂商的推送功能,具体请参考push-server

4. TURN服务

使用音视频功能就要部署TURN服务(音视频高级版不需要),不要使用我们提供的demo,需要自己搭建。

  1. TURN服务必须通过音视频文档上的测试要求,出现relay的公网ip,且没有错误提示。
  2. TURN服务必须开通3478的TCP和UDP端口。另外还要开通媒体流使用的UDP端口,默认全开,也可以在TURN配置文件中指定范围,但至少要有1W个。
  3. TURN服务对CPU的压力很小,可以较低配置。但对带宽要求较高,使用固定带宽的服务太贵,可以使用按流量计费的服务,使用高带宽。
  4. 如果客户分散多地,且互相直接网络连接较差,可以部署多个turn服务来改善音视频质量,选择的服务器对所有人都网络友好的网络。

5. 客户端

  1. 配置IM HOST,要使用域名,域名格式为im.example.com,其中域名可以对应不同的环境,比如im对应线上,imtest对应测试环境,imdev对应开发环境等。
  2. 配置应用服务,需要切换成https的
  3. 配置turn服务,这个一定要换成你们自己部署的,因为我们提供的demo只有1c1g1m,无法支撑商用。
  4. 客户端如果是在我们的基础上二次开发,所有改动建议做好标记,以便未来同步代码。通用的修改可以给我们提PR
  5. 妥善保管好token,android默认保存在SharePreference,iOS默认保存在NSUserDefault里,安全等级不高,建议保存在更安全的地方,且加密保存。
  6. 当连接状态变为keymismatch,tokenincorrect或者logout时一定要跳出到登录界面。
  7. 应用启动后只能调用一次connect,不能多次调用。每次调用会关闭打开数据库,如果这时协议栈正在做数据库操作就会出现崩溃。协议栈会处理好连接状态的,包括自动重连,前后台切换等。
  8. 调通客户端日志上传功能,这样当客户出现问题时,可以让客户点击上传日志,自己可以来分析日志或者发送给我们分析。

6. Web

  1. 使用HTTPS,增加安全性
2018 © wildfirechat.net 京ICP备18060403号-1 all right reserved,powered by Gitbook该文件修订时间: 2024-10-01 07:37:49

results matching ""

    No results matching ""