189 255 行 else if 修改为 if。283 直接去掉 else,保留花括号
ONLYOFFICE是由 Ascensio System SIA 推出的一款功能强大的在线协作办公套件,包括文档(Word)、电子表格(Excel),演示文稿(PowerPoint)和表单(Forms)编辑器,并且在最新的7.5版本中,还添加了PDF编辑器,都在同一个软件。在7.1版本以上,ONLYOFFICE还可以免费把PDF转Word。
不仅提供了 桌面、移动端应用,还支持 集成/内嵌 到 第三方系统 内部(内嵌示例)。

官网:https://www.onlyoffice.com/
开源地址:https://github.com/ONLYOFFICE
你可以直接选用官方的Docker镜像(OnlyOffice安装-官方镜像)或者直接使用破解版(OnlyOffice安装-破解),可以可以下载OnlyOffice的源码,自行编译。
(1)OnlyOffice官方源码(https://github.com/ONLYOFFICE/DocumentServer)你不要去Release里面下载源码,里面是不包含源码的,需要点进去各个子项目进行下载。

(2)子目录,没有Release,只有tag,这就造成一个问题,你去网上看别人写的文章,都是直接拉master,那么当时他拉的是那个版本,就非常模糊了。所以即使你按照他们的文章一步一步操作,由于根本不是一个版本了,所以会出现一堆问题。
所以这里我要特别说明,这边要下载的对应源码为:
https://github.com/ONLYOFFICE/core/releases/tag/v9.2.1.8 https://github.com/ONLYOFFICE/core-fonts/releases/tag/v9.2.1.8 https://github.com/ONLYOFFICE/dictionaries/releases/tag/v9.2.1.8 https://github.com/ONLYOFFICE/sdkjs/releases/tag/v9.2.1.8 https://github.com/ONLYOFFICE/server/releases/tag/v9.2.1.8 https://github.com/ONLYOFFICE/web-apps/releases/tag/v9.2.1.8 https://github.com/ONLYOFFICE/document-server-integration/releases/tag/v9.2.1.8 https://github.com/ONLYOFFICE/document-formats/releases
(3)OnlyOffice编译是一个非常复杂的工作,官方提供了编译工具(https://github.com/ONLYOFFICE/build_tools ),同样没有Release,所以这里特别说明,我使用的版本为:
https://github.com/ONLYOFFICE/build_tools/releases/tag/v9.2.1.10
(4)不要使用其他系统,直接使用Ubuntu,这里建议为Ubuntu20,如果你使用Ubuntu24也可以,但是需要修改几处源码。
这里直接使用Docker的镜像即可,剩下大量系统安装时间。
(1)创建Ubuntu20容器,并映射一个目录,比如我这里为:/home/onlyoffice,容器编译工具直接使用宿主机的文件。
(2)进入容器,并安装相关工具软件,后期缺什么软件,可以自行安装。
docker exec -it 9b9522e6b17d /bin/bash apt-get update apt-get install -y iputils-ping curl net-tools netcat wget sudo tar apt-get install -y git ninja-build # 安装 ccache 编译缓存 apt-get install -y ccache # 配置 export PATH="/usr/lib/ccache:$PATH" export CCACHE_DIR="/tmp/ccache"
(3)设置使用32个CPU核心,根据实际情况修改。因为期间会使用GCC编译,设置可以使用的核心数,可以打打提高编译速度。
网上有些人说自己编译了几天的,或者官网说编译了几个小时的:
首先他们是直接Git拉取,这样比较耗时,建议直接下载源码,然后解压到/home/onlyoffice下。
其次中间build_tools中间第一次使用时会下载一些依赖,受限于你使用的VPN速度,这部分无法预估。
然后就是没有设置核心数,没有充分利用机器性能。
export MAKEFLAGS="-j32" export CMAKE_BUILD_PARALLEL_LEVEL=32 # 写入 ~/.bashrc(推荐,永久生效) echo 'export MAKEFLAGS="-j32"' >> ~/.bashrc echo 'export CMAKE_BUILD_PARALLEL_LEVEL=32' >> ~/.bashrc source ~/.bashrc
(4)设置时区和配置键盘
# 设置时区 export TZ=Etc/UTC export DEBIAN_FRONTEND=noninteractive ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 配置键盘 echo 'keyboard-configuration keyboard-configuration/layoutcode string us' | debconf-set-selections echo 'keyboard-configuration keyboard-configuration/modelcode string pc105' | debconf-set-selections
(5)配置代理,由于一些东西需要外网下载,所以欲练此功,必连VPN。
你可以在一台Win上面安装VPN,然后让镜像借用这个VPN。也可以直接在Ubuntu上安装VPN,但是会很麻烦,不建议。
# 配置代理 直接追加配置到 .bashrc cat >> ~/.bashrc << 'EOF' # 代理配置 export HTTP_PROXY="http://192.168.1.257:7897" export HTTPS_PROXY="http://192.168.1.257:7897" export ALL_PROXY="http://192.168.1.257:7897" EOF # 生效配置 source ~/.bashrc # 测试 curl https://www.google.com
(6)安装 CMake
# 安装 CMake wget https://github.com/Kitware/CMake/releases/download/v3.30.0/cmake-3.30.0-linux-x86_64.tar.gz tar -xzf cmake-3.30.0-linux-x86_64.tar.gz -C /opt ln -s /opt/cmake-3.30.0-linux-x86_64/bin/cmake /usr/local/bin/cmake ln -s /opt/cmake-3.30.0-linux-x86_64/bin/ctest /usr/local/bin/ctest rm cmake-3.30.0-linux-x86_64.tar.gz
(7)安装 Python3
# 安装 Python
mkdir -p /opt/python3
wget -P /home/onlyoffice/ https://github.com/ONLYOFFICE-data/build_tools_data/raw/refs/heads/master/python/python3.tar.gz
tar -xzf /home/onlyoffice/python3.tar.gz -C /opt/python3 --strip-components=1
export PATH="/opt/python3/bin:${PATH}"
ln -s /opt/python3/bin/python3.10 /usr/bin/python
python -V(8)安装 Node.js
# 1. 下载并执行 NodeSource 安装脚本 curl -fsSL https://deb.nodesource.com/setup_20.x -o /tmp/nodesource_setup.sh bash /tmp/nodesource_setup.sh # 2. 安装 Node.js apt-get install -y nodejs # 3. 清理临时文件 rm /tmp/nodesource_setup.sh # 4. 验证安装 node -v npm -v
(9)下载指定源码,上面已经有说明了
(10)执行编译
cd /home/onlyoffice/build_tools/tools/linux python3 ./automate.py server --update=0 --branch=tags/v9.2.1.8 --git-protocol=https --force-clean
参数说明:
update:是否在编译时自动更新所有项目的 git 源码(0 为不自动更新,1 为自动更新);我只会在第一次编译使用自动更新来拉取所有子项目源码,后续都设置为 0 来固定源码,便于本地修改
branch:指定编译时所有项目的 git 分支或者tag,如果某个项目不存在该分支则会退回到主分支,所以最好确保这个分支在所有项目中都存在
git-protocol:指定拉取 git 代码时,使用的网络协议;默认会自动使用 build_tools 项目使用的协议,建议使用 https 协议(因为使用 ssh 协议还要加上秘钥)
clean:是否重新编译所有的部分(开启后还会重新编译 C/C++ 相关包,即彻底重新编译,花费的时间会更长)
(1)3dParty文件损坏删除,下载的依赖包由于网络原因,其实没有下载成功,但是这个文件名的文件临时文件已经存在,导致执行失败,删除重新编译下载即可
rm -f /home/onlyoffice/core/Common/3dParty/cef/linux_64/cef_binary.7z
(2)如果你使用的是Ubuntu24,由于GCC版本问题,需要修改几处源码
/home/onlyoffice/core/PdfFile/SrcWriter/Utils.cpp
定位到文件顶部,找到其他 #include 语句
#include <limits> // 添加这一行来支持 std::numeric_limits
/home/onlyoffice/core/MsBinaryFile/XlsFile/Format/Logic/Biff_structures/StringPtgParser.cpp
189 255 行 else if 修改为 if。283 直接去掉 else,保留花括号
(3)如何更新,首先,你已经编译成功,编译后程序在:/home/onlyoffice/build_tools/out,然后把响应的文件拷贝到你之前的Docker镜像内即可。
mv /var/www/onlyoffice/documentserver/server /var/www/onlyoffice/documentserver/server-bak1 cp -r /home/onlyoffice/build_tools/out/linux_64/onlyoffice/documentserver/server /var/www/onlyoffice/documentserver/server # 更新后需要重新生成字体,否则无法强制保存,且在converter日志目录有Error输出 documentserver-generate-allfonts.sh
(4)修改JWT秘钥,修改JSON配置文件
/etc/onlyoffice/documentserver/local.json /etc/onlyoffice/documentserver-example/local.json
(5)开启定时保存。在文档编辑时,不用一直Ctrl+S,间隔的保存文档
/etc/onlyoffice/documentserver/local.json ,在sql节点上增加配置
"CoAuthoring": {
"autoAssembly": {
"enable": true,
"interval": "3000",
"step": "1000"
},
"sql": {
"type": "postgres",
"dbHost": "localhost",
"dbPort": "5432",
"dbName": "onlyoffice",
"dbUser": "onlyoffice",
"dbPass": "onlyoffice"
}
# 省略其他配置(6)中文字体支持
通过网盘分享的文件:字体包链接: https://pan.baidu.com/s/17tNT4L7bvrIBUZ4il3iP3w?pwd=1h3v 提取码: 1h3v
sudo mv /var/www/onlyoffice/documentserver/core-fonts /var/www/onlyoffice/documentserver/core-fonts-bak sudo mkdir /var/www/onlyoffice/documentserver/core-fonts # 把字体包上传到上面目录,然后解压 tar -zxvf core.tar.gz tar -zxvf zh.tar.gz # 重新生成字体 sudo documentserver-generate-allfonts.sh
(7)查看日志
日志主目录:/var/log/onlyoffice/documentserver/
其他参考前面两个文章,进行更新后测试工作,查看源码编译后的程序是否正常。
推荐您阅读更多有关于“ 编译 文档 源码 ubuntu OnlyOffice ”的文章
Java小强
未曾清贫难成人,不经打击老天真。
自古英雄出炼狱,从来富贵入凡尘。
发表评论: