在Windows server 2016上部署Office Online 2017来实现在线浏览Office

家中出现大事情, 停更了一周. 今天在公司连我自己的小主机装office online, 卡的起飞, 载入一个简单的word要30多秒(可能是我分配的虚拟机内存太小了), 然后晚上脑子某根筋短路, 有强烈的欲望想体验下高配的服务器安装office online有多快, 所以….今晚想在阿里云上体验下4核8G的服务器上装Office Online 2017版….估计要花2块钱吧..我就拿我的迅雷赚钱宝上周的收益来抵扣掉吧….

(English version translate by GPT-3.5)

阿里云的配置如下:

AD域服务器, 1核2G, Windows Server 2016 47.*.*.200

Office Online服务器 4核8G Windows Server 2016 47.*.*.125

server

准备

注意

  1. 必须准备2台服务器,因为OfficeOnline不会在包含 Active Directory 域服务 (AD DS) 的服务器上运行。
  2. 域控服务可以使用Windows Server 2016 核心版(无GUI版),但是Office Online Server 2017 仅支持 Windows Server 2016 的“含桌面体验的服务器”安装选项(如果自行安装的话)。
  3. Office Server 2017的服务器尽可能干净,最好是给一台全新的服务器。
  4. 安装过程中,我设置了端口全部暴露,实际操作中建议暴露固定的端口。
  5. 请勿在运行 Office Online Server 的服务器上安装任何其他服务器应用程序。包括 Exchange Server、SharePoint Server、Skype for Business Server 和 SQL Server。如果服务器不足,则可以在这些服务器的其中一台的虚拟机上运行 Office Online Server。
  6. 不要在端口 80、443 或 809 上安装依赖 Web 服务器 (IIS) 角色的任何服务或角色,因为 Office Online Server 会定期删除这些端口上的 Web 应用程序。
  7. 不要安装任何版本的 Office。如果已经安装,在安装 Office Online Server 之前必须将其卸载。
  8. Office Online不会加载IP地址的Doc源, 读取的地址必须是带域名的. 例如http://1.2.3.4/t.docx是会报Error的
  9. 更多注意点参考 计划 Office Online Server - Microsoft Docs

参考的文章如下

  1. 部署 Office Online Server - Microsoft Docs
  2. office online server2016详细安装步骤及问题总结 - CSDN blog
  3. Windows Server 2016-部署第一台域控制器 - 51CTO Blog

软件

下面所有的软件(office除外)和测试用的文件也提供 打包下载 - office-online-dependent-packages.zip

  1. Office Online 2017

    1
    2
    3
    4
    5
    6
    文件名: cn_office_online_server_last_updated_november_2017_x64_dvd_100181918.iso
    文件大小: 734.58MB
    发布时间: 2017-11-08
    地址: ed2k://|file|cn_office_online_server_last_updated_november_2017_x64_dvd_100181918.iso|770267136|0660AFCFE1AC9A62E749194874643E98|/

    来源: MSDN我告诉你 http://msdn.itellyou.cn/
  2. .NET Framework 4.5.2

  3. Visual C++ Redistributable Packages for Visual Studio 2013

  4. Visual C++ Redistributable for Visual Studio 2015

  5. Microsoft.IdentityModel.Extention.dll

在Office Online的那台服务器上下载好以下软件, 备用

softwareReady

在AD域控服务器上安装Active Directory域服务

  1. 进入服务器管理器, 点击添加角色, 选中Active Directory域服务

    ADserver

  2. 点击下一步, 功能这里直接点击下一步, 不用选择任何项

  3. 这里选择自动重启服务器, 然后安装

    autoRestartSelect

  4. 等待安装结束

    installing

  5. 安装成功后, 点击界面的文字, 将此服务器提升为域控制器

    upgradeToADServer

    如果中途关闭了这个界面, 也可以在这里找到

    upgradeToADServerInFlag

  6. 添加一个新林, 这里域名可以自己填自己喜欢的就行, 例如wang.me, abc.local啥的, 因为它会在本地安装DNS服务器, 这个域名在这个机器上访问也是访问本机.

    newLin

  7. 这里要输入密码, 自己喜欢的就行, 如果怕忘记就输入Windows的登陆密码

    inputPass

  8. 下一步到这里, 提示无法创建该DNS服务器的委派, 直接下一步, 不管

    noDNSProxy

  9. 然后进入这一步, 这里都下一步下一步, 不需要做任何修改

    nextnext

    nextAgain

    nextAgain2

    nextAgain3

  10. 到了这一步, 点击安装

    installNow

  11. 然后就是漫长的等待

    waiting....

  12. 安装结束后, 会弹出 即将注销你的服务器, 这里它会重启, 重启好后域控安装就完成了, 重启之后会有较长的正在应用计算机设置(远程桌面过去则显示: 请等待Group Policy Client), 等待差不多快10分钟就好了(这个问题还请高人解决).

    以上命令也可以使用powershell执行, 这里参考 参考文章 - Windows Server 2016-部署第一台域控制器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Install-WindowsFeature AD-Domain-Services

    Import-Module ADDSDeployment

    Install-ADDSForest `
    -CreateDnsDelegation:$false `
    -DatabasePath "C:\Windows\NTDS" `
    -DomainMode "WinThreshold" `
    -DomainName "{修改这里, 填上域名, 例如ruter.local}" `
    -DomainNetbiosName "{修改这里, 改成域名大写即可, 例如RUTER}" `
    -ForestMode "WinThreshold" `
    -InstallDns:$true `
    -LogPath "C:\Windows\NTDS" `
    -NoRebootOnCompletion:$false `
    -SysvolPath "C:\Windows\SYSVOL" `
    -Force:$true

    rebootADServer

配置Office Server服务器, 并安装依赖

  1. 首先, 将Office Server服务器的DNS地址改为AD域控的服务器的地址, 改DNS这经典的操作, 就不说明了, 这里开始是那台8G的Office服务器了, 域控服务器放着就行,

    这里也可以填写域控服务器的内网地址, 我创建时创错了区域, 导致内网不通, 不得不填外网地址.

    openNetworkShare

    changeDNS

  2. 设置域为域控制器的域

    1. 打开此电脑 - 右键属性(又是经典的操作, 如果桌面上没有此电脑, 可以点击左下角资源管理器, 然后左侧此电脑右键 - 属性就行)
      openProperties

    2. 点开左边的远程设置或者是高级系统设置都行, 然后切换到计算机名, 然后点击更改

      prop

    3. 这里设置刚刚配置的域名, 点击确定, 会弹出输入用户名密码框, 这里输入AD域控服务器的Administrator的用户名和登录密码,当然其他用户名行不行我没有去尝试。

      ruter.local)

    4. 输入完密码后会弹出 欢迎加入xxx域, 点击确认后, 弹出必须重启服务器, 这里选择立即重启

      welcome Ruter.local

安装Office Online 2017

  1. 在这之前, 准备好需要的软件

    softwareReady

  2. 重启好之后, 就可以按照部署 Office Online Server里面的指引来一步步做了, 首先, 打开PowerShell, 安装一堆组件这里注意要选择Windows Server 2016的那一行, 这里会比较慢, 慢慢来.

    1
    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,NET-Framework-Features,NET-Framework-45-Features,NET-Framework-Core,NET-Framework-45-Core,NET-HTTP-Activation,NET-Non-HTTP-Activ,NET-WCF-HTTP-Activation45,Windows-Identity-Foundation,Server-Media-Foundation

    powerShellInstalling

    installed

  3. 安装好了, 安装需要的依赖

    1. 我的安装顺序是: NDP452-KB2901954-Web 提示这已经安装了, 跳过

      npd

    2. vc_redist.x64 设置成功

      vc1

      当然,看到如图也表示已安装,直接跳过即可

      installed

      1. vcredist_x64 Setup Successful, 估计我下的英文版...

        vc2

      2. MicrosoftIdentityExtensions-64 Completed.

        mie

    3. 双击 cn_office_online_server_last_updated_november_2017_x64_dvd_100181918.iso, 它会直接挂载到光驱中, 然后双击setup, 弹出安装程序

      installOffice

    4. 因为只有1个盘, 所以我安装目录也没做修改, 就默认C盘了, 继续后开始安装

      installing

    5. 这安装很快, 几分钟就好了,

      installed

配置Office Online 2017

  1. 在这之前,如果有打开PowerShell窗口,建议先全部关闭,并重新打开powershell

  2. 继续照着部署 Office Online Server的指引继续, 这里我没装语言包…因为..这看上去不就是中文的么…

  3. 接下来的操作是部署 Office Online Server 场, 运行这条命令, 这里的servername改成自己访问的地址, 如果用域名访问, 这里就改成域名, 如果用IP访问这里就改成IP, Office Online不能使用非常用http, https端口, 即http只能是80, https只能是443, 打开PowerShell, 输入下面的语句

    1
    New-OfficeWebAppsFarm -InternalURL "http://servername" -AllowHttp -EditingEnabled
    1. 如果输入了非常用端口, 就会弹出这样的内容
      errorIn8443

    2. 如果出现用户名或密码不正确,此时表示需要用域用户登录(注意,此时登录密码是你AD域控服务器的登录密码,不是OFFICE Server服务器的登录密码)感谢fvr先生(女士)提出的这个问题
      denied

      1. 用域用户登录非常简单,只需先注销,然后,左侧选择其他用户,输入刚刚创建的域,然后反斜杠,加Administrator登录
        ADDLogin
      2. 如果使用远程登录,则打开 显示选项,修改用户名并加上域名
        ADDLogin-Remote
  4. 这里弹出的输入Y回车, 或直接回车

    inputYOrEnter

  5. 这样子就是部署好了

    deployed

  6. 试着访问下, 这里的servername依然需要改成刚刚设置的 -InternalURL 的内容, 出现这样的就表示成功(p.s. 哇塞..好快啊…)

    1
    http://servername/hosting/discovery

    test

  7. 然后, 尝试在线浏览第一个Doc文件, 这里的servername依然……(省略若干字), 访问这个地址,

    1
    http://servername/op/generate.aspx

    发现报了error, 这里我在 参考文章 - office online server2016详细安装步骤及问题总结找到了答案, 这个命令执行后会返回类似上面第四条的内容

    1
    2
    3
    4
    5
    Set-OfficeWebAppsFarm -OpenFromUrlEnabled:$true

    当然, 也可以在部署场的时候加上这句话, 这样就变成

    New-OfficeWebAppsFarm -InternalURL "http://servername" -AllowHttp -EditingEnabled -OpenFromUrlEnabled:$true
  8. 经过以上折腾后, 部署已经完成

    op/generate

  9. 然后…尝试在线浏览第一个Doc文件, 然后可以可以访问了, 效果见下面

    openOffice

为OfficeOnline添加https证书(更新于 2021年5月18日)

前言

因为考虑到安全因素,加上一(gāo)部(dà)分(shàng)因素,为其添加https证书,使其支持https访问

下载证书

证书可以通过阿里云,腾讯云下载,这里用阿里云为例。证书的获取就不做演示了,在阿里云生成证书后,需要下载iis证书,下载后的证书解压后,应该只有如下2个文件。

1
2
5656125_xyz.ruterfu.com.pfx
pfx-password.txt

导入证书

  1. 打开IIS管理器
    OpenIIS

  2. 进去后,选择左侧OFFICE-SERVER, 然后选择右侧的服务器证书,并双击进入
    OFFICE-SERVER-PRE-ADD

  3. 选择右侧导入,然后选中刚刚解压的pfx文件,并复制pfx-password.txt的密码到密码框里,直接选择添加即可。这里要勾选允许导出证书,不然后面443绑定证书时就出现指定的登录会话不存在,可能已被终止 HRESULT:0x80070520的错误
    OFFICE-SERVER-ADD-CERT

  4. 添加后,那个名字中的alias,就是OfficeServer中的有好名字
    GET-CERTNAME

  5. 按图中顺序点下去。。。懒得描述了。。
    BIND-CERT

  6. 然后根据官网指示,修改场设置

1
Set-OfficeWebAppsFarm -ExternalURL https://xyz.ruterfu.com -CertificateName "证书的友好名字,也就是上面的 alias"
  1. 浏览器验证下,就行了。
    BROWSER-VALIDATE

最后

  1. 如果要实现编辑, 还需要写一个WOPI的接口(很简单的), 参考这篇文章 微软Office Online服务安装部署,wopi代码实现, 所以这篇文章我也只是取名”浏览”, 不包括编辑.
  2. 真正环境中建议上https, 还有端口别忘了做限制.
  3. 如果您有购买阿里云意向的话, 可以点击这个链接 推广 - 上云就上阿里云 享数字化转型, 您购买后我会得到返利, 请自行决定.

效果预览

Word

不得不说…速度质的提升….

Word 365

source

Word Online

docxView

虽然网上说officeOnline不支持doc格式, 只支持docx的, 但是我创了一个doc, 似乎也能访问诶…

docView

Excel

Excel 365

Ms自带的模板

excelOpen

Excel Online

excelOnlineOpen

PowerPiont

从这里下载的 《We have new friends》PPT课件 文件

PowerPiont 365

pptView

PowerPoint Online

pptOnlineView