目录
1 系统 框架
文件服务器 (UFS) 的基本功能是实现文件的上传、下载、查询、删除等基本文件存储操作,U FS 在实现基本存储功能 的 同时,关注如何高效、可靠的管理文件来满足业务的需求,其系统框架如图1 -1 所示。
图 1 ‑ 1
1.1 高效性
UFS是基于元数据来管理文件及其版本信息,同时支持扩展文件的元数据信息,方便业务系统定制查询策略。文件的元数据信息一般存储在关系数据库中,通过元数据可以有效的定位真实的物理文件。
1.2 安全性
UFS支持加密和压缩存储,文件的存储是否使用加密和压缩可以设置所使用Bucket(同模块)的属性,此外UFS还可以对远程的访问用户进行安全校验,防止其恶意访问文件服务器。
1.3 可靠存储
UFS支持多种存储模式,满足不同的业务场景,包括磁盘存储、FTP存储和默认存储(MongoDB ) 。为了满足文件存储 的 可靠性要求,默认配置 为默认存储 ( MongoDB )作为文件的存储模式。
2 部署 方案
UFS支持独立部署,实施人员可以将其与应用服务器一起部署,也可以分开部署。
2.1 集中 部署
集中 部署情况是 UFS Server和NC Server部署在相同的机器中, 如图2 -1 所示。若是单机则UFS配置为本地的信息即可;若是集群环境则需要选定一台机器作为UFS的服务端,而其他节点相当于是UFS的客户端。
图 2 ‑ 1
2.2 独立 部署
独立 部署 ( 图 2-2 ) 支持 以独立的文件存储集群 对外 提供存储服务, 文件 的存储支持集中存储 和第三方 文件系统 存储 。
图 2 -2
3 sysConfig 配置
3.1 服务器配置
服务器配置协议类型,可选 http 和 https 两种,配置 https ,需先配置 http 协议,而且需要输入证书密码。 I p 地址和端口和服务器的 ip 和端口。
图 3-1
3.2 文件服务器配置
文件服务器配置,包括基本文件服务器的配置信息, ip 端口等。同时包括存储模式的配置。下拉框可以选择不同的存储模式(磁盘存储, MongoDB 存储, Ftp 存储)进行配置,各模式详细配置请参看 4.1 节。
图 3-2
4 管理控制台
sysConfig 里可以配置 文件服务器 的配置选项,65版本中,保留sysConfig配置的同时,将 此功能 同步 到页面 的管理控制台中 , 使用 与配置更加方便 快捷,这两处的配置是一致的 。
UFS Web 管理控制台访问地址: http://{IP}:{PORT}/fs/console.html
图 4 -1
登录的用户名和密码是相应 http://{IP}:{PORT}/admin.jsp 具有超级管理员权限 的用户名和密码 ( 如 root , super ),当密码 为空时,无法登陆 , 需 登陆 http://{IP}:{PORT}/admin.jsp 修改 相应 用户密码后再 登录。
4.1 服务配置
UFS 支持三种 存储 配置方式,分别为 默认 存储 (MongoDB存储)、 磁盘存储 和 FTP存储 ,在正式使用系统之前需要选定一种存储模式并 对其 正确 配置 ,为了有更好的性能和安全性,推荐使用MongoDB存储模式。 需要注意 配置 初始化后不可 再次 修改 ,否则 会导致 之前 上传的文件无法下载。
4.1.1 默认 存储 配置
图 4 -2
服务配置 :
服务器 IP 地址:环境 IP
服务器 端口:环境端口
元数据 仓库:即从 uap_home\ierp\bin\prop.xml 中读取的数据源
启用 安全访问:是否 使用 https 协议
MongoDB 存储配置 :
独立部署:
IP 地址: Mongo DB 所在 IP
端口 : Mongo DB 的 端口
数据存储目录 : Mongo DB 文件夹 的上层目录 。 Mongo DB 仅 支持 windows 和 Linux 操作 系
统,不支持 Sparc 和 AIX 操作 系统。
存储 服务状态: Mongo DB 的 状态 ,点击刷新按钮,即可看到服务是否在运行 。
注意事项:
1 、 Linux 启动 Mongo DB 时首先要给可执行权限 。
图 4-3
2 、在 Mongo DB 服务器能查看到进程:
图4-4
3 、 可以通过搭建 MongoDB 集群环境,进一步提高文件存取效率。
图4-5
4.1.2 磁盘 存储配置
图 4 ‑ 6
服务配置 :
服务器 IP 地址:环境 IP
服务器 端口:环境端口
元数据 仓库:即从 uap_home\ierp\bin\prop.xml 中读取的数据源
启用 安全访问:是否 使用 https 协议
磁盘 存储配置:
存储 路径:上传 的 文件存储路径。要保证 此 目录在服务器上存在。
4.1.3 FTP 存储 配置
图 4 ‑ 7
服务配置 :
服务器 IP 地址:环境 IP
服务器 端口:环境端口
元数据 仓库:即从 uap_home\ierp\bin\prop.xml 中读取的数据源
启用 安全访问:是否 使用 https 协议
FTP 存储 配置:
IP 地址: FTP 服务 的 IP 地址
端口 : FTP 服务 的 端口
用户名 : FTP 服务 的用户名
密码 : FTP 服务 的密码
传输 模式: Binary (建议 使用 Binary ,否则会丢失数据)
配置好基本信息后可以对服务配置的 IP 和 PORT 进行链接测试,即点击页面上的测试按钮来进行测试,若测试通过则表示可以与远程文件服务器建立网络链接。
图 4 ‑ 8
配置好文件的各项信息后需要通过“保存”或“集群同步”将配置的信息保存到服务器上,在保存完信息后需要重启服务才可使配置信息生效。
4.1.4 配置 文件
UFS 配置文件 路径 : {uap_home} /ierp/sf/ufsconfig/ufs.properties 。配置文件内容与界面内容保持一致。
4.2 模块 管理
4.2.1 模块简介
文件服务器中的模块,可以理解成一种命名空间 (Bucket) ,上传文件时指定模块,文件会存储到模块对应的存储路径下;下载文件时指定模块,服务器会去模块对应的存储路径下取文件下载。模块管理提供一个默认的模块—— default( 默认 ) ,上传和下载不指定模块 bucket 时,使用默认的模块配置。
默认模块的加密、压缩和访问控制属性都是不启用的, NC 通用场景下,建议采用默认设置即可,无需关心模块设置。但如果对文件安全性要求比较高,比如想对文件做加密,压缩处理时,可以通过添加一个新的模块,配置加密、压缩属性,然后上传到新增的模块即可。另外,如果通过 SDK 方式访问文件服务器,并且需要增加访问控制时,需要配置模块,并将模块的密钥作为 SDK 接口的参数使用。
4.2.2 查询模块
点击左侧模块管理,会列出所有模块信息。
图4-9
4.2.3 添加模块
点击添加模块按钮,可以增加新的模块,模块名称不允许重复。
图 4-10
4.2.4 修改模块
点击模块列表中的编辑,即可进入模块修改的页面,模块名称不支持修改。
图 4-11
4.2.5 删除模块
预置的模块不可以删除,模块下已有文件时,不允许删除。
图 4-12
4.2.6 属性介绍
1. 是否预置
是否预置属性可以取值为: Y(YES) 和 N(NO) 。 Y 代表是预置模块,一般通过数据库脚本添加预置模块。 N 代表非预置模块,通过管理控制台添加的模块都是非预置模块,预置的模块不可以删除,即使预置的模块下面没有任何文件。非预置的模块,如果下面不包含任务文件,是可以删除的。
2. 是否加密
是否加密属性可以取值为: YES 和 NO 。 YES 代表启用加密,当上传文件到该模块下时,文件内容会被加密处理,也就是说存储在文件服务器上的文件是经过加密的,一般对文件安全性要求比较高的场景,建议启用加密属性。
注:如果存储方式是 FTP 存储,则此处的加密属性不会生效,文件不会被加密处理。
- 是否压缩
是否压缩属性可以取值为: YES 和 NO 。 YES 代表启用压缩,上传文件到该模块下时,文件内容会被压缩处理,存储在文件服务器上的文件时压缩后的文件,一般在文件比较大时,建议启用压缩属性,可以减少文件在服务器端占用的空间。
注:如果存储方式是 FTP 存储,则此处的压缩属性不会生效,文件不会被压缩处理。
- 访问控制
访问控制属性可以取值为: YES 和 NO 。 YES 代表启用访问控制,启用访问控制后,服务端会对请求进行校验,包括请求参数,签名等,校验不通过,请求会被拒绝。访问控制与密钥是配合着使用的,下面会详细介绍密钥。
- 密钥
密钥是配合着访问控制使用的,在访问控制被启用之后,密钥会自动生成,可以通过查看连接,查看对应的密钥,密钥可更新。启用访问控制后,客户端上传、下载文件时,需传入相应模块对应的密钥,如果密钥设置不对,请求访问不会通过,上传、下载失败。
4.3 日志监控
4.3.1 访问日志
访问日志可以选择是否启用,勾选启用并保存及开启访问日志功能。启动访问日志后文件服务器会记录链接文件服务器的请求信息。请求信息主要包括:客户端 IP 、登录的用户名、操作类型、请求的 URL 、对应操作的文件内容、操作开始时间和操作结束时间。
图 4-13
访问日志可以用于查看每次用户访问文件服务器的具体操作信息 ,在上图 3-13中日志信息主要是本地上传附件到 “test” 模块下。访问日志记录数过多可以点击 “ 清空 ” 按钮进行清空数据操作,还可以根据指定的条件刷选日志信息。
图4-14
可用 的过滤条件:
client= 127.0.0.1
requestUser= #UAP#
operType= POST
requestURL= /fs/service/test/files
content= test#c7a39695-0f12-4979-a9c8-cf1e9f93e491
startTime= 2015-09-25 14:03:02
endTime= 2015-09-25 14:03:03
4.3.2 执行日志
当 UFS 功能出现异常时,可以通过执行日志来查看具体的日志信息,进而排查错误 。执行日志的功能是将后台日志文件的最新内容显示在页面上,方便远程查看 错误信息。执行 日志中默认最多加载最新的 500 行日志内容。在加载的日志中可以通过搜索 “@UFS” 字符串 来快速定位文件服务器的错误信息。执行日志默认加载的是文件服务器专有的日志文件 /nclogs/server/uapfs.log ,若该文件不存在则加载 /nclogs/server/nc-log.log 。执行日志可以 按行数过滤,所输入的行数为日志文件的最后的 N 行,输入的函数需要小于 500 ,大于 500 时候只会显示最新的 500 行的内容 。
图 4-15
4.4 导入/导出
为了备份文件,文件服务器提供文件的导入 / 导出支持,将文件服务器上的文件导出到指定目录,也可将指定目录的文件导入到文件服务器。
4.4.1 导出
导出操作,会导出文件以及相应的元数据。可以设置如下几个属性:开始时间,结束时间,所属模块,导出目录。
1) 开始时间,结束时间:在开始时间和结束时间内上传的文件。
2) 所属模块:限定文件的所属模块。
3) 导出目录:是指导出后的文件的存储目录,注意,是服务器上的目录,不是本地的。
这几个属性都不是必填项,全不填会导出所有的文件。导出的文件后缀为 .xsf 。
图 4-16
4.4.2 导入
将导出的文件,导入到服务器。只需要设置导入的目录即可,会遍历目录下所有支持的导入文件类型, .xsf 后缀。
图 4-17
4.5 版本升级
版本升级,支持将文档中心中的文件升级到文件服务器中。升级有如下几个可选项,含义如下:
开始时间:该时间节点之后的文件,会升级到文件服务器
结束时间:该时间节点之前的文件,会升级到文件服务器
元数据数据源:文档中心文件元数据存储数据源
存储数据源:文件服务器文件元数据存储数据源
图 4-18
4.6 诊断
UFS2.0 提供了诊断功能, 该功能是在正确配置文件服务器的前提下用于测试文件服务器的文件上传、下载等功能是否可用。
图 4-19
通过左面的导航菜单进入诊断界面后可以看到有三项诊断功能,分别是:文件上传、文件下载和文件删除操作的测试。三项的诊断测试是顺序执行,即现上传文件,然后对该文件下载,最后将上传的文件上出,每一项的操作不管成功与否都会有详细的提示信息。
4.6.1 上传
上传过程是先生成一个文本文件,然后将该文件上传到文件服务器,文件上传成功会看到成功的提示信息,主要信息包括:文件通过 Http 还是 Https 协议进行传输的,上传到文件服务器之后存储在磁盘、 FTP 服务器还是 MongoDB ,以及文件的逻辑路径和文件的大小。
图 4-20
在文件上传过程出现错误,会给出具体的错误信息。若服务端报错会提示:“上传文件时出错, 请查看日志信息 ”; 若是客户端报错会给你明确的提示。
图 4-21
4.6.2 下载
只有在上传成功之后才可以进行下载操作, 若下载文件成功则会看到下载的文件大小和文件的内容。下载和上传操作的是同一个文件, 所以文件大小要一致。
图 4-22
同样在下载过程出错的话会给出明确的错误信息。
图 4-23
4.6.3 删除
为了避免每次诊断测试产生无用的数据记录, 在上传完文件之后都对该文件进行删除操作, 只有这三项测试全部通过的时候才表示文件服务器的基本服务是可用。
图 4-24
5 常见问题
1、附件具体存储位置
UFS 2.0支持三种模式的附件存储: 磁盘存储、MongoDB存储和FTP存储。 在不同存储模式中附件的存储具体位置可以查询bap_fs_body表得到。
查询SQL: select storepath from bap_fs_body
磁盘存储
附件存储在sysConfig中配置的“存储路径”下,如 :
D:/fs /test/dst_0/xko_1/1441000320817_1MBzhongwen.file
MongoDB存储
附件存储在MongoDB数据库中,可以使用document的_id查找具体的附件( BSON 格式存储) 。 查询:db.uapattachroot.find({'_id':'55dc2e64fdba9d7fef76d799'})
FTP存储
附件在FTP服务器上的存储目录是基于根目录的,如:
/FTP根目录 /test/ywz_0/vcy_1/1441000440010_1MBzhongwen.file
2、文件名长度过长导致附件上传失败
数据库中文件名字段 ( name ) 长度定义为 varchar(100) ,文件名的字符长度超过 100 时无法保存到数据库 。
解决 :
1 )保证所上传文件名的字符长度在 100 之内;
2 )将数据库 bap_fs_header 表中 name 字段长度调整为文件中文名长度× 3 ,
SQL : alter table bap_fs_header modify (name varchar(300));
3、UAP63升级UAP65时 历史 附件 无法 查看
UAP63 和 UAP65 文件服务器定义的元数据表存在结构差异,在做升级的时候升级程序会自动处理表之间的差异。升级完成后验证数据库保证以下两点:
1 ) bap_fs_body 中 version 字段默认值为 1 ,且不存在 null 值
2 ) bap_fs_header 中历史数据的 fileVersion 字段值为 1
4、 磁盘存储模式文件存储路径调整
文件服务器在应用一段时间后可能出现需要更改附件存储根目录的需求,存储路径的更改需要做以下的操作:
1)修改配置, 将旧的存储路径( C:/fs )改为新的存储路径( D:/fs/disk )
图 5-1
2)拷贝文件,将 C:/fs /* 下的所有文件拷贝到新目录 D:/fs/disk 下
3)执行 SQL 更改数据库中的数据。
update bap_fs_body set storepath=replace(storepath,' C:/fs ',' D:/fs/disk ') where storepath like ' C:/fs ';
文件服务器独立部署时需要在应用端配置 “ 服务器 IP 地址 ” 、 “ 服务器端口 ” 和 “ 是否启用安全访问 ” ,在使用 HTTPS 协议时端口配置 HTTPS 对应的端口,并勾选启用安全访问。
图 5-2
配置好文件服务器附件上传依然失败请检查证书密码是否配置,默认为: yonyouserver 。
图 5-3
例 : MongoDB 集群环境信息如下表所示:
表 5-1
|
IP 地址 |
端口 |
M aster |
20.12.9.97 |
27017 |
S lave |
20.12.9.87 |
27017 |
A rbiter |
20.12.9.81 |
27017 |
|
|
|
配置文件服务器:
由于 MongoDB 是独立部署的集群,所以在文件服务器中需要勾选独立部署。 IP 地址配置 MongoDB 集群节点的 IP ,各 IP 之间用 ”;” 分割,端口配置 MongoDB 集群节点所启用的服务端口,端口之间同样用 ”;” 分割,需要保证 IP 和端口的配置顺序是对应的。
图 5-4
Attachments:
文件服务器操作手册_UFS2.0(UAP65) .docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)