概述
office 文件在线协作编辑主要是指word、excel、ppt的多人在线协作编辑,实时同步的功能;
这里主要介绍解决方案之一——基于sharepoint的二次开发(还可以基于wopi实现)的实现方式,该方案主要分两个步骤:
- 部署sharepoint
- 基于sharepoint的二次开发
本篇主要讲解sharepoint环境的部署,后续的文章会介绍sharepoint的二次开发和wopi的实现,大家有任何问题,欢迎添加文末的QQ群交流。
部署sharepoint
所有服务器都是针对ECS win server R2 数据中心版配置
1. 安装配置域控
2. 安装配置Office Online
3. 安装配置SqlServer
4. 安装配置SharePoint
1. 安装配置域
- 修改域控服务器、客户端服务器的机器名(方便后续操作);
- 安装域控——预控的安装方式很简单,网上也有很多参考教程,这里就不详述了。
注意事项:
- 在其他客户端加入域控时,最好先用客户端管理员账号将该客户端的域账号提升为管理员权限,方便后续的配置
- 域控服务器最好打开外网ip,否则加入域控的客户端服务器不发连接外网,在客户端上安装程序时,有些安装过程需要在线下载
- 域服务器上默认是开了密码策略的,如果要关闭的话可以按一下操作:
1. 打开服务器管理器仪表板
2. 选择右上角的工具>组策略管理
3. 找到对应的域,右键 Default Domain Policy>编辑>计算机配置>策略>windows 设置>安全设置>账户策略>密码策略 然后就可以修改了
2. 安装配置Office Online
- 将Office Online服务器加入域
- 确保当前登录的域账号是管理员
- 用管理员身份运行 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
- 安装以下软件
- NET Framework 4.5.2
- Visual C++ Redistributable Packages for Visual Studio 2013
- Visual C++ Redistributable for Visual Studio 2015
- Microsoft.IdentityModel.Extention.dll
- 安装Office Online Server
- 安装证书(如果对外要使用https 的话)
1. 运行MMC
2. 文件 -〉添加/删除管理单元”->列表中选择“证书”->点击“添加”-> 选择“计算机帐户” ->点击完成
3. “个人”- “证书”,右键单击,选择“所有任务-〉导入”, 根据“证书导入向导”的提示,将.pfx格式文件导入,注意导入过程选择“根据证书内容自动选择存储区”
4. iis 中给对应站点绑定证书
- 新建场
# 确保外网联通的(联通不了的话可以在域控里面加正向查找区域或者添加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
- 测试 访问host+ /hosting/discovery或者/op/generate.aspx
- 如果使用配置的https的话请使用https的地址访问
- 如果是本地共享文件、记得给该文件everyone 权限
3. 安装配置SQLServer
- 将SQLServer服务器加入域
- 确保当前登录的域账号是管理员
- 安装SQLServer(正常安装即可,遇见需要选择账号的时候选择当前登录的==域账号==就可以了)
- 安装完成后(SQLServer2016 的ssms 需要单独下载安装),windows认证连接进入数据库,数据库用户添加sharepoint服务器的域账号,同时添加sysadmin 角色(sharepoint 需要建库建表等权限)
注:安装过程请确保网络,如果遇到卡顿(要么翻墙要么等吧...我当时等了2个多小时)
4. 安装配置SharePoint
- 将SharePoint服务器加入域
- 确保当前登录的域账号是管理员
- 确保网络通畅
- 先安装界面上的准备文件(也可以手动执行安装包中的prerequisiteinstaller.exe)
- 执行安装
- 选择创建新的场(第一次装,肯定没有场,所以选它)
- Database Server 填写SQLServer服务器的地址(机器名+域控)(如果安装SQLServer时用的是默认实例名,否则地址中请带上实例名)
- 数据库的登录账号使用将SharePoint服务器域账号
- 填写服务器场密码
- 服务器场角色选择 单一服务器场
- 修改端口号(不修改的话,每一个管理中心的端口是随机的)
- 按照配置向导,配置sharepoint中的第一个web 应用程序
- 如果不用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 服务器的关联
- 证书安装
- 创建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 地址
- 如果配置错了可以使用一下命令删除配置
Remove-SPWOPIBinding -All:$true
到这儿 sharepoint 和office online 的绑定就配置完了
接下来 测试文件预览
- 在sharepoint 中新建一个网站集,指定网站集管理员A,A 不能是sharepoint 账号
- 进入刚创建的网站集,使用A 账号登录,上传一个文档,即可预览编辑
- 如果要在域外访问,选择 系统设置>配置备用访问映射 配置对应的地址即可
到这儿 所有配置就完成了 ,接下来就先引出了下一篇文章,说说如何进行二次开发
- 首先sharepoint 是基于windows 认证的,在开发过程中涉及到的用户一般是没有在域里面,不同的业务系统都会有自己的用户提醒,所以需要将业务系统的用户体系和sharepoint的用户做适配,这个过程我们可以通过sharepoint基于Form 的AD 认证来实现
- 开发环境的配置,我们在进行sharepoint的二次开发的时候vs要怎么配置
- 我们怎么将sharepoint的api通过我们自己的服务暴露出去
- 二次开发的一些具体注意事项
- ....
结束语
很久之前就想把这个系列的文章整理出来了,在实现了sharepoint与业务系统对接完成后,发现sharepoint的文件协作编辑虽然很完善,二次开发也不难,但也有很多致命的缺点,比如服务器成本太高,部署难度大,所以又去研究了WOPI,目前基于这两种解决方案都有了成熟的案例,感兴趣的朋友可以加下面这个QQ群一起讨论,如果有企业朋友需要合作的话直接添加QQ:779393868.