同步操作将从 野火IM/WF-minio 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
野火Minio是基于最流行的开源对象存储服务Minio进行二次开发的,二次开发的内容仅涉及到与野火IM的对接。因此野火Minio可以按照原生Minio的使用和运维。但也有一些细微细节不同。首次部署需要进行配置,以后可以正常启动就行。野火Minio依赖于专业版,适合对安全性能要求很高的私有化部署,社区版不支持。
综上OSS服务需要能够获取到用户的密钥,用来解密客户端加密的信息。获取用户密钥是通过server api进行,也可以选择直接读取IM服务数据库。
OSS服务需要独立的公网IP。客户端上传下载都是与OSS服务进行直接连接,不经过IM服务器,如果想要好的体验,需要保证一定的带宽。OSS服务如果通过server api与im服务交互,需要确保服务的连通性,如果通过访问IM数据库的方式,需要确保能够读取IM数据库,可以限制除了需要的端口以外的所有出访。OSS服务需要限制除80以外的所有入访。
如果已经部署需要按照升级步骤进行。升级方法:
~/.minio
和${minio_data_path}/.minio.sys
目录。备份旧的程序文件。启动野火IM服务,创建数据库,后面Minio需要用到野火IM的数据库
## minio-data 为数据目录,需要运行前创建好,且具有读写权限。
minio server /minio-data
运行成功后会有如下的提示
Endpoint: http://10.255.20.59 http://127.0.0.1
Browser Access:
http://10.255.20.59 http://127.0.0.1
Object API (Amazon S3 compatible):
Go: https://docs.min.io/docs/golang-client-quickstart-guide
Java: https://docs.min.io/docs/java-client-quickstart-guide
Python: https://docs.min.io/docs/python-client-quickstart-guide
JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
.NET: https://docs.min.io/docs/dotnet-client-quickstart-guide
如果没有可执行权限,使用
chmod a+x minio
来添加可执行权限。由于需要用到80端口,在linux机器上使用root权限,使用root
用户或者sudo
命令来运行。可能会提醒密码简单需要修改初始密码。
mc
工具。增加可执行权限,然后执行下面语句为Minio服务设置别名./mc config host add myminio http://47.52.118.96 minioadmin minioadmin
不需要在Minio服务所在的机器上运行,可以远程。另外
myminio
是服务的别名,可以任意起名,后面需要用到,如果在一台电脑操作多个minio服务,注意别名不要重复
最后两个参数为AK/SK,需要使用正确的值,第二步启动的控制台日志中会有。
OSS服务有两种方法获取用户的密钥用来加密,一种是通过server api,在2020.7.29号之后的专业版本都支持,建议用这种方法:
./mc admin config set myminio WFChat IMAdminUrl=http://${im_server_address}:18080/admin/minio/sk IMAdminSecret=${im_server_admin_secret}
IMAdminUrl是server api地址,需要确保minio服务与IM服务管理端口的连通性。18080是默认的管理端口,如果修改过这里也需要对于修改。IMAdminSecret为server api的密钥。
如果IM服务是2020.7.29号之前,只能支持读取IM服务的数据库获取用户secret,而且数据库只能用mysql,别的数据库都不支持。请使用下面配置
./mc admin config set myminio WFChat DefaultSecret=00,11,22,33,44,55,66,77,78,79,7A,7B,7C,7D,7E,7F MySQLAddr=192.168.1.100:3306 MySQLDB=wfchat MySQLUserName=root MySQLPassword=123456
DefaultSecret
需要配置IM服务参数client.proto.secret_key
相同的值,必须保存默认不变。
MySQL的地址正确配置就行。注意与野火IM MySQL配置的格式不通,保持当前这种格式。正确配置mysql的地址,数据库名称,用户名和密码。
如果IM服务使用国密加密,需要执行下面操作开启国密加密。注意只有特殊客户才配置此项,普通客户请忽略此配置。
./mc admin config set myminio WFChat SM4Encrypt=on
如果要关闭,on改成off就可以了
重启服务,好让设置生效,必须重启才行。使用如下命令重启
./mc admin service restart myminio
用浏览器打开http://47.52.118.96
(这里作为示例,实际使用时请换成客户服务的外网IP),如果是升级部署可以看见之前存在的bucket,内部数据都存在,不用再创建bucket,如果是首次部署则为空。点右下角的+
,选择创建bucket,创建2个bucket,如下图所示:
设置权限,点击bucket右侧的菜单按钮,选择Edit policy
,弹出如下图界面,选择Add
添加如下,注意升级部署也需要再次设置
野火IM的配置请参考专业版野火IM部署说明,更改完配置后重启。
##存储使用类型,0使用内置文件服务器(仅供用于研发测试),1使用七牛云存储,2使用阿里云对象存储,3野火私有对象存储
##除了内置文件服务器外,其他对象存储服务需要设置上传需要鉴权,下载不需要鉴权模式。下载的安全性在于生成对象的key为uuid,无法被穷举。
media.server.media_type 3 ##这里改成3
## minio服务地址,要求是公网地址
media.server_url http://47.52.118.96
media.access_key 0M7YVO70QPKBPWBZW5FW
media.secret_key ZrBsSST++1Qjap+Nfs3P2BujHCHDuqrsrYi0zNn8
## bucket名字
media.bucket_general_name media
## domain为minio服务器地址/bucket名字。不是服务器地址/minio/bucket名字,如下所示
media.bucket_general_domain http://47.52.118.96/media
media.bucket_image_name media
media.bucket_image_domain http://47.52.118.96/media
media.bucket_voice_name media
media.bucket_voice_domain http://47.52.118.96/media
media.bucket_video_name media
media.bucket_video_domain http://47.52.118.96/media
media.bucket_file_name media
media.bucket_file_domain http://47.52.118.96/media
media.bucket_sticker_name media
media.bucket_sticker_domain http://47.52.118.96/media
media.bucket_moments_name media
media.bucket_moments_domain http://47.52.118.96/media
media.bucket_portrait_name storage
media.bucket_portrait_domain http://47.52.118.96/storage
media.bucket_favorite_name storage
media.bucket_favorite_domain http://47.52.118.96/storage
上述参数为示例参数,请替换为客户对应的参数。
bucket media/storage为示例,客户实际使用时可以使用不同的名称。但至少要创建2个用来存储长期保存和短期保存的媒体文件,建议为上述7类每类创建一个bucket。
上传必须支持http上传(我们已经加密过了),因此
media.server_url
必须是http的,media.bucket_XXXX_domain可以增加https的支持。
如果是升级,需要确认AK/SK是否变动,如果改变了,需要同步修改
验证上传下载是否正常。
配置域名解析到minio服务器,然后IM服务配置文件中的IP替换成域名。这样如果以后迁移存储服务也不会有问题。
只有部署集群后,才可以提供高可用,当少于一半的存储磁盘损坏也不会丢失数据。具体部署方法请自行查找Minio官方文档。
上传必须是http,http method是put
。可以下载配置为https。首先用如下命令启动,更换minio服务的端口为9000
./minio server --address 47.52.118.96:9000 /minio-data
然后配置nginx,反向代理到80端口,配置证书,使其能够同时支持HTTP/HTTPS双栈,注意转发时要把http header
都带上。
最后就是修改配置文件media.server_url
保持不变,media.bucket_XXXX_domain
改为https对应地址。
如果客户比较多,且全国甚至全世界分别比较广,使用dns能够提高下载速度,提高用户体验。可以对下载进行dns加速,然后正确配置media.bucket_XXXX_domain
。
这是因为nginx默认不能发送大文件,请把最大文件限制改为2G,最大超时时间改为60分钟。如下所示:
#上传文件大小限制
client_max_body_size 2048M;
#设置为on表示启动高效传输文件的模式
sendfile on;
#保持连接的时间,默认65s
keepalive_timeout 3600;
检查日志异常调用栈中是否有wfchat.getUserSecret
字段。如果有则说明是minio调用im服务获取用户密钥失败,检查minio服务是否可以访问im服务的管理端口(默认是18080),管理密钥是否正确等。
header中带有用户id信息,这样minio可以查找到对应用户id的密钥,用来解密上传的内容。请确保转发时带上所有header,下面为参考配置 :
location / {
proxy_set_header Host $http_host;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://minio_cluster;
}
IM服务内默认使用的region是us-east-1
,是默认的minio的region,请使用这个默认的region,不能修改为其他值。这个值实际使用上没有其他的意义。
感谢Minio提供如此棒的开源产品
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。