Lxn-Chan!

(~ ̄▽ ̄)→))* ̄▽ ̄*)o

基于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版本为例。

  1. 首先确保系统是干净的,建议先Purge一下:
    1
    apt autoremove --purge mysql-server* mysql-common
  2. 将刚才下载的tar包解压出来:
    1
    tar -xvf mysql-server_5.7.38-1ubuntu18.04_amd64.deb-bundle.tar
  3. 安装依赖项(不过这些依赖项可能并不都是必需的。都是必需的,我说是就是):
    1
    apt install -y libtinfo5 libjson-perl libaio1 libmecab2
  4. 进入刚才解压出来的文件夹,按如下顺序安装:
    一定要按照顺序一条一条安装,否则必报错还删不干净!!!
    1
    2
    3
    4
    5
    6
    7
    8
    dpkg -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
  5. 最后mysql -uroot -p看一下能否正常登录,能登上就装完了。

Apache2和PHP

  1. 安装Apache2:
    1
    apt install apache2 openssl -y
  2. 设置Apache2绕开80/443端口:
    打开/etc/apache2/ports.conf文件,将里面的原有文字全部注释,然后添加如下行监听随便哪个端口:
    1
    Listen 1919
    因为按照本文计划路径,是不需要Apache2监听443(或者说HTTPS)端口的,因此这里也就不再监听额外端口,由Nginx做外部HTTPS流量代理。
    设置好之后重启一下Apache2:
    1
    2
    systemctl daemon-reload
    systemctl restart apache2
  3. 添加PHP存储库:
    1
    add-apt-repository ppa:ondrej/php
    注:如果感觉PPA太慢了可以看一下这篇文章PPA使用国内CDN加速
  4. 安装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
2
3
extension=curl
extension=mysqli
extension=pdo_mysql

其他配置均不用动,保存后重启Apache2。

Nginx

安装Nginx作为外部代理,其实在本案例中直接用Apache2也是一样的。

  1. Nginx的安装就简单了:
    1
    apt install -y nginx
  2. 把刚才申请的域名证书放在某个位置,然后把路径完整复制出来。
  3. /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
    34
    server {
    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
  4. 重载nginx:
    1
    systemctl restart nginx
  5. 此时访问https://dzz.anavi.cn,如果能够正确出现Apache2 Ubuntu Default Page即可。
  6. (此步非必须,按照实际情况操作)如果是从APT源安装的Apache2和Nginx则需要打开/etc/nginx/sites-available/default,找到root /var/www/html;行,将里面的路径改到别的地方(随便哪个空文件夹都行,但是必须是实际存在且不包含敏感数据的文件夹),否则会和Apache2的数据文件夹产生冲突留下安全隐患,修改好后重启nginx即可。

创建数据库

这一步主要是创建数据库以便DzzOffice连接。

  1. 进入数据库:
    1
    mysql -uroot -p
  2. 输入密码后创建数据库:
    1
    CREATE DATABASE IF NOT EXISTS dzzoffice DEFAULT CHARACTER SET = utf8mb4 DEFAULT COLLATE = utf8mb4_general_ci;
  3. 创建用户,将命令行内{password}改为你的自定义密码,不要使用Root密码
    1
    CREATE USER 'dzzoffice'@'localhost' IDENTIFIED BY '{password}';
  4. 授予用户访问数据库的权限并强制刷新权限:
    1
    2
    GRANT ALL PRIVILEGES ON dzzoffice.* TO 'dzzoffice'@'localhost' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
  5. 最后退出数据库即可。

安装DzzOffice

其实这一步反而是整个流程中最简单的,因为只需要你解压之后访问WebUI即可。

导入主程序文件

  1. /var/www/html文件夹,清空里面的所有文件;
  2. 将刚才下载DzzOffice主程序包整个解压到/var/www/html文件夹内。

导入完成。

设置权限

将主程序下的dataconfig两个文件夹设置递归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证书。操作这里不再赘述,根据上面操作重新来一遍就行了。

参考资料

排名不分先后。

本站文章

非本站文章

 简单说两句



联系站长 | 安装证书 | 友情链接

备案号:辽ICP备19013963号

萌ICP备 20219421 号

中国互联网违法和不良信息举报中心

架构版本号:8.1.1 | 本站已全面支持IPv6

本站由又拍云提供CDN加速服务和存储服务

正在载入运行数据(1/2)请稍后...
正在载入运行数据(2/2)请稍后...

Copyright 2023 LingXuanNing, All rights reserved.