# 文档中台
# Docker部署操作手册
# 1. 部署说明
# 1.1 部署方式
通过执行命令方式进行文档中台服务部署;
# 1.2 环境要求
# 1.3 特别说明
1、Weboffice中台不支持在IPV6网络使用。
2、Weboffice中台和OA需在使用https和http保持一致,换言之,OA使用https则weboffice中台也需配置成https,若OA使用http访问方式,则weboffice也配置成http。
3、要使用Weboffice中台服务,必须确保客户端(即用户登录OA的电脑端)能访问到中台,M3手机端、微协同也一样,参考第6节关于weboffice外网访问的方案。
4、务必保证中台服务器时间同OA服务器一致。
# 2. 部署准备
# 2.1 下载部署包
下载地址:
Docker部署(x86版本):
下载链接:https://eyun.baidu.com/s/3oAhrZ9g 密码:TIcI
根据实际部署要求,OA是8.1版本需要部署5.1.6版本,下载如下部署包文件:
docker部署包:
release_kubewps_x86_v5.1.6.76_20210630.tar.gz
文档中台部署包:
release_docs_x86_v5.1.6.74_20210630.tar.gz
# 2.2 上传部署包
为避免权限类问题,建议使用root用户操作!!!
非root用户部署:
部署包kubewps的属主需要跟当前操作的用户保持一致,即用哪个用户做的上传,就用哪个用户进行部署操作,chown -R
将本地的部署包通过xshell中自带的xftp,上传至服务器。
进行md5校验
MD5码的值一样,才能进行部署操作。
- 解压文件,放入对应目录。
默认数据盘为date目录,需将文件解压至data目录
tar –zxf release_kubewps_x86_v5.1.6.76_20210630.tar.gz –C /data/
tar –zxf release_docs_x86_v5.1.6.74_20210630.tar.gz –C /data/kubewps/apps/
# 2.3 部署环境检查
进入相应目录,执行python脚本检查
cd /data/kubewps/checkEnv/
python run_envcheck.py -a docs
注意:首次部署检查应为全部通过,此图是已部署后的检查结果。
# 2.4 安装部署平台
安装容器化部署:
在/data/kubewps目录下执行 bash install.sh DIR ( DIR 是指配置的数据目录,默认为/data),并按要求输入yes/no。Yes为继续安装,如果数据目录不符合要求请输入no取消安装。如下图:
安装完容器化部署后,在服务端执行docker ps 查看目前运行的容器实例,必须有kubewps和kubewps_mysql容器。正确状态如下;
# 3. 命令部署
# 3.1 环境基础中间件部署
# 3.1.1 基础服务配置文件
我们在部署包conf/template/中提前准备部署模板文件,从在kubewps\kubewps.conf中,单节点部署选择对应节点数(即kubewps.1.wps)的模版文件覆盖部署包kubewps里的conf\kubewps.conf。这个模板文件在大部分场合下,只需要填写其中的 host 、choreography_mode即可。另外建议建议将es的memory改为2g。
# 3.1.2 查看命令帮助
进入kubewps
3.1.3 开始安装中间件
- 添加主机和选择部署产品类型
# 进入部署容器
kubewps
# 执行命令添加主机
wpscli host add
产品类型选择:docs
wpscli用户名密码:wpsadmin/Wps@123456(此为默认密码)
注意:首次安装会提示修改密码,后面所有操作以修改的密码为准。
# 2.环境检查
所有检查项的状态都必须显示通过,否则禁止执行后续步骤;
kubewps> wpscli env check
# 3.安装/卸载中间件
安装:kubewps> wpscli midware install all
卸载:kubewps> wpscli midware remove all
# 4. 添加存储
kubewps> wpscli storage add
# 3.2 weboffice业务应用安装
注:安装应用前请提前规划好网络,注意1.3的特别说明事项,是否需要将weboffice中台服务外网可访问,若需要参照第6节外网访问方案来配置app.conf,因为安装中台应用后更改app.conf配置,需重新安装生效。
1、修改apps/docs*/app.conf文件(必须做对应调整)
一般来说只需调整,developer_name和domain,若使用了Nginx代理则必须配置proxy_server为代理后的地址(具体Nginx配置见3.3说明),其余可默认。
特别说明:developer_name的值与许可码授权相关,请申请许可码时注意保持一致。
参考配置:
图中配置为主机ip和域名同时生效(即外部可分别使用ip和域名访问),如果使用了Nginx做https会话卸载,必须app.conf里指定代理地址,若安装后修改了app.conf的配置则需要重新安装weboffice应用生效。
将docs.
{
"developer_name": "服务商名称",
"namespace": "default",
"ext_hosts": [],
"test_enalbe": "false",
"domains":[{
"domain": "yun.test.cn",
"scheme": "http",
"port": "",
"path": "",
"encryption": "true"
}]
}
配置项:developer_name(最好使用英文)
<说明>:部署完成后初始化需要的名字,可以为中文或者英文,且不能为空。但正式部署前请务必想清楚服务商名称,因为一旦创建服务商,名称修改起来不方便;
配置项:ext_hosts
<说明>:用于在容器中添加hosts绑定,比如多存储的场景。如果存储为第三方存储绑定第三方存储的域名和ip;
配置格式样例:节点c绑定节点a、b“a.storage.wps.cn:192.168.0.1”,“b.storage.wps.cn:192.168.0.2”];
domains配置项:
"domains":{
"scheme": "http", // http\https
"domain": "", // 域名
"proxy_server": "", // 代理地址
"port": "", // 端口
"path": "", //路径
"encryption": "true" // 接口加密
}
<说明>:
Scheme:访问协议是http还是https,如果为https需要用户提供https相关证书;
domain:表示文档中台服务的域名;(不使用域名可使用ip)
proxy_server: 如果前端有代理服务器,需要填写代理服务ip,比如http://www.baidu.com或者https://www.baidu.com:8080,如果没有代理,请留空;
port: 端口
path:配置path路径方式(例:www.baidu.com/yun,只需要填写”/yun”);
encryption:网关层接口加密
< 注:如果需要用https,请提前让客户准备好https证书,要求泛域名证书(域名形如 *.wps.cn)。也可以通过运维工具生成。>
3、安装/卸载weboffice应用
安装:wpscli app install docs 5.1.6.xxx
卸载:wpscli app remove docs 5.1.6.xxx
<说明>:domain直接填写IP和域名,端口号不写就是默认80;
对照下图,如果状态一致,表示服务安装完成:
退出kubewps,直接执行docker ps
执行对照下图,如果状态一致,表示服务安装完成:
wpscli app show
# 3.3配置weboffice开发者接口
weboffice的上传下载功能,需要配置当前目录信息。
(1)连上中台服务器
kubewps容器中执行
获取默认信息备份,ip是中台的ip,端口2379
516版本需要先执行:export ETCDCTL_API=3
etcdctl --endpoints=10.3.4.86:2379 get /config/developer
(2)增加etcd.sh配置文件
然后,将获取到的信息拷贝出来,新增一个配置文件etcd.sh《etcd.sh》,把内容放到里面如下
#!/bin/bash
etcdurl=http://10.3.4.86 //改成客户环境的IP
etcdport=2379
etcdprefix="/"
export ETCDCTL_API=3
etcdctl --endpoints=$etcdurl:$etcdport put ${etcdprefix}config/developer '
//改成客户环境的配置
[[KeyConfig]]
AccessKey = "APP_form_test_0pmw29x"
SecretKey = "hztnsuTLj6Yy5PtA9Wer+VlGQ0tvRaxOko2bIHu1hiE="
[[KeyConfig]]
AccessKey = "AK20211108KSJUCZ"
SecretKey = "yLAYKYI9DV9MiWIOUkfhrW/EnPQnNsTF8XJfd7nWExSQtDfa1DxzR1U/MadfZKUd5wkIyQ6jfSPFowy0"
EncryptedSecretKey = "yLAYKYI9DV9MiWIOUkfhrW/EnPQnNsTF8XJfd7nWExSQtDfa1DxzR1U/MadfZKUd5wkIyQ6jfSPFowy0"
新增的配置
[[KeyConfig]]
AccessKey = "ak1yUaJ49WYQ9hy2f0A"
SecretKey = "sk1yUaJ49WYQ9hy2f0A"
'
需要注意修改etcdurl=中台的访问ip,原有拷贝的配置要保留。
切记:更新前一定将文档中台原此配置项的内容保留**!**
切记:更新前一定将文档中台原此配置项的内容保留**!**
切记:更新前一定将文档中台原此配置项的内容保留**!**
自己定义的AccessKey和SecretKey,建议是至少是长度大于20的大小写字母和数字的混合字符串。
(3)运行脚本
文件保存后,修改文件权限:
chmod -R 777 etcd.sh
然后在kubewps容器执行该脚本后,查看是否生效,生效后则配置成功。步骤如图:
(4)配置OA协同
或者直接修改配置文件plugin.properties
3.4 关于使用Nginx(单机非必要)
若使用Nginx做文档中台前置网关,做https证书卸载:
a.基础环境说明
i.A代理服务器地址:https://test.open.wps.cn:9003
ii.B中台服务入口地址:http://xx.xx.xx.xx:8080
iii.期望达到的目的是访问A时代理到B,A到B做SSL证书卸载;
b.代理服务器需要做的配置
c.中台服务配置,通过
- 申请许可证
许可证是对应合同签约包含的套餐及权益信息,许可证文件不可手动修改,仅能通过系统申请。许可证构建服务仅限指定人员操作,获取许可证文件后,可以导入部署服务器中执行后即可生效。详细操作如下:
- 获取企业唯一码:
执行命令:sudo cat /sys/devices/virtual/dmi/id/product_uuid
机器码获取工具分别在每台机器获取,以分号拼接作为企业唯一码;
- 申请许可码:许可码是找金山申请,填写相关信息由金山审核后发送到邮箱;
许可码申请地址:https://f.wps.cn/w/X0W0Qv8a/
- 导入许可证:
直接访问app.conf配置中的域名或ip:
http或https://{IP或域名}/open,使用wpsadmin/Wps@123456(若修改密码使用修改密码)登录,通过可视化界面完成应用的授权、创建、管理、开发对接。
进入开放平台,更新授权,将证书可视化导入。
- 申请appId和appKey
注意:关于appid和appkey的申请分为金山公网开放平台和weboffice内网平台,前者不需要部署weboffice中台服务(即与本次部署无关,只做简单说明),后者需要先部署weboffice中台服务。
5.1 金山公网开放平台申请(私有化部署忽略)
登录金山开放平台https://open.wps.cn/developer-info/online-edit-service,点击管理中心申请。
金山通过认证后,如下图:
本地环境使用公网:
weboffice.enable=true
weboffice.networkType=PUB
weboffice.url=https://wwo.wps.cn/office
weboffice.appId=9f422bb26b604f90531e0028471f8a23
weboffice.appKey=xxxx
weboffice.callBackUrl=http://xxxx/seeyon/webOffice
5.2 内网部署中台申请
访问文档中台可视化服务,http://{domain}/open,https://{domain}/open。使用wpsadmin/Wps@123456(若修改密码使用修改密码)完成登录,通过可视化界面点击管理中心申请。
提交申请后,访问管理后台http://{domain}/openplatform,https://{domain}/openplatform,使用账号wpsadmin/Wps@123456登录,可对在可视化平台创建应用的能力申请进行审核。
点击查看并审批,通过审批。
然后访问管理后台http://{domain}/open,https://{domain}/open,同样使用账号wpsadmin/Wps@123456登录,点击管理中心,如图添加应用提交。
点击查看可以看到appid和appkey。
添加ip白名单和跨域白名单,将OA的访问ip或域名填写到对应位置。
注意:若有微协同、致信也需要将域名地址添加。
如下图所示:
查看权限申请页面,查是否为全部已获取。
若没有显示全部已获取,需访问管理后台:http(https)😕/{domain}/openplatform
点击应用列表--选择相应app名称--查看--授权信息--恢复授权。
点击编辑回调,填写回调域名为:OA访问地址(OA为集群请填写负载均衡地址)/ webOffice
如:http://10.3.4.85:8080/seeyon/webOffice
其他项按默认提示填写保存。
同样点击预览回调,填写回调域名为:OA地址(OA为集群请填写负载均衡地址)/ webOffice/previewCallBack
如:http://10.3.4.85:8080/seeyon/webOffice/previewCallBack
其他项按默认提示填写保存。
格式回调无需配置。
5.3 配置OA的中台地址
应用申请完成,并且跨域白名单设置完成后,oa就可以使用这个appId了。可以直接修改配置文件运行或者seeyonconfig来可视化配置。
在线预览:配置文件为…/base/conf下的systemCtp.properties。
#在线预览
officeTrans.type=wps
officeTrans.wps.appId=AK20210611GISDDJ
officeTrans.wps.appKey=0b22738e5c07fd2e2d1b829c12e536e7
officeTrans.wps.openServiceUrl=https://kdocs.seeyoncloud.com/open
(注意以地址open结尾)
officeTrans.wps.callBackUrl=http://10.6.3.63(OA为集群请填写负载均衡地址)/seeyon/webOffice/previewCallBack
可视化配置位置:
在线编辑:配置文件为…/base/conf下的plugin.properties。
#在线编辑
weboffice.enable=true
weboffice.networkType=PRI
weboffice.url=https://kdocs.seeyoncloud.com/open
weboffice.appId=AK20210611GISDDJ
weboffice.appKey=0b22738e5c07fd2e2d1b829c12e536e7
weboffice.callBackUrl=http://10.6.3.63(OA为集群请填写负载均衡地址)/seeyon/webOffice
可视化配置位置:
访问OA测试:
- 关于weboffice外网访问的方案
需求:一般使用M3移动办公和微协同在进行外网访问时,需要使用到weboffice中台服务,但中台部署在内网。
要实现上面的需求,有两种解决方案:
- 直接将weboffice服务映射到外网,直接通过外网域名访问,但注意需在app.conf里配置上域名。
2.使用Nginx代理服务器,隐藏weboffice中台真实服务器,将外网域名绑定到Nginx服务器。需要注意在app.conf配置文件里填写proxy_server,因此中台服务不支持多个Nginx代理,仅能被一个Nginx代理关于Nginx代理配置见3.3节说明。
2.1具体配置策略详见该文档
# 7. 中台的Loading文案自定义
如何修改如下图文档中台的加载页loading?
操作方法:
1.查询ETCD容器
docker ps|grep etcd
2.进入ETCD容器,查看ETCDCTL工具(工具在/app目录下)
docker exec -it <容器ID> sh
3.设置ETCD环境变量(必需,不设置无法获取相关配置)
export ETCDCTL API=3
#IP为服务器实际地址
export ETCDCTL_ENDPOINTS=HTTP://172.16.16.3:2379
4.获取[/config/jsconfig]配置
#
./etcdctl get /config/jsconfig
截图为GET参数效果,供参考。
- loading页文字参数配置(重点)
将4获取的json拷贝到Notepad++,请不要使用记事本操作。
在末尾添加如下段落:
"loadingPage": {
"subtitle": "加载中",
"showAutoLogo": true,
"isAutoSize": true
}
6.PUT "loadingPage"参数
#
./etcdctl put /config/jsconfig '{
json数据
} ##注意这里有个单引号,结尾处也要加单引号
效果如下:
拷贝到命令行执行:
- 查询[/config/jsconfig]配置是否生效
./etcdctl get /config/jsconfig
- [编辑或预览]测试验证