部署常见问题

如何重新安装

  1. 停止可能已经运行的明道云服务,在安装管理器根目录执行 bash ./service.sh stopall(正常情况下停止成功输出 stoped);
  2. 备份明道云服务文件,mv /data/mingdao/ /home/mingdaobak/(具体备份目标位置可自定义,一般首次部署时不需要,可直接 rm -rf /data/mingdao/);
  3. 再次确认是否已清理干净,分别执行 docker ps | grep mingdaoyunnetstat -ntpl | grep 38881ps -ef | grep 'mingdaoyun\|service.sh' | grep -v grep 确保输出结果都为空;
  4. 重启安装管理器,bash ./service.sh start,访问 http://{服务器IP}:38881 再次安装。

初始化失败

可通过执行命令 cat /data/mingdao/script/mingdaoyun.log 查看失败原因,大部分情况下是 空间不足镜像不存在端口被占用iptables failed 等,如果 iptables failed,原因是关闭防火墙时会清空 iptables 规则,所以需要重启 Docker 重新生成 Docker 默认的 iptables 规则,解决问题后 重新安装

容器内无法访问互联网

使用 firewalld 作为防火墙的情况下如出现容器无法访问外部网络(正常情况下,明道云服务并不需要与互联网互通,但不可避免有些系统功能需要使用到互联网,如:邮件、短信发送通道),则需添加下面的防火墙规则,2条命令都执行即可(172.16.0.1/12这个是容器网段):

允许容器网段访问互联网(永久生效)

firewall-cmd --zone=trusted --add-source=172.16.0.1/12 --permanent

允许容器网段访问互联网(临时生效)

firewall-cmd --zone=trusted --add-source=172.16.0.1/12

如何设置开机启动(CentOS示例)

修改 /etc/rc.local(确保该文件具有可执行权限),加入如下脚本:

sleep 30
docker system prune -f
/bin/rm -f {安装管理器绝对路径}/service.pid
/bin/bash {安装管理器绝对路径}/service.sh startall

服务器重启后,明道云服务无法正常启动

安装管理器根目录下执行 bash ./service.sh stopall,如果依然存在 service.pid ,删除 rm -f service.pid,执行 bash ./service.sh startall,等待命令执行完成即可。

因断电等意外情况发送后,明道云服务重启后工作流、统计等功能无法正常使用

  1. 停止服务,安装管理器根目录下执行 bash ./service.sh stopall
  2. 备份 /data/mingdao/
  3. 执行命令 rm -rf /data/mingdao/script/volume/data/{kafka,zookeeper}/* 删除消息队列中的异常数据,正常情况不会造成数据丢失(除非有未执行完成的工作流);
  4. 安装管理器根目录下执行 bash ./service.sh startall,等待命令执行完成即可。

文档无法在线预览

由于文档预览服务需要从微服务应用中读取文件,如果内网环境无法访问系统对外访问地址,则会出现文档预览失败。这种情况下需要在 docker-compose.yaml 的 doc 配置中加入环境变量 ENV_FILE_INNER_URI,指定系统内网访问地址,参考如下:

services:
  doc:
    environment:
      ENV_FILE_INNER_URI: "10.140.100.6:8880"

工作表导出 Excel 失败

由于有些表单数据量问题,导出有时候会出现 504 Gateway Time-out 等情况,这一般是由于代理层默认超时时间和文件大小限制问题,可添加如下规则(nginx 为例):

location ^~/excelapi {
  proxy_set_header Host $http_host;
  proxy_read_timeout 1800s;
  client_max_body_size  256m;
  proxy_pass http://mdy;  # 这里按实际 upstream 名称进行调整
}

图片无法显示、附件无法下载

在对明道云服务添加代理的情况下,使用代理地址进行访问需要确保 /data/mingdao/script/docker-compose.yaml 中的相关环境变量与访问地址一致,可参考:设置代理

如何开启子路径方式部署

docker-compose.yaml 中调整环境变量 MINIO_DOMAINENV_MINGDAO_SUBPATH,如下:

services:
  app:
    environment:
      ENV_MINGDAO_SUBPATH: "/mdy"       # 新增,如:/mdy
      MINIO_DOMAIN: HOST:PORT/mdy/file  # 修改,如:mdy.domain.com:80/mdy/file

如何修改默认的存储路径 /data/mingdao

新安装

在启动明道云安装管理器前(即执行 ./service.sh start 前),先创建 /etc/pdcaptain.json,指定 dataDir 属性,启动后的相关文件都会存放在 /app/mingdao 目录下,配置格式如下:

{ 
  "dataDir": "/app/mingdao" 
}

迁移

对于已安装过的明道云情况,同样是创建 /etc/pdcaptain.json ,指定数据存储目录 dataDir。在明道云服务停止的情况下,将 /data/mingdao 目录下的文件全部移到 dataDir 下,然后重启服务即可。

外部如何访问各存储组件

单机部署模式下,容器内默认会启动依赖的各存储组件,包括:mysqlmongodbrediskafkafileelasticsearch,而这些组件的端口默认并不对外,如果需要外部连接,可通过修改 docker-compose.yaml 中的 ports 节点暴露对应端口,如下:

services:
  app:
    ports
    - 8880:8880
    - 3306:3306   # mysql
    - 27017:27017 # mongodb
    - 6379:6379   # redis
    - 9092:9092   # kafka
    - 9000:9000   # file
    - 9200:9200   # elasticsearch

单机部署模式下如何部分启用外部存储组件

docker-compose.yaml 中设置环境变量 ENV_STANDALONE_DISABLE_SERVICES,支持设置 mysqlmongodbrediskafkafileelasticsearch ,如下:

services:
  app:
    environment:
      ENV_STANDALONE_DISABLE_SERVICES: "redis,file"  # 多个则使用英文逗号分隔

启用自定义存储组件需要将对应服务的连接地址通过环境变量进行配置,参考环境变量说明

如何自定义 mongodb 最大使用内存

docker-compose.yaml 中设置环境变量 ENV_MONGODB_CACHEGB,默认是 (物理内存-10)/2(单位:G),如下:

services:
  app:
    environment:
      ENV_MONGODB_CACHEGB: 3

如何被其他系统通过 IFrame 引用

默认支持嵌入同域下的 IFrame 使用,如果希望被其他系统引入,可通过修改 docker-compose.yaml 设置环境变量 ENV_FRAME_OPTIONS,支持设置:ALLOWALLSAMEORIGINDENYALLOW-FROM uri

services:
  app:
    environment:
      ENV_FRAME_OPTIONS: "ALLOWALL"

如何自定义工作流 Webhook 执行超时时间

docker-compose.yaml 中设置环境变量 ENV_WORKFLOW_WEBHOOK_TIMEOUT,默认 10(单位:秒),如下:

services:
  app:
    environment:
      ENV_WORKFLOW_WEBHOOK_TIMEOUT: 30

如何自定义工作流代码块执行超时时间

docker-compose.yaml 中设置环境变量 ENV_WORKFLOW_COMMAND_TIMEOUT,默认 10(单位:秒),如下:

services:
  app:
    environment:
      ENV_WORKFLOW_COMMAND_TIMEOUT: 30

如何自定义工作流消息队列的消费线程数

在修改工作流消息队列的消费线程数前,需要先调整 Kafka 中相关 Topic(WorkFlowWorkFlow-BatchWorkFlow-ButtonWorkFlow-ProcessWorkSheetWorkSheet-Batch)的分区数,默认是3,消费线程数设置请不要大于分区数。

  1. 进入容器:docker exec -it $(docker ps | grep mingdaoyun-community | awk '{print $1}') bash

  2. 执行以下命令可查看现有分区数和消息堆积情况

    /usr/local/kafka/bin/kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --describe --group md-workflow-consumer
    
  3. 如果有需要可分别执行以下命令进行分区数调整(如调整为10个分区)

    /usr/local/kafka/bin/kafka-topics.sh --alter --zookeeper localhost:2181 --partitions 10 --topic WorkFlow
    /usr/local/kafka/bin/kafka-topics.sh --alter --zookeeper localhost:2181 --partitions 10 --topic WorkFlow-Batch 
    /usr/local/kafka/bin/kafka-topics.sh --alter --zookeeper localhost:2181 --partitions 10 --topic WorkFlow-Button 
    /usr/local/kafka/bin/kafka-topics.sh --alter --zookeeper localhost:2181 --partitions 10 --topic WorkFlow-Process
    /usr/local/kafka/bin/kafka-topics.sh --alter --zookeeper localhost:2181 --partitions 10 --topic WorkSheet 
    /usr/local/kafka/bin/kafka-topics.sh --alter --zookeeper localhost:2181 --partitions 10 --topic WorkSheet-Batch
    
  4. docker-compose.yaml 中设置环境变量 ENV_WORKFLOW_CONSUMER_THREADS,默认 3(设置的值不要过分大,需确保服务器可承受),如下:

     services:
       app:
         environment:
           ENV_WORKFLOW_CONSUMER_THREADS: 10
    

如何自定义工作表触发工作流延迟时间

docker-compose.yaml 中设置环境变量 ENV_WORKFLOW_TRIGER_DELAY_SECONDS,默认 5(单位:秒),如下:

services:
  app:
    environment:
      ENV_WORKFLOW_TRIGER_DELAY_SECONDS: 1

如何自定义工作表消息队列的消费线程数

在修改工作表消息队列的消费线程数前,需要先调整 Kafka 中相关 Topic(ws-editcontrolsws-passiverelation)的分区数,默认是3,消费线程数设置请不要大于分区数。

  1. 进入容器:docker exec -it $(docker ps | grep mingdaoyun-community | awk '{print $1}') bash

  2. 执行以下命令可查看各自现有分区数和消息堆积情况

    /usr/local/kafka/bin/kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --describe --group worksheet-passiverelation
    /usr/local/kafka/bin/kafka-consumer-groups.sh --bootstrap-server 127.0.0.1:9092 --describe --group worksheet-editcontrols
    
  3. 如果有需要可分别执行以下命令进行分区数调整(如调整为10个分区)

    /usr/local/kafka/bin/kafka-topics.sh --alter --zookeeper localhost:2181 --partitions 10 --topic ws-editcontrols
    /usr/local/kafka/bin/kafka-topics.sh --alter --zookeeper localhost:2181 --partitions 10 --topic ws-passiverelation
    
  4. docker-compose.yaml 中设置环境变量 ENV_WORKSHEET_CONSUMER_THREADS,默认 2(设置的值不要过分大,需确保服务器可承受),如下:

     services:
       app:
         environment:
           ENV_WORKSHEET_CONSUMER_THREADS: 10
    

如何自定义功能模块样式

  1. 创建自定义样式文件(如:freestyle.css),通过网页的审查元素功能定位并获取元素标识(如:html tag、id、class),设置自定义样式(如:隐藏功能模块、调整字体、背景色

    /* 隐藏消息模块 */
    #chat {display:none!important }
    
  2. 将自定义样式文件挂载到容器内(/usr/local/MDPrivateDeployment/www/staticfiles/mdcss/freestyle.css),重启服务即可生效:

     services:
       app:
         volumes:
           - freestyle.css宿主机路径:/usr/local/MDPrivateDeployment/www/staticfiles/mdcss/freestyle.css
    

如何添加全局性 Javascript 脚本

通过添加全局性的 Javascript 脚本可快速实现引入百度统计、谷歌统计、GrowingIO、神策等一些数据分析引擎,监控系统的使用状态。

  1. 创建自定义扩展脚本文件(如:freestyle.js),并将第三方提供脚本复制到文件内。一般情况下,第三方脚本需要引用用户唯一标识等基础用户信息,开发者可通过明道云系统提供的全局 Javascript 对象 md.global.Account 来获取。

  2. 将扩展脚本文件挂载到容器内(/usr/local/MDPrivateDeployment/www/staticfiles/mdjs/freestyle.js),重启服务即可生效:

     services:
       app:
         volumes:
           - freestyle.js宿主机路径:/usr/local/MDPrivateDeployment/www/staticfiles/mdjs/freestyle.js
    

如何自定义登录状态过期时间

docker-compose.yaml 中设置环境变量 ENV_SESSION_TIMEOUT_MINUTES,默认是 10080(单位:分),如下:

services:
  app:
    environment:
      ENV_SESSION_TIMEOUT_MINUTES: 30

如何自定义是否每次登录出现验证码

docker-compose.yaml 中设置环境变量 ENV_LOGIN_CAPTCHA_LIMIT_COUNT,设置为 0 则每次都会出现验证码,如下:

services:
  app:
    environment:
      ENV_LOGIN_CAPTCHA_LIMIT_COUNT: 0

如何自定义上传文件格式黑白名单

支持在 docker-compose.yaml 中设置环境变量 ENV_FILEEXT_BLOCKLIST(黑名单)、ENV_FILEEXT_BLOCKLIST(白名单)来控制上传的文件类型,当设置了 ENV_FILEEXT_ALLOWLIST 时,ENV_FILEEXT_BLOCKLIST 将自动无效,如下:

services:
  app:
    environment:
      ENV_FILEEXT_BLOCKLIST: ".exe,.sh,.html"
      ENV_FILEEXT_ALLOWLIST: ".docx,.txt,.png"

results matching ""

    No results matching ""