添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

api-gateway

自 4.4 版本开始,我们添加了 api-gateway 组件,默认开启。api-gateway 整合了 dtable-db 和 dtable-server 的 API ,让 API 接口更加简单和一致。

升级的时候,你需要手工为 nginx.conf 添加以下内容

        location /api-gateway/ {
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
        add_header Access-Control-Allow-Headers "deviceType,token, authorization, content-type";
        if ($request_method = 'OPTIONS') {
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
            add_header Access-Control-Allow-Headers "deviceType,token, authorization, content-type";
            return 204;
        proxy_pass         http://127.0.0.1:7780/;
        proxy_redirect     off;
        proxy_set_header   Host              $http_host;
        proxy_set_header   X-Real-IP         $remote_addr;
        proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host  $server_name;
        proxy_set_header   X-Forwarded-Proto $scheme;
        access_log      /opt/nginx-logs/api-gateway.access.log seatableformat;
        error_log       /opt/nginx-logs/api-gateway.error.log;

total_cache_size

dtable-db 调整了 total_cache_size 配置的语义, 默认值为 500MB。详细配置请参考手册 dtable-db 配置

自 4.3 版本开始,我们使用了新的方法部署 SeaTable 和 Python 运行器。其中最主要的差别在于

  • 新版使用 .env 文件来存储初始化配置所需的变量
  • 新版 docker 启动后自动运行数据库升级语句和启动服务,不再需要手工操作
  • 您可以选择继续使用旧的部署方式升级 SeaTable 4.3 (指使用旧版的 docker-compose.yml 文件),也可以手工迁移到新的部署方式 (指使用新版的 docker-compose.yml 和 .env 文件)。

    Python 运行器必须使用新的部署方式。

    继续使用旧的部署方式升级 SeaTable

    运行以下命令获得SeaTable的最新版本.

    # 开发者版
    docker pull seatable/seatable-developer:latest
    # 企业版
    docker pull docker.seafile.top/seafileltd/seatable-enterprise:latest
    

    停止当前运行的SeaTable容器.

    docker compose down
    

    然后修改 docker-compose.yml 中的标签, 并重新启动一个新的SeaTable容器.

    docker compose up -d
    

    升级数据库

    docker exec -it seatable /bin/bash        # 登录到 SeaTable 容器. 然后执行upgrade语句
    seatable.sh upgrade-sql 4.3
    

    SeaTable 容器将自动启动服务,无需手工操作。

    使用新的部署方式升级 SeaTable

    详见 使用 Docker 部署 SeaTable 开发者版使用 Docker 部署 SeaTable 企业版

    您需要下载新的 .env 和 docker-compose.yml 文件,然后根据旧的配置修改 .env 和 docker-compose.yml 文件。

    特别注意需要修改 .env 中的

  • SeaTable 数据的卷目录(SEATABLE_VOLUMES)
  • MySQL 数据的卷目录(SEATABLE_MYSQL_VOLUMES)
  • MySQL 的 host 改为 db(SEATABLE_MYSQL_DB_HOST)
  • MySQL 的 root 的密码(SEATABLE_MYSQL_ROOT_PASSWORD)
  • 许可证文件(SEATABLE_LICENSE)
  • 还需要将 docker-compose.yml 中的 mariadb 改为 db

    services:
      seatable-server:
        depends_on:
            condition: service_healthy
    

    启动 SeaTable 容器.

    docker compose up -d
    

    SeaTable 容器将自动升级数据库,自动启动服务,无需手工操作。

    升级 Python 运行器

    迁移到新版 Python 运行器的重点在于迁移已有的数据库数据。

    备份 Python 运行器数据库数据到主机 /opt/seatable-faas-scheduler/mysql-data/scheduler.sql

    docker exec -it seatable-faas-scheduler-mysql bash
    /usr/bin/mysqldump -u root -p --opt faas_scheduler > /var/lib/mysql/scheduler.sql
    

    停止当前 Python 运行器

    cd /opt/seatable-python-runner
    ./stop.sh
    cd /opt/seatable-faas-scheduler
    docker compose down
    

    如果和 SeaTable 部署在同一台机器上

    在 SeaTable mysql 中导入Python 运行器数据库数据

    # 主机上复制数据
    cp  /opt/seatable-faas-scheduler/mysql-data/scheduler.sql /opt/seatable/mysql-data/scheduler.sql 
    # mysql 容器中导入数据
    docker exec -it seatable-mariadb bash
    mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS scheduler";
    mysql -u root -p scheduler </var/lib/mysql/scheduler.sql
    

    然后按照 部署 SeaTable Python 运行器 安装 Python 运行器。

    启动前需要检查 python-pipeline.yml 中的 depends_on: mariadb/db 与 docker-compose.yml 中的 depends_on: mariadb/db 一致

    services:
      python-scheduler:
        depends_on:
          mariadb:
            condition: service_healthy
    
    # scheduler 容器中升级数据库表
    docker exec -it python-scheduler bash
    mysql -h mariadb -u root -p scheduler </opt/scheduler/upgrade/2.7.0.sql
    

    如果在单独一台机器上部署

    按照 部署 SeaTable Python 运行器,并启动 Python 运行器。

    导入数据库数据

    # 主机上复制数据
    cp  /opt/seatable-faas-scheduler/mysql-data/scheduler.sql /opt/seatable-python-pipeline/mysql-data/scheduler.sql 
    # mysql 容器中导入数据
    docker exec -it python-pipeline-mysql bash
    mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS scheduler";
    mysql -u root -p scheduler </var/lib/mysql/scheduler.sql
    # scheduler 容器中升级数据库表
    docker exec -it python-scheduler bash
    mysql -h mariadb -u root -p scheduler </opt/scheduler/upgrade/2.7.0.sql
    

    最后重启 Python 运行器

    docker compose down
    docker compose up -d
    

    要开启新版组织架构功能,在 dtable_web_settings.py 中增加配置

    ENABLE_ADDRESSBOOK_V2 = True 
    

    增加了以下的可配置项目

    1) 回收站自动清空时间间隔,在 dtable_web_settings.py 中增加配置,默认为 30天

    TRASH_CLEAN_AFTER_DAYS = 30
    

    2) 可以配置默认的 Seafile 服务器,这样用户在第三方账号中选择对接 Seafile 的时候默认会填写这个配置的 Seafile 服务器的地址。在 dtable_web_settings.py 中增加配置

    DEFAULT_SEAFILE_SERVER = 'https://cloud.seafile.com/'
    

    此外,简化了和 Seafile 的对接,不再需要在 Seafile 中开启跨域支持。

    3) 简化了增加 Web API 速率控制的配置项,在 dtable_web_settings.py 中

    API_THROTTLE_RATES = {
       'ping': '3000/minute',
       'anon': '60/minute',
       'user': '3000/minute',
       'sync_common_dataset': '60/minute',
       'password_reset': '10/minute',
       'org-admin': '1000/day',
       'app': '1000/minute',
       'import': '20/minute',   # 限制导入excel或csv文件到表格的速率
       'export': '20/minute',   # 限制导出base为dtable文件以及导出视图或表格为excel文件的速率
    

    4) 企业版 LDAP 支持 SASL 认证,dtable_web_settings.py 中增加了三个配置项

    ENABLE_SASL = True
    SASL_MECHANISM = 'DIGEST-MD5'
    SASL_AUTHC_ID_ATTR = 'cn'
    

    1) 禁止用户创建个人表格,在 dtable_web_settings.py 中增加配置, 默认为 False

    DISABLE_ADDING_PERSONAL_BASES = False
    

    2) 自定义颜色定制, 在 dtable_web_settings.py 中增加配置, 适用于表格中的着色规则,如下:

    CUSTOM_COLORS = [
        {'color': '#F5C043', 'text_color': '#212529'},  # color 背景颜色, text_color 文本颜色
        {'color': '#3064BC', 'text_color': '#FFFFFF'},
    

    3) API list rows 返回行数限制, 在 dtable_server_config.json 中设置, 默认为 1000

    "rows_api_max_limit": 1000,

    数据迁移[建议执行], 把 base 数据从 seaf-server中迁移至 dtable-storage-server 中, 需要配置 dtable-storage-sever 组件, 参考 3.0 版本的升级步骤。

    此步骤适用于使用过 3.0 之前版本的 seaTable 用户, 直接部署 3.0+ 版本的用户可忽略。

  • --list : 列出需要迁移的base, 列出前 10 个
  • --migrate: 制定需要迁移的Base数量
  • --backup-folder: 制定备份文件夹, 不指定会给一个默认备份路径
  • docker exec -d seatable /templates/migrate_bases.sh --list 迁移 10 个 base(备份文件夹有默认值) docker exec -d seatable /templates/migrate_bases.sh --migrate 10 迁移 10 个 base,并指定备份文件夹 docker exec -d seatable /templates/migrate_bases.sh --migrate 10 --backup-folder /shared/migrate-backup/

    没有额外的升级步骤。

    如果需要开启通用外部应用(目前只针对企业版),那么需要在 dtable_web_settings.py 中增加设置项。

    ENABLE_UNIVERSAL_APP = True
    

    3.0 版增加了一个额外的组件 dtable-storage-server,提供了性能更好的表格数据的持久化保存。SeaTable 中一个表格保存为一个文件,每 5 分钟自动保存一次。在原来的版本中,这个文件存在 seaf-server 组件中,但是 seaf-server 会给每一次保存保留一个版本,这样会占用比较多的磁盘空间。新的版本中,每 24 小时生成历史镜像的时候才会真正保存一个历史版本,这样节省了空间。dtable-storage-server 是对传统文件系统、对象存储的一个简单的抽象封装。

    你需要做一些手工的修改:

    1、生成 dtable-storage-server.conf

    docker exec -d seatable /shared/seatable/scripts/seatable.sh init
    

    生成的配置文件大致如下:

    [general]
    log_dir = /opt/seatable/logs
    temp_file_dir = /tmp/tmp-storage-data
    [storage backend]
    type = filesystem
    path = /opt/seatable/storage-data
    [snapshot]
    interval = 86400
    keep_days = 180
    

    2、在 dtable_web_settings.py 中增加配置,以便让新创建的表格保存到新的存储中,旧的表格依旧从 seaf-server 中读写

    NEW_DTABLE_IN_STORAGE_SERVER = True
    

    3、企业版需要在 dtable-db.conf 中增加配置项,以便把归档后的保存在大数据存储中的数据自动备份起来

    [backup]
    dtable_storage_server_url = http://127.0.0.1:6666
    backup_interval = 1440
    keep_backup_num = 3
    

    开启工作流功能

    在 3.0 版本中工作流功能默认是关闭的,如果需要开启,在 dtable_web_settings.py 中增加以下配置

    ENABLE_WORKFLOW = True
    

    内嵌表格到其他网页 (iframe 方式) 的配置需要作如下修改

    在 dtable_web_settings.py 中

    SESSION_COOKIE_SAMESITE = None
    SESSION_COOKIE_SAMESITE = 'None'
    CSRF_COOKIE_SAMESITE = None
    CSRF_COOKIE_SAMESITE = 'None'
    

    2.3 版本中 dtable-db 的配置项有一些改动。你需要做一些手工的修改:

    加入 log_dir 的配置

    [general]
    log_dir = /shared/seatable/logs
    

    加入 cache 的大小的设置 (单位为 M)

    [dtable cache]
    total_cache_size = 500
    

    加入数据库的配置项

    [database]
    host = 127.0.0.1
    user = root
    password = mypass
    db_name = dtable
    

    dtable_web_settings.py 加入 dtable-db 相关配置

    DTABLE_DB_URL = 'https://<your-domain>/dtable-db/'
    

    nginx.conf 加入 dtable-db 相关配置

        location /dtable-db/ {
            proxy_pass         http://127.0.0.1:7777/;
            proxy_redirect     off;
            proxy_set_header   Host              $host;
            proxy_set_header   X-Real-IP         $remote_addr;
            proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host  $server_name;
            proxy_set_header   X-Forwarded-Proto $scheme;
            access_log      /opt/nginx-logs/dtable-db.access.log seatableformat;
            error_log       /opt/nginx-logs/dtable-db.error.log;
    

    2.1 版增加了一个额外的组件 dtable-db,用于提供 SQL 查询接口 (后续会提供更多的功能)。你需要手工增加对应的配置文件。

    手动添加 conf/dtable-db.conf,并修改 private_key

    [general]
    host = 127.0.0.1
    port = 7777
    [storage]
    data_dir = /opt/seatable/db-data
    [dtable cache]
    private_key = "my private key"
    dtable_server_url = "http://127.0.0.1:5000"
    expire_time = 600
    total_cache_size = 1
    clean_cache_interval = 300
    

    其中 private_key 的值需要和 dtable_server_config.json 中的 private_key 一样。

    dtable_server_url 固定为 http://127.0.0.1:5000 ,不需要修改。

    Last modified by seatable, 2024-03-28