基于Ubuntu操作系统部署免费开源OA:DzzOffice和周边插件。
DzzOffice 简单介绍
DzzOffice是一套开源办公套件,适用于企业、团队搭建自己的 类似“Google企业应用套件”、“微软Office365”的企业协同办公平台。
我个人的评价是是一套适合小型企业或团队的OA套件,功能比较强大,后端支持对接多种云端服务,支持Office在线协作编辑。
前期准备
建议在开始安装前完整阅读本文,并按照本节清单准备对应性能水平的设备与对应版本的程序包。
基础环境和软件版本
我采用的是Ubuntu 20.04.5 Server LTS版本(全新安装),主机配置为8核8G内存128G硬盘。
DzzOffice版本为2.02.1
,于Github Release下载。
PHP使用7.2
版本,MySQL使用5.7
版本。
MySQL离线安装包下载
由于Ubuntu的APT仓库已不再提供旧版本的MySQL,默认安装出来应该就是8.0,因此这里需要离线安装。至于DzzOffice是否兼容8.0版本的MySQL,我这里没有测试。
打开ustc的MySQL镜像源页面,找到mysql-server_<Version>-1ubuntu18.04_<arch>.deb-bundle.tar
文件,其中Version
找最新的,arch
根据实际架构情况选择,该包即为离线的完整安装包。
域名和SSL
这一步是可选项,需要根据不同的情况去决定。
- 如果只是内网使用内网访问,则这一步可以忽略(最简单);
- 如果是在公网上用IP访问,则这一步也可以忽略(最低安全性);
- 如果是在公网上使用域名访问,则只需要将本机IP解析到对应的域名即可(最低安全性);
- 如果是在公网上使用域名访问且对安全性有要求,则需要将本机IP解析到对应的域名,并为对应的域名申请SSL证书。
基础环境配置和准备
这一步主要是一些基础的环境配置和组件准备。
MySQL
DzzOffice 支持 MySQL5+ 版本,这里以5.7版本为例。
- 首先确保系统是干净的,建议先Purge一下:
1
apt autoremove --purge mysql-server* mysql-common
- 将刚才下载的tar包解压出来:
1
tar -xvf mysql-server_5.7.38-1ubuntu18.04_amd64.deb-bundle.tar
- 安装依赖项(
不过这些依赖项可能并不都是必需的。都是必需的,我说是就是):1
apt install -y libtinfo5 libjson-perl libaio1 libmecab2
- 进入刚才解压出来的文件夹,按如下顺序安装:
一定要按照顺序一条一条安装,否则必报错还删不干净!!!1
2
3
4
5
6
7
8dpkg -i mysql-common_5.7.38-1ubuntu18.04_amd64.deb
dpkg -i mysql-community-client_5.7.38-1ubuntu18.04_amd64.deb
dpkg -i libmysqlclient20_5.7.38-1ubuntu18.04_amd64.deb \
libmysqlclient-dev_5.7.38-1ubuntu18.04_amd64.deb
dpkg -i mysql-client_5.7.38-1ubuntu18.04_amd64.deb
dpkg -i mysql-community-server_5.7.38-1ubuntu18.04_amd64.deb
# 安装到这一步会让设置Root密码,正常设置即可
dpkg -i mysql-server_5.7.38-1ubuntu18.04_amd64.deb - 最后
mysql -uroot -p
看一下能否正常登录,能登上就装完了。
Apache2和PHP
- 安装Apache2:
1
apt install apache2 openssl -y
- 设置Apache2绕开80/443端口:
打开/etc/apache2/ports.conf
文件,将里面的原有文字全部注释,然后添加如下行监听随便哪个端口:因为按照本文计划路径,是不需要Apache2监听443(或者说HTTPS)端口的,因此这里也就不再监听额外端口,由Nginx做外部HTTPS流量代理。1
Listen 1919
设置好之后重启一下Apache2:1
2systemctl daemon-reload
systemctl restart apache2 - 添加PHP存储库:注:如果感觉PPA太慢了可以看一下这篇文章PPA使用国内CDN加速
1
add-apt-repository ppa:ondrej/php
- 安装PHP 7.2该命令会自动安装如下包:
1
apt install php7.2 php7.2-mysql php7.2-xml php7.2-curl php7.2-zip php7.2-gd
libapache2-mod-php7.2 php-common php7.2 php7.2-cli php7.2-common php7.2-json php7.2-opcache php7.2-readline
,包含全部DzzOffice需要的组件。
至此Apache2和PHP就安装完成了,由于本文的逻辑是使用Nginx作为外部流量代理,因此直接使用默认的Apache2的配置即可。
PHP配置
打开/etc/php/7.2/apache2/php.ini
文件,找到extension=mysqli
(在大概800多行,就别手动往下滑了,直接查找吧),取消如下行的注释:
1 | extension=curl |
其他配置均不用动,保存后重启Apache2。
Nginx
安装Nginx作为外部代理,其实在本案例中直接用Apache2也是一样的。
- Nginx的安装就简单了:
1
apt install -y nginx
- 把刚才申请的域名证书放在某个位置,然后把路径完整复制出来。
- 在
/etc/nginx/conf.d
目录下新建配置文件:写完配置文件后保存测试一下: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
34server {
listen 80;
# 填自己的域名
server_name dzz.anavi.cn;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
server {
listen 443 ssl http2;
# 填自己的域名
server_name dzz.anavi.cn;
# SSL证书(*.crt/*.pem)
ssl_certificate /etc/nginx/cert/dzz.anavi.cn_bundle.crt;
# SSL证书密钥(*.key)
ssl_certificate_key /etc/nginx/cert/dzz.anavi.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers on;
location / {
# 如果上面的端口号改过则这里也要改
proxy_pass http://localhost:1919;
# 防止跳转错误
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 要求浏览器转换HTTP到HTTPS,避免混合内容被ban的问题
add_header Content-Security-Policy upgrade-insecure-requests;
}
}1
nginx -t
- 重载nginx:
1
systemctl restart nginx
- 此时访问
https://dzz.anavi.cn
,如果能够正确出现Apache2 Ubuntu Default Page
即可。 - (此步非必须,按照实际情况操作)如果是从APT源安装的Apache2和Nginx则需要打开
/etc/nginx/sites-available/default
,找到root /var/www/html;
行,将里面的路径改到别的地方(随便哪个空文件夹都行,但是必须是实际存在且不包含敏感数据的文件夹),否则会和Apache2的数据文件夹产生冲突留下安全隐患,修改好后重启nginx即可。
创建数据库
这一步主要是创建数据库以便DzzOffice连接。
- 进入数据库:
1
mysql -uroot -p
- 输入密码后创建数据库:
1
CREATE DATABASE IF NOT EXISTS dzzoffice DEFAULT CHARACTER SET = utf8mb4 DEFAULT COLLATE = utf8mb4_general_ci;
- 创建用户,将命令行内
{password}
改为你的自定义密码,不要使用Root密码:1
CREATE USER 'dzzoffice'@'localhost' IDENTIFIED BY '{password}';
- 授予用户访问数据库的权限并强制刷新权限:
1
2GRANT ALL PRIVILEGES ON dzzoffice.* TO 'dzzoffice'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES; - 最后退出数据库即可。
安装DzzOffice
其实这一步反而是整个流程中最简单的,因为只需要你解压之后访问WebUI即可。
导入主程序文件
- 到
/var/www/html
文件夹,清空里面的所有文件; - 将刚才下载DzzOffice主程序包整个解压到
/var/www/html
文件夹内。
导入完成。
设置权限
将主程序下的data
和config
两个文件夹设置递归0777。
设置DzzOffice
打开安装页面按照向导提示安装即可。
1 | https://dzz.anavi.cn/install/ |
删除安装器
为确保安全,当安装完成后出现“恭喜!安装成功”后,删除主程序目录下的install
文件夹。
OnlyOffice部署
本来是想写手动部署的,但是本地测试的时候反复失败,遂放弃,还是用Docker好。
OnlyOffice的部署不是必需的,且OnlyOffice需要的性能会比较高,通常建议单独部署在一台虚拟机上。
安装Docker
详见本站文章Docker手记。
拉取仓库
1 | docker run -i -t -d -p 8080:80 --restart=always onlyoffice/documentserver |
成功拉取仓库之后访问http://ip:8080
,此时应该会有“ONLYOFFICE Docs Community Edition installed”的页面,提示安装成功。
注意
由于上面Nginx反代的时候就已经强制启用HSTS了,因此OnlyOffice也必须要有自己的域名和SSL证书。操作这里不再赘述,根据上面操作重新来一遍就行了。
参考资料
排名不分先后。