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