OnlyOffice验证(一)DocumentServer编译验证

news2024/11/29 4:40:43

OnlyOffice验证(一)DocumentServer编译验证

资源准备

Ubuntu16.04桌面版

  验证用的版本[ubuntu-16机接上传ubuntu.04.7-desktop-amd67131.iso,(别用高版本!试过20.04耽误两三天,差点放弃了),使用桌面版是为了后面好编辑。

代理工具

  主要是为了资源下载,编译期间需要配置全局代理、git代理和npm代理。全局代理主要是apt和curl用,此处注意npm先别配镜像源让它走代理,apt也不要配置镜像源。(备注:192.168.95.130:7890是代理服务器,win11宿主机192.168.95.130,虚拟机192.168.95.133。模式是NAT模式。)

VMwareWorkstation17

  如果是Win11最好还是用这个版本,VMware16好像兼容有点问题。要是不蓝屏此处可省略。

编译

安装Python

  如果使用的16.04和上面的版本一样的话可以不用安装,本身自带Python 2.7.12Python 3.5.2

sudo apt-get install -y python

安装Git

  不配置代理正常也能安装上,就是慢点。

sudo apt-get install -y git

  安装后给git配置代理。好处是能提升点下载速度,还有就是到V8模块编译的时候会下载depot_tools,连不上google肯定编译失败。

git config --global http.proxy http://192.168.95.130:7890
git config --global https.proxy socks5://192.168.95.130:7890

  此处防止大文件拉取失败又加了点配置,意义并不大网络不稳定该断开还是会断开。

root@t16:/# git config --list
http.postbuffer=524288000
http.lowspeedtime=60000
http.proxy=http://192.168.95.130:7890
core.compression=-1
https.postbuffer=524288000
https.lowspeedtime=60000
https.proxy=socks5://192.168.95.130:7890

配置全局代理

  修改环境变量

vim /etc/profile

  vim默认没有可以安装一个:

sudo apt-get install -y vim

  追加环境变量,然后:wq保存退出

export ALL_PROXY=socks5://192.168.95.130:7890
export HTTP_PROXY=http://192.168.95.130:7890
export HTTPS_PROXY=http://192.168.95.130:7890

  使环境变量立即生效

source /etc/profile

  如果还不生效就重启虚拟机(reboot)。

下载ONLYOFFICE/build_tools

  默认就是master:

git clone https://github.com/ONLYOFFICE/build_tools.git

  指定版本(未验证):

git clone --depth=1 --recursive --branch v7.3.2.3 https://github.com/ONLYOFFICE/build_tools.git

编译前准备工作

  下完build_tool后,执行cd ./build_tools/tools/linux切换目录,不要着急去执行automate.py,可以看到同级目录下有个deps.py,然后automate.py执行的开始就是检查环境然后调用deps.py去安装基础环境:
在这里插入图片描述
  所以可以先执行deps.py安装基础环境(安装完了创建个快照),保证基础环境没有问题再去构建。然而先别着急去执行,还需要修改个地方。要不然curl下载https资源的时候会报错。所以还需要改一个文件:
在这里插入图片描述
  cd ./build_tools/scripts目录修改base.py中的download()方法
  修改前

# common apps
def download(url, dst):
  return cmd_exe("curl", ["-L", "-o", dst, url])

  修改后

# common apps
def download(url, dst):
  return cmd_exe("curl", ["-k", "-L", "-o", dst, url])

安装基础环境

  切换目录到build_tools/tools/linux下,执行deps.py可执行文件。随后将会进行进出环境的安装,包括NodeJSJava环境。经过漫长的等待如果成功就会生成下图标注的文件且内容为complete。
在这里插入图片描述
  如果中途报错且node已经安装完。则可以先配置npm代理。
  node环境检查:

root@t16:/opt/build_master/build_tools/tools/linux# node -v
v10.24.1
root@t16:/opt/build_master/build_tools/tools/linux# npm -v
6.14.12

  配置npm代理:

sudo npm config set proxy http://192.168.95.130:7890
sudo npm config set https-proxy http://192.168.95.130:7890

  如果一切顺利最终Java也安装完成:

root@t16:/opt/build_master/build_tools/tools/linux# java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~16.04.1-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

执行构建

  切换目录到build_tools/tools/linux下,执行automate.py可执行文件。

./automate.py server

  继续慢慢等待几个小时,中途可以睡一觉(做好编译失败的心理准备,如果失败了就删了除了build_tools的源码再来一遍)编译结果在build_tools/out下:
在这里插入图片描述

安装运行环境

  此处完全按照官网的方式安装配置,先不用考虑Nginx其它方式的部署,数据库切换Mysql,Rabbit连接其它的服务器的问题。总之就是一顿复制粘贴,先运行起来看看效果再说:

安装Nginx

sudo apt-get install nginx

  删除默认配置文件

sudo rm -f /etc/nginx/sites-enabled/default

  创建配置文件

sudo vim /etc/nginx/sites-available/onlyoffice-documentserver

  配置内容如下

map $http_host $this_host {
  "" $host;
  default $http_host;
}
map $http_x_forwarded_proto $the_scheme {
  default $http_x_forwarded_proto;
  "" $scheme;
}
map $http_x_forwarded_host $the_host {
  default $http_x_forwarded_host;
  "" $this_host;
}
map $http_upgrade $proxy_connection {
  default upgrade;
  "" close;
}
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Forwarded-Host $the_host;
proxy_set_header X-Forwarded-Proto $the_scheme;
server {
  listen 0.0.0.0:80;
  listen [::]:80 default_server;
  server_tokens off;
  rewrite ^\/OfficeWeb(\/apps\/.*)$ /web-apps$1 redirect;
  location / {
    proxy_pass http://localhost:8000;
    proxy_http_version 1.1;
  }
}

  创建软连接

sudo ln -s /etc/nginx/sites-available/onlyoffice-documentserver /etc/nginx/sites-enabled/onlyoffice-documentserver

  重启Nginx使配置生效

sudo nginx -s reload

安装PostgreSql

sudo apt-get install postgresql

  创建数据库和用户

sudo -i -u postgres psql -c "CREATE DATABASE onlyoffice;"
sudo -i -u postgres psql -c "CREATE USER onlyoffice WITH password 'onlyoffice';"
sudo -i -u postgres psql -c "GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;"

  导入数据库脚本创建相关的表。注意脚本的目录,为了方便参考此处贴出绝对目录

psql -hlocalhost -Uonlyoffice -d onlyoffice -f /opt/build_master/build_tools/out/linux_64/onlyoffice/documentserver/server/schema/postgresql/createdb.sql

安装RabbitMQ

sudo apt-get install rabbitmq-server

  执行完上面的脚本就完事了,可以执行systemctl status rabbitmq-server看下服务的状态:
在这里插入图片描述

初始化数据

  只需要执行一次就行,往后直接启动就行了(如果是重新编译,需要重新初始化数据,因为编译数据是重新生成的,没有上一次的初始化数据了)
  注意目录,以编译结果目录为主,下图为/opt/build_master/build_tools/out/linux_64/onlyoffice/documentserver目录结构(※fonts目录是生成字体数据时创建的):
在这里插入图片描述

生成字体数据

cd /opt/build_master/build_tools/out/linux_64/onlyoffice/documentserver/
mkdir fonts
LD_LIBRARY_PATH=${PWD}/server/FileConverter/bin server/tools/allfontsgen \
  --input="${PWD}/core-fonts" \
  --allfonts-web="${PWD}/sdkjs/common/AllFonts.js" \
  --allfonts="${PWD}/server/FileConverter/bin/AllFonts.js" \
  --images="${PWD}/sdkjs/common/Images" \
  --selection="${PWD}/server/FileConverter/bin/font_selection.bin" \
  --output-web='fonts' \
  --use-system="true"

生成演示主题

cd /opt/build_master/build_tools/out/linux_64/onlyoffice/documentserver/
LD_LIBRARY_PATH=${PWD}/server/FileConverter/bin server/tools/allthemesgen \
  --converter-dir="${PWD}/server/FileConverter/bin"\
  --src="${PWD}/sdkjs/slide/themes"\
  --output="${PWD}/sdkjs/common/Images"

运行服务

  官网提供的示例都是前台启动程序,这里为了方便可以先起两个会话分别启动文档服务和转换服务,先切换目录到/opt/build_master/build_tools/out/linux_64/onlyoffice/documentserver/server
在这里插入图片描述
  此处可以把全局代理关了,直接编辑vim /etc/profile将代理都注释掉。然后source /etc/profile使其生效。以防万一还是重启比较保险。不用担心NginxPostgreSqlRabbitMQ都是自启的。

启动转换服务

cd out/linux_64/onlyoffice/documentserver/server/FileConverter
LD_LIBRARY_PATH=$PWD/bin \
NODE_ENV=development-linux \
NODE_CONFIG_DIR=$PWD/../Common/config \
./converter

在这里插入图片描述

启动文档服务

cd out/linux_64/onlyoffice/documentserver/server/DocService
NODE_ENV=development-linux \
NODE_CONFIG_DIR=$PWD/../Common/config \
./docservice

在这里插入图片描述

效果验证

基本验证

  因为Nginx直接配置的80端口,所以直接http访问服务IP即可。welcome欢迎页这时候还没有配置,可以先访问api.js试试。
  请求http://192.168.95.133/web-apps/apps/api/documents/api.js:
在这里插入图片描述
  除了这种方式还可以试试别的接口,比如通过Postman请求版本号看看。
  请求http://192.168.95.133/coauthoring/CommandService.ashx
在这里插入图片描述

预览文档

  基本验证只是看看服务运行没运行起来。毕竟最终还是要看文档在线预览的效果。此处除了example还有什么方式可以快速查看效果?~~~~~还真有,官网提供了一个示例工程,效果还十分的不错。

  • 示例说明:https://api.onlyoffice.com/editors/vue
      还好有Vue的,毕竟对React不熟,直接下载git clone https://github.com/ONLYOFFICE/document-editor-vue
    同步依赖包要是npm下的慢可以考虑装个yarn。
    在这里插入图片描述
      找到default.json改一下服务部署的IP地址。随后启动项目看下在线预览的效果:

Word效果

在这里插入图片描述

Excel效果

在这里插入图片描述

PowerPoint效果

在这里插入图片描述

参考资料

  • https://blog.csdn.net/lanyingtianshiabc/article/details/108534623
  • https://blog.csdn.net/huqngqing/article/details/114635793
  • https://github.com/ONLYOFFICE/build_tools

  编译步骤主要都是官网提供的步骤,以上资料的评论很有参考价值。

  • https://www.songbin.top/search?kw=onlyoffice

  这个资料基本就是最全的了,非常具有参考的价值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/367492.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

javaee之node.js与es6

问题1:在IDEA控制台为什么node显示不会出来命令 修改完之后记得重新启动电脑 问题2:response.end()作用 在Web开发中,浏览器端的请求到达服务器进行处理的时候,Response.End的作用就是让request执行到此结束,输出到客户…

移掉K位数字-力扣402-java贪心策略

一、题目描述给你一个以字符串表示的非负整数 num 和一个整数 k ,移除这个数中的 k 位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。示例 1 :输入:num "1432219", k 3输出:"1219&q…

Vue实战第5章:发布Vue工程到github静态页面

前言 本篇在讲什么 简单讲解关于Vue发布github静态页面相关的内容 本篇适合什么 适合初学Vue的小白 适合想要自己搭建网站的新手 本篇需要什么 对Html和css语法有简单认知 对Vue有简单认知 Node.js(博主v18.13.0)的开发环境 Npm(博主v8.19.3)的开发环境 Vue(博主v5.…

< elementUI组件样式及功能补全: 实现点击steps组件跳转对应步骤 >

文章目录👉 前言👉 一、效果演示👉 二、点击steps跳转效果实现👉 三、实现案例往期内容 💨👉 前言 在 Vue elementUi 开发中,elementUI中steps步骤条组件只提供了change方法,并未提…

【Database-03】从 MySQL 迁移到 达梦数据库(DM 8)

1、环境 源数据库 MySQL 8.30 目标数据库 DM 8 操作系统 Centos 9 Steam 迁移工具 DM 数据迁移工具 (DM DTS) 2、开始迁移 2.1、打开DM数据迁移工具 在新建工程对话框中填写工程名和工程描述信息,点击【确定】按钮,成功添加了一个工程。 2.2、新建迁…

海思SD3403/SS928V100开发(5)MIPI_YUV相机vio sample开发----修改思路

1. 前言 sensor输出格式: YUV422 8bit 硬件连接: MIPI_YUV相机(4lane MIPI) -> SS928V100 MIPI0(4lane) 框图: 2. 几个问题 基于SS928 SDK中的 vio sample修改; 但是sample里面都是基于RAW RGB sensor开发的sample, 没有现成的MIPI_YUV sensor的参考,需要自己…

[黑马程序员SSM框架教程] Spring-11-setter注入

思考:向一个类中传递数据要几种? set方法构造方法 思考:依赖注入描述了在容器中建立bean与bean之间依赖关系的过程,如果bean运行需要数字或字符呢 引用类型简单类型(基本数据类型和字符串) 注入方式&#x…

软考学习笔记(题目知识记录) 2023.2.24

答案为 概要设计阶段 本题涉及软件工程的概念 软件工程的任务是基于需求分析的结果建立各种设计模型,给出问题的解决方案 软件设计可以分为两个阶段: 概要设计阶段和详细设计阶段 结构化设计方法中,概要设计阶段进行软件体系结构的设计&…

webpack基础学习,各个loader和plugin的具体配置

一、邂逅Webpack Webpack是什么 webpack是一个静态的模块化打包工具,为现代的JavaScript应用程序; 打包bundler:webpack可以将帮助我们进行打包,所以它是一个打包工具 静态的static:这样表述的原因是我们最终可以将…

(三十)大白话MySQL的redo log buffer中的缓冲日志,到底什么时候可以写入磁盘?

之前我们给大家讲解了一下redo log buffer的缓冲机制,大家现在应该都知道了,redo log在写的时候,都是一个事务里的一组redo log,先暂存在一个地方,完事儿了以后把一组redo log写入redo log buffer。 写入redo log buf…

C++ 动态内存管理

目录 1. C/C内存分布 练习 2. C语言中动态内存管理方式:malloc/calloc/realloc/free 3. C内存管理方式 3.1 new/delete操作内置类型 3.2 new和delete操作自定义类型 4. operator new与operator delete函数 4.1 operator new与operator delete函数&#xff08…

跨境多账号管理教程分享:解决多账号管理混乱问题

如今,跨境电商卖家拥有多平台多账号已经成为常态,但很多人找东哥咨询的担忧都是要如何有效地管理这么多账号,因为如果账号过多,容易被关联,进而影响账号安全。如果你也刚好有这个烦恼,那找东哥真的就是找对…

HEVC 编码速率控制

视频传输带宽通常都会受到一定的限制,为了在满足通信带宽和传输时延限制的情况下有效传输视频数据,保证视频业务的播放质量,需要对视频编码过程进行速率控制,所谓速率控制,就是通过选择一系列编码失真尽量小&#xff0…

「TCG 规范解读」初识 TPM 2.0 库续三

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…

导航定位状态评估专题:“特征”离群点判断与剔除 | 定位状态完整性监控

1、前言:经典状态估计中协方差的计算能准确反映机器人状态的完整性吗?在每一次机器人执行各种目的的自动导航任务时,拥有高精度且可靠状态估计的能力可以说是机器人顺利、安全完成任务的必要条件之一。简而言之,机器人状态估计算法…

Docker Compose

为什么需要使用Docker ComposeDocker Compose 容器编排技术1、现在我们有一个springboot项目,需要依赖Redis、mysql、nginx。如果使用docker原生部署的话,则需要安装Redis、mysql、nginx容器,才可以启动我们springboot项目,这样的…

Flink-CEP理论与实践

一.什么是Flink cepCEP 是复杂事件处理(Complex Event Processing)的缩写,是一种处理实时数据流的技术。它可以在大规模数据流中实时识别出与预定义的模式匹配的事件,并在匹配到事件时采取相应的措施。CEP 技术的应用范围非常广泛…

Web前端:为什么要雇佣全栈开发人员

全栈开发人员是任何软件开发项目的宝贵专家。但是,在某些情况下,它们是企业最需要的。雇佣一名全栈开发人员来监督你的项目,从构思到启动,再到以后,有无数的好处。1.出色的web/应用程序开发人员全栈web开发人员有经验&…

CSS3实现文字循环滚动播放

CSS3实现文字循环滚动播放 效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name&q…

【微信小程序】-- 常用视图容器类组件介绍 -- view、scroll-view和swiper(六)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#…