office 文件在线协作编辑——解决方案1(基于sharepoint的二次开发)

1,116 阅读5分钟

概述

office 文件在线协作编辑主要是指word、excel、ppt的多人在线协作编辑,实时同步的功能;

这里主要介绍解决方案之一——基于sharepoint的二次开发(还可以基于wopi实现)的实现方式,该方案主要分两个步骤:

  1. 部署sharepoint
  2. 基于sharepoint的二次开发

本篇主要讲解sharepoint环境的部署,后续的文章会介绍sharepoint的二次开发和wopi的实现,大家有任何问题,欢迎添加文末的QQ群交流。

部署sharepoint

所有服务器都是针对ECS win server R2 数据中心版配置

1. 安装配置域控
2. 安装配置Office Online
3. 安装配置SqlServer
4. 安装配置SharePoint

1. 安装配置域
  1. 修改域控服务器、客户端服务器的机器名(方便后续操作);
  2. 安装域控——预控的安装方式很简单,网上也有很多参考教程,这里就不详述了。

注意事项:

  1. 在其他客户端加入域控时,最好先用客户端管理员账号将该客户端的域账号提升为管理员权限,方便后续的配置
  2. 域控服务器最好打开外网ip,否则加入域控的客户端服务器不发连接外网,在客户端上安装程序时,有些安装过程需要在线下载
  3. 域服务器上默认是开了密码策略的,如果要关闭的话可以按一下操作:
1. 打开服务器管理器仪表板
2. 选择右上角的工具>组策略管理
3. 找到对应的域,右键 Default Domain Policy>编辑>计算机配置>策略>windows 设置>安全设置>账户策略>密码策略  然后就可以修改了
2. 安装配置Office Online
  1. 将Office Online服务器加入域
  2. 确保当前登录的域账号是管理员
  3. 用管理员身份运行 powershell
Add-WindowsFeature Web-Server,Web-Mgmt-Tools,Web-Mgmt-Console,Web-WebServer,Web-Common-Http,Web-Default-Doc,Web-Static-Content,Web-Performance,Web-Stat-Compression,Web-Dyn-Compression,Web-Security,Web-Filtering,Web-Windows-Auth,Web-App-Dev,Web-Net-Ext45,Web-Asp-Net45,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Includes,InkandHandwritingServices,NET-Framework-Features,NET-Framework-Core,NET-HTTP-Activation,NET-Non-HTTP-Activ,NET-WCF-HTTP-Activation45,Windows-Identity-Foundation,Server-Media-Foundation
  1. 安装以下软件
  1. 安装Office Online Server
  2. 安装证书(如果对外要使用https 的话)
1. 运行MMC 
2. 文件 -〉添加/删除管理单元”->列表中选择“证书”->点击“添加”-> 选择“计算机帐户” ->点击完成
3. “个人”- “证书”,右键单击,选择“所有任务-〉导入”, 根据“证书导入向导”的提示,将.pfx格式文件导入,注意导入过程选择“根据证书内容自动选择存储区”
4. iis 中给对应站点绑定证书

  1. 新建场

# 确保外网联通的(联通不了的话可以在域控里面加正向查找区域或者添加dns转发)因为在验证证书的时候如果没有联网会提示找不到证书

New-OfficeWebAppsFarm -InternalUrl "内网地址(一般可以用机器名+域控)" -ExternalUrl "外网地址(可以是ip、最好还是用域名)" -CertificateName "证书友好名称" -EditingEnabled -OpenFromUrlEnabled

# 如无法识别 New-OfficeWebAppsFarm cmdlet,请执行 Import-Module -Name OfficeWebApps

# -OpenFromUrlEnabled 是访问/op/generate.aspx 所必须的,在/op/generate.aspx中可以查看文件的预览效果(先将文件放入一个共享文件夹中,在/op/generate.aspx 中生成文件预览地址即可)

# 如果需要开启office 插件(office 插件 后面会单独开一篇文章来讲) 请执行
Set-OfficeWebAppsFarm -OfficeAddinEnabled

#关闭office插件
Set-OfficeWebAppsFarm -OfficeAddinEnabled:$false

  1. 测试 访问host+ /hosting/discovery或者/op/generate.aspx
  1. 如果使用配置的https的话请使用https的地址访问
  2. 如果是本地共享文件、记得给该文件everyone 权限
3. 安装配置SQLServer
  1. 将SQLServer服务器加入域
  2. 确保当前登录的域账号是管理员
  3. 安装SQLServer(正常安装即可,遇见需要选择账号的时候选择当前登录的==域账号==就可以了)
  4. 安装完成后(SQLServer2016 的ssms 需要单独下载安装),windows认证连接进入数据库,数据库用户添加sharepoint服务器的域账号,同时添加sysadmin 角色(sharepoint 需要建库建表等权限)

注:安装过程请确保网络,如果遇到卡顿(要么翻墙要么等吧...我当时等了2个多小时)

4. 安装配置SharePoint
  1. 将SharePoint服务器加入域
  2. 确保当前登录的域账号是管理员
  3. 确保网络通畅
  4. 先安装界面上的准备文件(也可以手动执行安装包中的prerequisiteinstaller.exe)
  5. 执行安装
  6. 选择创建新的场(第一次装,肯定没有场,所以选它)
  7. Database Server 填写SQLServer服务器的地址(机器名+域控)(如果安装SQLServer时用的是默认实例名,否则地址中请带上实例名)
  8. 数据库的登录账号使用将SharePoint服务器域账号
  9. 填写服务器场密码
  10. 服务器场角色选择 单一服务器场
  11. 修改端口号(不修改的话,每一个管理中心的端口是随机的)
  12. 按照配置向导,配置sharepoint中的第一个web 应用程序
  13. 如果不用sharepoint的搜索功能的话,最好关掉,太占内存了,具体操作方式如下:
# 在windows 服务中将下面两个服务 设置为禁用
SharePoint Search Host Controller
SharePoint Server Search 16

# 在shapoint 命令窗口中使用 Get-SPServiceInstance 获取服务ID,Stop-SPServiceInstance 停掉服务(搜索主机控制器服务、SharePoint Server Search、Search Query and Site Setting...)

PS C:\Users\SPAdmin> Get-SPServiceInstance 
....
PS C:\Users\SPAdmin> 
Stop-SPServiceInstance -Identity {Identity } // Get-SPServiceInstance 命令或得的ID

到这儿sharepoint 就安装完成了,可以在浏览器中去预览刚刚配置向导建好的web 应用程序
接下来是配置sharepoint 和 office online 服务器的关联

  1. 证书安装
  2. 创建sharepoint 和office online 之间的绑定
New-SPWOPIBinding -ServerName <WacServerName> 

# 切记,如果你要在域控之外的网络环境使用sharepoint 的话, WacServerName 请填写office online 场的外网地址(该地址如果是http的话,请将Get-SPWOPIZone 设置为external-http)

Set-SPWOPIZone -zone "external-https" # 外网使用https 访问

$Farm = Get-SPFarm
$Farm.Properties.Add("WopiLegacySoapSupport", "<URL>/x/_vti_bin/ExcelServiceInternal.asmx");
$Farm.Update();

# URL 为外网office online 地址

  1. 如果配置错了可以使用一下命令删除配置
Remove-SPWOPIBinding -All:$true

到这儿 sharepoint 和office online 的绑定就配置完了
接下来 测试文件预览

  1. 在sharepoint 中新建一个网站集,指定网站集管理员A,A 不能是sharepoint 账号
  2. 进入刚创建的网站集,使用A 账号登录,上传一个文档,即可预览编辑
  3. 如果要在域外访问,选择 系统设置>配置备用访问映射 配置对应的地址即可

到这儿 所有配置就完成了 ,接下来就先引出了下一篇文章,说说如何进行二次开发

  1. 首先sharepoint 是基于windows 认证的,在开发过程中涉及到的用户一般是没有在域里面,不同的业务系统都会有自己的用户提醒,所以需要将业务系统的用户体系和sharepoint的用户做适配,这个过程我们可以通过sharepoint基于Form 的AD 认证来实现
  2. 开发环境的配置,我们在进行sharepoint的二次开发的时候vs要怎么配置
  3. 我们怎么将sharepoint的api通过我们自己的服务暴露出去
  4. 二次开发的一些具体注意事项
  5. ....

结束语

很久之前就想把这个系列的文章整理出来了,在实现了sharepoint与业务系统对接完成后,发现sharepoint的文件协作编辑虽然很完善,二次开发也不难,但也有很多致命的缺点,比如服务器成本太高,部署难度大,所以又去研究了WOPI,目前基于这两种解决方案都有了成熟的案例,感兴趣的朋友可以加下面这个QQ群一起讨论,如果有企业朋友需要合作的话直接添加QQ:779393868.

office 在线协作编辑交流群