使用Nextcloud的过程中,不免要浏览、编辑一些Office文档(Word、PPT、Excel等等)。之前已经谈到借助Collabora Online实现,当然,除了Collabora Online之外,还可以使用ONLYOFFICE的文档服务Document Server。本文讲解如何在Ubuntu/Debian系统上正确部署ONLYOFFICE Document Server。
如果可以的话,建议单独部署ONLYOFFICE到另外的服务器上,因为Nextcloud所用的Apache与Nginx会有端口上的冲突,会导致安装失败(本文会详解如何解决)。
ONLYOFFICE Document Server基于nodejs和c编写,以Nginx作为反向代理服务器,PostgreSQL作为数据库。需要提前安装以下以依赖:
1.首先要保证你所用的apt源和nodejs版本是最新的。可以忽略掉这一步。
使用官方的apt源(用于安装最新的ttf-mscorefonts-installer):
echo "deb http://archive.ubuntu.com/ubuntu precise main universe multiverse" | sudo tee -a /etc/apt/sources.list
获得最新版本的node.js:
curl -sL https://deb.nodesource.com/setup_6.x | sudo bash -
sudo apt-get install nodejs
2.安装PostgreSQL
使用apt-get安装:
sudo apt-get install postgresql
安装完成后,为ONLYOFFICE添加数据库和用户。数据库和用户名为“onlyoffice”(不可修改),密码为“onlyoffice”(可以修改成你自己的)。
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;"
3.安装Redis
sudo apt-get install redis-server
4.安装rabbitmq:
sudo apt-get install rabbitmq-server
Document Server的默认使用80端口,如果要和Apache跑在同一服务器上的话,这显然是不可取的。
可以使用以下命令修改端口:
echo onlyoffice-documentserver onlyoffice/ds-port select <端口号> | sudo debconf-set-selections
比如我要将它修改为8000端口:
echo onlyoffice-documentserver onlyoffice/ds-port select 8000 | sudo debconf-set-selections
1.添加GPG key:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5
2.添加ONLYOFFICE的apt源:
sudo echo "deb http://download.onlyoffice.com/repo/debian squeeze main" | sudo tee /etc/apt/sources.list.d/onlyoffice.list
sudo apt-get update
3.安装Document Server:
sudo apt-get install onlyoffice-documentserver
然后安装ttf-mscorefonts-installer,按Tab键然后回车。
询问是否接受EULA协议,选择“OK”
之后会出现Nginx启动失败报错,安装退出的情况:
这是因为Nginx默认的配置是要监听80端口的,而80端口已经被Apache占用,所以报错:nginx: [emerg] listen() to [::]:80, backlog 511 failed (98: Address already in use)。
可以关掉Apache,先完成Document Server的安装:
sudo systemctl stop apache2
sudo apt-get install onlyoffice-documentserver
安装顺利完成:
在之前的步骤中为了完成Document Server的安装暂时关掉了Apache,现在我们需要让Nginx不再使用80端口。
删除Nginx的默认虚拟主机文件:
sudo rm /etc/nginx/sites-available/default
如果你的Nextcloud和ONLYOFFICE不是跑在同一服务器上,为了防止遭到劫持,有必要开启HTTPS访问。
在此之前你需要一个SSL证书,可以是自签名的,也可从ca机构申请:
用以下命令将
/etc/nginx/conf.d/onlyoffice-documentserver-ssl.conf.template
拷贝为
/etc/nginx/conf.d/onlyoffice-documentserver.conf
:
sudo cp -f /etc/nginx/conf.d/onlyoffice-documentserver-ssl.conf.template /etc/nginx/conf.d/onlyoffice-documentserver.conf
编辑
onlyoffice-documentserver.conf
文件:
sudo vim /etc/nginx/conf.d/onlyoffice-documentserver.conf
将前两个server{}块全部注释掉:
将端口修改为8001:
修改SSL配置,将
{{SSL_CERTIFICATE_PATH}}
和
{{SSL_KEY_PATH}}
分别修改为SSL证书所在的位置:
修改后的示例:
include /etc/nginx/includes/onlyoffice-http.conf;
## Normal HTTP host
#server {
# listen 0.0.0.0:8000;
# listen [::]:8000 default_server;
# server_name _;
# server_tokens off;
#
## Redirects all traffic to the HTTPS host
# root /nowhere; ## root doesn't have to be a valid path since we are redirecting
# rewrite ^ https://$host$request_uri? permanent;
#}
#HTTP host for internal services
#server {
# listen 127.0.0.1:8000;
# listen [::1]:8000;
# server_name localhost;
# server_tokens off;
#
# include /etc/nginx/includes/onlyoffice-documentserver-common.conf;
# include /etc/nginx/includes/onlyoffice-documentserver-docservice.conf;
#}
## HTTPS host
server {
listen 0.0.0.0:8001 ssl;
listen [::]:8001 ssl default_server;
server_tokens off;
root /usr/share/nginx/html;
## Strong SSL Security
## https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
ssl on;
ssl_certificate /etc/nginx/cert/214212938360415.pem;
ssl_certificate_key /etc/nginx/cert/214212938360415.key;
ssl_verify_client off;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security max-age=31536000;
# add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
## [Optional] If your certficate has OCSP, enable OCSP stapling to reduce the overhead and latency of running SSL.
## Replace with your ssl_trusted_certificate. For more info see:
## - https://medium.com/devops-programming/4445f4862461
## - https://www.ruby-forum.com/topic/4419319
## - https://www.digitalocean.com/community/tutorials/how-to-configure-ocsp-stapling-on-apache-and-nginx
# ssl_stapling on;
# ssl_stapling_verify on;
# ssl_trusted_certificate /etc/nginx/ssl/stapling.trusted.crt;
# resolver 208.67.222.222 208.67.222.220 valid=300s; # Can change to your DNS resolver if desired
# resolver_timeout 10s;
## [Optional] Generate a stronger DHE parameter:
## cd /etc/ssl/certs
## sudo openssl dhparam -out dhparam.pem 4096
##
# ssl_dhparam /etc/ssl/certs/dhparam.pem;
include /etc/nginx/includes/onlyoffice-documentserver-*.conf;
}
重启Nginx:
sudo systemctl restart nginx
启动Apache:
sudo systemctl start apache2
到应用->Office & Text找到Onlyoffice,启用它:
然后到管理->基本设置,输入Document Server服务器地址,点击“Save”保存。
然后就可以创建编辑Office文档了:
等待文档加载完成:
Enjoy it!
因为字体的原因,所以OnlyOffice并不能像Collabora Online一样正常显示中文,往往会成这个样子:
可以把中文的字体改成TakaoExGothic,但这个字体也不完善。
我们可以手动添加字体,比如我们常用的微软雅黑:
先下载微软雅黑字体:微软雅黑字体下载,解压得到*.tff文件,然后用Filezilla等工具把字体文件上传到
/usr/share/fonts/
目录中。
执行documentserver-generate-allfonts.sh导入字体文件:
sudo bash documentserver-generate-allfonts.sh
然后清除浏览器缓存!清除浏览器缓存!清除浏览器缓存!重说三!
重新打开原先的文档,就可以在字体一栏找到刚才添加的微软雅黑字体(Microsoft YaHei):
你也可以用这个方法添加自己喜欢的字体。
本文由 橙叶博客 作者:FrankGreg 发表,转载请注明来源!
你好请问为什么上传的word,excel ppt这些文档不能在线编辑啊,只有通过+号按钮创建的才能在线编辑,这是为什么?
调用的ssl目录在哪里?找不到*.pem 找了很久都没有找到。
在安装onlyoffice时,输入sql密码后。解压安装出现错误
Errors were encountered while processing:
onlyoffice-documentserver
E: Sub-process /usr/bin/dpkg returned an error code (1)
我部署好了,nextcloud跟onlyoffice,也能正常打开docx xlsx这些格式,但无法打开doc xls这些,怎么解决?
你好,5月份部署时遇到Error when trying to connect (Bad Request or timeout error)这个错误您是周末解决的?
查一下Nextcloud的日志,需要具体原因。
感谢回复:报错信息如下:
{“reqId”:”FZe8HvZEAgIVtL0olpTt”,”level”:2,”time”:”2018-08-06T16:15:03+00:00″,”remoteAddr”:”192.168.119.5″,”user”:”–“,”app”:”core”,”method”:”PROPFIND”,”url”:”\/remote.php\/webdav”,”message”:”Login failed: ‘jayimu’ (Remote IP: ‘192.168.119.5’)”,”userAgent”:”Mozilla\/5.0 (iOS) Nextcloud-iOS\/2.21.3″,”version”:”13.0.5.2″}
{“reqId”:”qxP7lE5dZHtGBhKQuhfT”,”level”:2,”time”:”2018-08-06T16:15:15+00:00″,”remoteAddr”:”192.168.119.5″,”user”:”–“,”app”:”core”,”method”:”GET”,”url”:”\/ocs\/v2.php\/cloud\/user?format=json”,”message”:”Login failed: ‘jayimu’ (Remote IP: ‘192.168.119.5’)”,”userAgent”:”Mozilla\/5.0 (iOS) Nextcloud-iOS\/2.21.3″,”version”:”13.0.5.2″}
请问下我在添加onlyoffice服务地址的时候,总是提示:Error when trying to connect (Bad Request or timeout error)
但是我的onlyoffice欢迎界面可以出来,也能通过EngineerCMS实现文档在线编辑。这个是什么原因呢。
这个确实诡异…不好说
Error when trying to connect (Bad Request or timeout error) 出现这个错误,大哥可有解决办法?
大哥,这个问题你是否已经解决
我也是一样的情况,你是否有解决办法
nextcloud的配置文件config.php中让’verify_peer_off’ => true,才能保证nextcloud上的插件onlyoffice也支持http
onlyoffice安装配置并启动完成,也能通过ip:port看到页面了,nextcloue插件也已安装成功。但是在插件中写入ip:port后无法保存。报错为,Error when trying to connect (Bad Request or timeout error),请问是什么原因呢?(没有使用Docker,直接配置yum安装的,通过nginx)
需要代理为443或80端口,不能使用ip+端口的形式
我通过443方式,不加端口仍然出现“Error when trying to connect (Error occurred in the document service: Conversion error)”错误。
onlyoffice.cto100.net
Document Editing Service address
h tt p://192.168.3.228:8001/”
我直接用h t tp搞定了 内网使用,不用ht t ps
不知道是不是这个原因可以
你是直接改的HTTP端口就可以用了吗
问题解决了么
你现在解决这个问题了吗
百度 如何在 Windows 上 使用 ONLYOFFICE 协同编辑文档
专门针对界面汉化和中文字体
453f0c7b133c6f26083746137bb09664这是啥
容器id啊。
安装Onlyoffice-documentserver 提示找不到包
用离线安装或加速器。
这个域名和nextcloud有设么关系吗?
没有直接的关系
你好,大神,终于又看到你的教程文章了。nextcloud我是部署CENTOS7 在LAMP的环境下,能否写个CENTOS 7的环境下的部署,是否会有差异。谢谢啊!
CentOS可以用Docker部署,比较方便。
使用Docker部署ONLYOFFICE Document Server:<a href="https://www.orgleaf.com/2588.html"></a>
在docker中部署都是一样的。就是拉取和运行,关键就是改一下字体。再者就是二次开发了。