# 文档中台

# Docker部署操作手册

# 1. 部署说明

1.1 部署方式

通过执行命令方式进行文档中台服务部署;

1.2 环境要求

1650447871122.png

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、务必保证weboffice中台集群的所有服务器时间同OA服务器一致。

# 2. 部署准备

2.1 下载部署包

下载地址:

Docker部署(x86版本):

下载链接:https://eyun.baidu.com/s/3oAhrZ9g 密码:TIcI

根据实际部署要求,OA是8.0sp2lts版本需要部署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 kubewps(kubewps指解压安装文件后的目录名称)

特别说明:选择一台服务作为主服务器,此后所有操作均在此服务器上进行。

将本地的部署包通过xshell中自带的xftp,上传至主服务器。

1650447916797.png

  • 进行md5校验

1650447924257.png

MD5码的值一样,才能进行部署操作。

  • 解压文件,放入对应目录。

默认数据盘为date目录,需将文件解压至data目录

tar –zxf release_kubewps_x86_v5.1.6.76_20210630.tar.gz –C /data/

1650447932899.png

tar –zxf release_docs_x86_v5.1.6.74_20210630.tar.gz –C /data/kubewps/apps/

1650447938843.png

# 2.3 部署环境检查

进入相应目录,执行python脚本检查

cd /data/kubewps/checkEnv/

python run_envcheck.py -a docs

1650447956284.png

1650447989516.png

注意:首次部署检查应为全部通过,此图是已部署后的检查结果。

# 2.4 放置https证书(若申请了证书)

将客户提供的https证书文件放在部署包 /data/kubewps/apps/docs.5.1.6.155/conf/cert 下。

# 2.5 安装部署平台

安装容器化部署:

在/data/kubewps目录下执行 bash install.sh

是指配置的数据目录,默认为/data),并按要求输入yes/no。Yes为继续安装,如果数据目录不符合要求请输入no取消安装。如下图:

1650448010623.png

安装完容器化部署后,在服务端执行docker ps 查看目前运行的容器实例,必须有kubewps和kubewps_mysql容器。正确状态如下;

1650448016642.png

# 3. 命令部署

# 3.1 环境基础中间件部署

3.1.1 基础服务配置文件

部署包conf/template/中提前准备部署模板文件,从在kubewps\kubewps.conf中,选择对应集群节点数据的模版文件覆盖部署包kubewps里的conf\kubewps.conf。这个模板文件在大部分场合下,只需要填写其中的 host 、choreography_mode即可。另外建议建议将es的memory改为2g,如3台集群配置得到kubewps.conf见下配置:

1650448032480.png

3.1.2 查看命令帮助

进入kubewps

1650448099668.png

3.1.3 开始安装中间件

  1. 添加主机和选择部署产品类型

进入部署容器

kubewps

执行命令添加主机

wpscli host add

  • 产品类型选择:docs

  • wpscli用户名密码:wpsadmin/Wps@123456

注意:首次安装会提示修改密码,后面所有操作以修改的密码为准。

1650448109831.png

2.环境检查

所有检查项的状态都必须显示通过,否则禁止执行后续步骤;

kubewps> wpscli env check

3.部署中间件

kubewps> wpscli midware install all

  1. 添加存储

kubewps> wpscli storage add

3.2 weboffice业务应用安装

注:安装应用前请提前规划好网络,注意1.3的特别说明事项,是否需要将weboffice中台服务外网可访问,若需要参照第6节外网访问方案来配置app.conf,因为安装中台应用后更改app.conf配置,需重新安装生效。

1、修改apps/docs*/app.conf文件(必须做对应调整)

集群部署必须使用代理,代理地址填写在proxy_server,建议使用nginx(具体Nginx配置见3.3说明)。

调整developer_name和domain、proxy_server、port,其余可默认。

特别说明:developer_name的值与许可码授权相关,请申请许可码时注意保持一致。

1650448122614.png

参考配置:

1650448128750.png

图中配置为主机ip和域名同时生效(即外部可分别使用ip和域名访问),使用Nginx做代理,必须app.conf里指定代理地址,若安装后修改了app.conf的配置则需要重新安装weboffice应用生效。

将docs.放在kubewps-xxx\apps\路径下上传到部署机,填写文件 kubewps-xxx\apps\docs.\app.conf,在同级目录下有说明文件 readme.app.conf 。文档中台配置文件:kubewps-xxx\apps\docs.x.x.x\app.conf,详细说明,参见如下:

{

"developer_name": "服务商名称",   

    "namespace": "default",

    "ext_hosts": [],

"test_enalbe": "false",               

    "domains":[{

        "domain": "yun.test.cn",

        "scheme": "http",

        "port": "",

        "path": "",

        "encryption": "true"

    }]

}
  1. 配置项:developer_name(最好使用英文)
    

<说明>:部署完成后初始化需要的名字,可以为中文或者英文,且不能为空。但正式部署前请务必想清楚服务商名称,因为一旦创建服务商,名称修改起来不方便;

  1. 配置项:ext_hosts
    

<说明>:用于在容器中添加hosts绑定,比如多存储的场景。如果存储为第三方存储绑定第三方存储的域名和ip;

Ÿ 配置格式样例:节点c绑定节点a、b“a.storage.wps.cn:192.168.0.1”,“b.storage.wps.cn:192.168.0.2”];

  1. 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)。也可以通过运维工具生成。>

2、修改custom.conf配置csrf白名单

cd /data/kubewps/apps/docs.5.1.6.155/conf

将OA的访问ip或域名、微协同域名、致信域名都加入到如图位置:

1650448148618.png

注:kubewps\apps\docs.\conf\custom.conf配置csrf白名单(第三方应用),用英文逗号分隔,只用写ip或者域名,不在白名单中的访问会报"csrf error",如果是中途加了这个配置,需要重新发布mics-init-entrys-json和mics-gateway服务(要重新卸载安装一次weboffice应用)才能生效。

注意:同时检查应用包里的conf/deploy.yaml.tpl的ip_white_list,数组结尾加下,"0.0.0.0/0"或者者写客户的内网CIDR。

3、安装/卸载weboffice应用

安装:wpscli app install docs 5.1.6.xxx

卸载:wpscli app remove docs 5.1.6.xxx

<说明>:domain直接填写IP和域名,端口号不写就是默认80;

对照下图,如果状态一致,表示服务安装完成:

退出kubewps,直接执行docker ps查看

1650448158147.png

1650448163552.png

1650448168341.png

1650448171906.png

执行对照下图,如果状态一致,表示服务安装完成:

wpscli app show

1650448177837.png

3.3配置weboffice开发者接口

weboffice的上传下载功能,需要配置当前目录信息。

(1)连上中台服务器

kubewps容器中执行

获取默认信息备份,ip是中台的ip,端口2379

516版本需要先执行:export ETCDCTL_API=3

etcdctl --endpoints=10.3.4.86:2379 get /config/developer

1650448189777.png

(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的大小写字母和数字的混合字符串。

1650448201129.png

(3)运行脚本

文件保存后,修改文件权限:

chmod -R 777 etcd.sh

然后在kubewps容器执行该脚本后,查看是否生效,生效后则配置成功。步骤如图:

1650448211395.png

(4)配置OA协同

1650448216260.png

或者直接修改配置文件plugin.properties

1650448222088.png

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.代理服务器需要做的配置

1650448233090.png

c.中台服务配置,通过/app.conf文件

1650448240200.png

# 4.申请许可证

许可证是对应合同签约包含的套餐及权益信息,许可证文件不可手动修改,仅能通过系统申请。许可证构建服务仅限指定人员操作,获取许可证文件后,可以导入部署服务器中执行后即可生效。详细操作如下:

  1. 获取企业唯一码:

执行命令:sudo cat /sys/devices/virtual/dmi/id/product_uuid

机器码获取工具分别在每台机器获取,以分号拼接作为企业唯一码;

  1. 申请许可码:许可码是找金山申请,填写相关信息由金山审核后发送到邮箱;

许可码申请地址:https://f.wps.cn/w/X0W0Qv8a/

  1. 导入许可证:

直接访问app.conf配置中的域名或ip:

http或https://{IP或域名}/open,使用wpsadmin/Wps@123456(若修改密码使用修改密码)登录,通过可视化界面完成应用的授权、创建、管理、开发对接。

进入开放平台,更新授权,将证书可视化导入。

1650448248649.png

# 5.申请appId和appKey

关于appid和appkey的申请分为金山公网开放平台和weboffice内网平台,前者不需要部署weboffice中台服务,后者需要先部署weboffice中台服务。

# 5.1 金山公网开放平台申请(私有化部署可忽略)

登录金山开放平台https://open.wps.cn/developer-info/online-edit-service,点击管理中心申请。

1650448269283.png

金山通过认证后,如下图:

1650448273589.png

1650448279388.png

1650448283589.png

本地环境使用公网:

1650448288805.png

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完成登录(若修改密码使用修改密码),通过可视化界面点击管理中心申请。

1650448296057.png

提交申请后,访问管理后台http://{domain}/openplatform,https://{domain}/openplatform,使用账号wpsadmin/Wps@123456登录,可对在可视化平台创建应用的能力申请进行审核。

1650448301137.png

点击查看并审批,通过审批。

1650448305399.png

1650448310172.png

然后访问管理后台http://{domain}/open,https://{domain}/open,同样使用账号wpsadmin/Wps@123456登录,点击管理中心,如图添加应用提交。

1650448314751.png

1650448318889.png

1650448323676.png

点击查看可以看到appid和appkey。

1650448328333.png

添加ip白名单和跨域白名单,将OA的访问ip或域名填写到对应位置。

注意:若有微协同、致信也需要将域名地址添加。

如下图所示:

1650448367052.png

1650448372129.png 查看权限申请页面,查是否为全部已获取。

1650448375789.png

若没有显示全部已获取,需访问管理后台:http://{domain}/openplatform,https://{domain}/openplatform

点击应用列表--选择相应app名称--查看--授权信息--恢复授权。

1650448386556.png

点击编辑回调,填写回调域名为:OA访问地址(OA为集群请填写负载均衡地址)/ webOffice

如:http://10.3.4.85:8080/seeyon/webOffice

其他项按默认提示填写保存。

1650448392058.png

同样点击预览回调,填写回调域名为:OA地址(OA为集群请填写负载均衡地址)/ webOffice/previewCallBack

如:http://10.3.4.85:8080/seeyon/webOffice/previewCallBack

其他项按默认提示填写保存。

1650448400811.png

格式回调无需配置。

# 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

可视化配置位置:

1650448430851.png

# 在线编辑:8.0SP2LTS版本不支持在线编辑!!!!

# 6. 关于weboffice外网访问的方案

需求:一般使用M3移动办公和微协同在进行外网访问时,需要使用到weboffice中台服务,但中台部署在内网。

解决方案:

将集群使用的Nginx代理单独部署在一台服务器,将外网域名绑定到Nginx代理服务器。需要注意在app.conf配置文件里填写proxy_server,因此中台服务不支持多个Nginx代理,仅能被一个Nginx代理关于Nginx代理配置见3.3节说明。

# 7. 中台的Loading文案自定义

如何修改如下图文档中台的加载页loading?

1650448461808.png

操作方法:

1.查询ETCD容器

docker ps|grep etcd

1650448469654.png

2.进入ETCD容器,查看ETCDCTL工具(工具在/app目录下)

docker exec -it <容器ID> sh

1650448473595.png

3.设置ETCD环境变量(必需,不设置无法获取相关配置)

export ETCDCTL API=3

#IP为服务器实际地址

export ETCDCTL_ENDPOINTS=HTTP://172.16.16.3:2379

1650448490227.png

4.获取[/config/jsconfig]配置

#

./etcdctl get /config/jsconfig

截图为GET参数效果,供参考。

1650448500662.png

\5. loading页文字参数配置(重点)

将4获取的json拷贝到Notepad++,请不要使用记事本操作。

在末尾添加如下段落:

"loadingPage": {

            "subtitle": "加载中",

            "showAutoLogo": true,

            "isAutoSize": true

}

6.PUT "loadingPage"参数

#

./etcdctl put /config/jsconfig '{

json数据

} ##注意这里有个单引号,结尾处也要加单引号

效果如下:

1650448511042.png

拷贝到命令行执行:

1650448517293.png

  1. 查询[/config/jsconfig]配置是否生效

./etcdctl get /config/jsconfig

1650448522966.png

  1. [编辑或预览]测试验证

1650448528851.png

创建人:zhangshuang