使用 Nextcloud 的过程中,不免要浏览、编辑一些 Office 文档(Word、PPT、Excel 等等)。之前已经谈到借助Collabora Online实现,当然,除了 Collabora Online 之外,还可以使用 ONLYOFFICE 的文档服务 Document Server。本文讲解如何在 Ubuntu/Debian 系统上正确部署 ONLYOFFICE Document Server。
系统要求
- CPU:2 核心 2GHz 及以上
- 内存:2GB 及以上
- 硬盘:至少 40GB 的可用空间
- 系统:Ubuntu/Debian 或其他兼容系统,内核在 3.13 版本以上
- 软件环境(接下来的内容中有详细的安装过程)
- Nextcloud: 11.0.0+
- PostgreSQL: 9.1+
- NGINX: 1.3.13+
- Node.js: 6.9.1+
- libstdc++6: 4.84+
- Redis
- RabbitMQ
当然了,如果自己一个人用的话,没必要非得满足它的硬件要求。事实上一个 1 核 1GB,25GB SSD 的 VPS 就已经够用了。
如果可以的话,建议单独部署 ONLYOFFICE 到另外的服务器上,因为 Nextcloud 所用的 Apache 与 Nginx 会有端口上的冲突,会导致安装失败(本文会详解如何解决)。
安装 Nextcloud
安装文档服务(Document Server)
ONLYOFFICE Document Server 基于 nodejs 和 c 编写,以 Nginx 作为反向代理服务器,PostgreSQL 作为数据库。需要提前安装以下以依赖:
- libcurl3
- libxml2
- supervisor
- fonts-dejavu
- fonts-liberation
- ttf-mscorefonts-installer
- fonts-crosextra-carlito
- fonts-takao-gothic
- fonts-opensymbol
安装依赖
1.首先要保证你所用的 apt 源和 nodejs 版本是最新的。可以忽略掉这一步。
使用官方的 apt 源(用于安装最新的 ttf-mscorefonts-installer):
1
|
echo “deb http://archive.ubuntu.com/ubuntu precise main universe multiverse” | sudo tee –a /etc/apt/sources.list
|
获得最新版本的 node.js:
1
2
|
curl –sL https://deb.nodesource.com/setup_6.x | sudo bash –
sudo apt–get install nodejs
|
2.安装 PostgreSQL
使用 apt-get 安装:
1
|
sudo apt–get install postgresql
|
安装完成后,为 ONLYOFFICE 添加数据库和用户。数据库和用户名为“onlyoffice”(不可修改),密码为“onlyoffice”(可以修改成你自己的)。
1
2
3
|
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
1
|
sudo apt–get install redis–server
|
4.安装 rabbitmq:
1
|
sudo apt–get install rabbitmq–server
|
修改 Document Server 的默认端口
Document Server 的默认使用 80 端口,如果要和 Apache 跑在同一服务器上的话,这显然是不可取的。
可以使用以下命令修改端口:
1
|
echo onlyoffice–documentserver onlyoffice/ds–port select <端口号> | sudo debconf–set–selections
|
比如我要将它修改为 8000 端口:
1
|
echo onlyoffice–documentserver onlyoffice/ds–port select 8000 | sudo debconf–set–selections
|
安装 Document Server
1.添加 GPG key:
1
|
sudo apt–key adv —keyserver hkp://keyserver.ubuntu.com:80 —recv–keys CB2DE8E5
|
2.添加 ONLYOFFICE 的 apt 源:
1
2
|
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:
1
|
sudo apt–get install onlyoffice–documentserver
|
安装过程中会要求输入刚才设置的 PostgreSQL 的密码:
然后安装 ttf-mscorefonts-installer,按 Tab 键然后回车。
询问是否接受 EULA 协议,选择“YES”
之后会出现 Nginx 启动失败报错,安装退出的情况:
这是因为 Nginx 默认的配置是要监听 80 端口的,而 80 端口已经被 Apache 占用,所以报错:nginx: [emerg] listen() to [::]:80, backlog 511 failed (98: Address already in use)。
可以关掉 Apache,先完成 Document Server 的安装:
1
2
|
sudo systemctl stop apache2
sudo apt–get install onlyoffice–documentserver
|
安装顺利完成:
处理 Nginx 和 Apache 之间的冲突
在之前的步骤中为了完成 Document Server 的安装暂时关掉了 Apache,现在我们需要让 Nginx 不再使用 80 端口。
删除 Nginx 的默认虚拟主机文件:
1
|
sudo rm /etc/nginx/sites–available/default
|
开启 HTTPS
如果你的 Nextcloud 和 ONLYOFFICE 不是跑在同一服务器上,为了防止遭到劫持,有必要开启 HTTPS 访问。
在此之前你需要一个 SSL 证书,可以是自签名的,也可从 ca 机构申请:
用以下命令将
/etc/nginx/conf.d/onlyoffice–documentserver–ssl.conf.template
拷贝为
/etc/nginx/conf.d/onlyoffice–documentserver.conf
:
1
|
sudo cp –f /etc/nginx/conf.d/onlyoffice–documentserver–ssl.conf.template /etc/nginx/conf.d/onlyoffice–documentserver.conf
|
编辑
onlyoffice–documentserver.conf
文件:
1
|
sudo vim /etc/nginx/conf.d/onlyoffice–documentserver.conf
|
将前两个 server{}块全部注释掉:
将端口修改为 8001:
修改 SSL 配置,将
{{SSL_CERTIFICATE_PATH}}
和
{{SSL_KEY_PATH}}
分别修改为 SSL 证书所在的位置:
修改后的示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
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
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://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:
1
|
sudo systemctl restart nginx
|
启动 Apache:
1
|
sudo systemctl start apache2
|
配置 Nextcloud
到应用->Office & Text 找到 Onlyoffice,启用它:
然后到管理->基本设置,输入 Document Server 服务器地址,点击“Save”保存。
然后就可以创建编辑 Office 文档了:
等待文档加载完成:
Enjoy it!
关于中文的显示问题
因为字体的原因,所以 OnlyOffice 并不能像 Collabora Online 一样正常显示中文,往往会成这个样子:
可以把中文的字体改成 TakaoExGothic,但这个字体也不完善。
我们可以手动添加字体,比如我们常用的微软雅黑:
先下载微软雅黑字体:微软雅黑字体下载,解压得到*.tff 文件,然后用 Filezilla 等工具把字体文件上传到
/usr/share/fonts/
目录中。
执行 documentserver-generate-allfonts.sh 导入字体文件:
1
|
sudo bash documentserver–generate–allfonts.sh
|
然后清除浏览器缓存!清除浏览器缓存!清除浏览器缓存!重说三!
重新打开原先的文档,就可以在字体一栏找到刚才添加的微软雅黑字体(Microsoft YaHei):
你也可以用这个方法添加自己喜欢的字体。