完成 Spire.OfficeJS 部署后,编辑器服务的运行参数都由 default.json 控制。实际部署中,端口冲突、自动保存节奏和数据库连接等设置,常需要根据业务环境调整。本文介绍这些常用配置的修改方式,以及修改后如何生效。
编辑器服务简介
OfficeServer 是 Spire.OfficeJS 的编辑器服务,默认监听 8000 端口,负责资源分发、运行时接口、协同编辑、缓存和授权配置,多人同时编辑、自动保存和文档变更同步都依赖它。
部署包为不同系统提供了启动脚本,均在部署包根目录运行:
- Windows:双击运行
run_servers_window.bat。 - Linux x64:执行
./run_servers_linux_x64.sh start。 - Linux ARM64:执行
./run_servers_linux_arm64.sh start。
脚本会同时启动示例服务和编辑器服务。示例服务只用于演示,默认使用 3000 端口。编辑器服务启动后,8000 端口会处于监听状态。
配置文件与服务调用
编辑器服务的所有设置都集中在 default.json 中。它随部署包放在不同平台的目录下,完整路径如下:
- Windows:
service/OfficeServer/window/config/default.json - Linux x64:
service/OfficeServer/linux-x64/config/default.json - Linux ARM64:
service/OfficeServer/linux-arm64/config/default.json
修改配置注意:
- 修改前备份
default.json。 - 文件必须为严格 JSON:不支持注释,末尾不能有多余的逗号。
- 修改完成后需要重启服务才能生效。
页面调用编辑器服务时,先引入 SpireCloudEditor.js,在 config.editorAttrs.serverless 中把 coAuthorUrl 配置为编辑器服务地址,例如 http://LocalExample:8000。将 LocalExample 替换为实际部署地址,然后调用 new SpireCloudEditor.OpenApi('editor', config)。
示例配置:
var config = {
fileAttrs: {
fileInfo:
{ name: 'sample.docx',
ext: 'docx',
primary: '001'
},
sourceUrl: 'http://LocalExample:3000/samples/sample.docx'
},
user:
{ id: 'uid-1',
name: 'Jonn',
canSave: true
},
editorAttrs: {
editorMode: 'edit',
editorType: 'document',
viewLanguage: 'en',
useWebAssemblyDoc: true,
canForcesave: true,
serverless: {
useServerless: true,
baseUrl: 'http://LocalExample:3000',
coAuthorUrl: 'http://LocalExample:8000' // OfficeServer服务地址
},
}
};
new SpireCloudEditor.OpenApi('editor', config);
访问8000端口效果如图:

常用配置
日常部署中,最常调整的是端口、自动保存时间和数据库连接三项。下面依次详细说明。
修改编辑器服务端口
OfficeServer 作为编辑器服务默认监听 8000 端口,页面通过该端口访问协同编辑等接口。端口被占用或需要与现有服务隔离时,可以改为其他端口。修改后,接入页面中指向编辑器服务的地址 coAuthorUrl 必须同步修改,否则无法连接编辑器服务。
示例配置(默认端口修改为9000):
{
"ServicesInformation": {
"OfficeServer": {
"server": {
"port": 9000
}
}
}
}
重启服务,确认 9000 端口已监听,即说明配置生效。
设置自动保存时间
快速协同模式下,编辑器按固定时间间隔把改动提交到共享文档会话,这个间隔由 expire.autosave_interval 控制,单位是毫秒。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
ServicesInformation.OfficeServer.expire.autosave_interval |
integer | 600000 |
自动保存间隔(毫秒)。默认 10 分钟。 |
常用换算:
| 间隔 | 配置值 |
|---|---|
| 1 秒钟 | 1000 |
| 1 分钟 | 60000 |
| 5 分钟 | 300000 |
| 10 分钟 | 600000 |
| 15 分钟 | 900000 |
例如改为 5 秒钟:
{
"ServicesInformation": {
"OfficeServer": {
"expire": {
"autosave_interval": 5000
}
}
}
}
注意
autosave_interval 不能小于 0。小于 0 时该值无效,服务端会使用默认值。
数据库连接配置
OfficeServer 默认使用 SQLite,把任务结果和文档变更保存在本地文件中,适合单机部署和小规模使用。如果需要集中管理数据、在多个实例间共享数据,或需要更高的并发能力,可以切换为 MySQL 等外部数据库。
切换方法是:删除 OfficeServer 下已有的 sqlite3 配置,新增 sql 对象并填写实际连接信息。
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
OfficeServer.sql.type |
string | "mysql" |
数据库类型。 |
OfficeServer.sql.dbHost |
string | "127.0.0.1" |
数据库主机地址。 |
OfficeServer.sql.dbPort |
integer | 3306 |
数据库端口。 |
OfficeServer.sql.dbUser |
string | "root" |
数据库用户名。 |
OfficeServer.sql.dbPass |
string | "" |
数据库密码。 |
OfficeServer.sql.dbName |
string | "officecloud" |
数据库名称。 |
OfficeServer.sql.charset |
string | "utf8" |
数据库字符集。 |
OfficeServer.sql.connectionlimit |
integer | 10 |
连接池的最大连接数。 |
OfficeServer.sql.tableChanges |
string | "doc_changes" |
文档变更表名。 |
OfficeServer.sql.tableResult |
string | "task_result" |
任务结果表名。 |
示例:
{
"ServicesInformation": {
"OfficeServer": {
"sql": {
"type": "mysql",
"dbHost": "127.0.0.1",
"dbPort": 3306,
"dbUser": "root",
"dbPass": "your-password",
"dbName": "officecloud",
"charset": "utf8",
"connectionlimit": 10,
"tableChanges": "doc_changes",
"tableResult": "task_result"
}
}
}
}
注意
切换前确认数据库和表已创建,表名必须与配置一致;sqlite3 和 sql 只保留一套配置,使用 sql 时应删除 sqlite3。修改后重启 OfficeServer 生效。
常见问题
修改端口后文档打不开
原因:只修改了编辑器服务端口,没有修改示例服务或业务界面中的 coAuthorUrl,导致页面仍在连接旧端口。
解决:示例服务修改 customization.serverless.coAuthorUrl,业务页面修改 editorAttrs.serverless.coAuthorUrl,改为新端口后重启示例服务并重新打开页面。如果不是本机访问,同时确认地址使用的是服务器的 IP 或域名。
修改 default.json 后配置没有生效
原因:OfficeServer 是编辑器服务,只在启动时读取配置,修改后没有重启;也可能是 JSON 格式有误。
解决:确认修改的是 service/OfficeServer/<platform>/config/default.json,校验 JSON 格式后重启 OfficeServer,再重新打开文档验证。
自动保存间隔没有按设置执行
原因:autosave_interval 在打开文档时下发给编辑器;已经打开的文档不会立即使用新值,协同编辑没有生效时服务端也不会下发这个间隔。
解决:确认修改的是服务端配置、数值单位为毫秒,重启 OfficeServer 后重新打开文档并确认协同编辑模式为快速模式。







