部署 SeaTable Python 运行器

Python 运行器目前为测试版本。需要等 SeaTable 2.0 版本发布后才正式可用。

从 4.3 版本开始,我们建议您使用更方便的部署方法 部署 SeaTable Python 运行器 (新)

架构

SeaTable 的 Python 脚本运行包含多个部分,SeaTable, Python Runner, SeaTable FAAS Scheduler等,它们的功能与关系如下

Python Runner 可以和 SeaTable FAAS Scheduler 可以部署到同一机器,结构图如下

如若你需要运行大量的 Python 脚本,可以多部署几台 Python Runner,在它们之前安排一个 load balance 组件即可,结构图如下

部署 SeaTable Python Runner

我们建议把 Python Runner 部署在 /opt/seatable-python-runner 目录下,目录结构如下

/opt/seatable-python-runner
├── logs                     (日志文件)
├── conf                     (配置文件)
├── init.sh                  (初始化脚本)
├── start.sh                 (启动脚本)
├── stop.sh                  (关闭脚本)
└── 其他代码文件

下载软件包

seatable-python-runner 的服务需要直接在宿主机上运行,所以需要用户自己下载软件包,下载完成后解压并进入项目目录

unzip seatable-python-runner-1.x.x.zip -d /opt && cd /opt/seatable-python-runner

安装依赖

sudo pip3 install -r server_requirements.txt

下载 SeaTable Python Runner 依赖镜像

拉取 SeaTable Python Runner 依赖镜像

docker pull seatable/python-runner:latest

您可以在官方 docker仓库 中找到 SeaTable Python Runner 依赖镜像的所有版本 。

初始化服务

使用以下命令初始化服务

sudo ./init.sh

修改配置文件

使用以下命令修改配置文件

vim conf/seatable_python_runner_settings.py

添加服务所使用到的配置

SCHEDULER_URL = 'https://demo.faas-scheduler.seatable.com'  # seatable-faas-scheduler 的 URL, 如果使用 IP 地址的话,应为 http(s)://IP:PORT,即表示 seatable-faas-scheduler 的服务地址

修改时区

需要 Seatable Python Runner 软件包版本在 2.0.3 版本及以后,并且镜像 tag 在 2.5.4 及以后

在配置文件中添加如下配置修改时区,如若没有配置,默认为系统时区,如若读取不到系统时区,则为 UTC 时区

TIME_ZONE = 'Asia/Shanghai'

如果版本不满足条件,时区为 UTC

相关文档:

设置脚本超时时间

对脚本运行限制时间,默认为 15 分钟

SUB_PROCESS_TIMEOUT = 60 * 15  # 15 分钟

设置内网访问脚本文件 (可选)

需要 Seatable Python Runner 软件包版本在 2.0.4 版本及以后,并且镜像 tag 在 2.5.4 及以后

由于用户网络环境各不相同,如果 Seatable Python Runner 只可访问内网不可访问外网的情况下,则不可以下载脚本并运行。为了解决这个问题,新增加两个配置,可以使得 Seatable Python Runner 从内网访问下载脚本

在配置文件中添加如下配置并保存

ALTERNATIVE_FILE_SERVER_ROOT = 'http://xxx.xxx.xxx.xxx:xxx/'  # 内网 FILE_SERVER_ROOT 地址
USE_ALTERNATIVE_FILE_SERVER_ROOT = True

增加 Docker 占用资源限制 (可选)

在配置文件中,添加或修改如下内容

CONTAINER_MEMORY = '2g'  # 最大2GB的内存

有些系统,如Ubuntu或基于Debian的系统,不支持限制容器内存,运行脚本时会看到类似如下警告

WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.

这种情况下,可以把 CONTAINER_MEMORY 设置为空

CONTAINER_MEMORY = ''

或者修改宿主机的配置以便支持上面的选项:

sudo vim /etc/default/grub

添加或修改以下内容

GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

保存并退出文件,更新 GRUB

sudo update-grub

重启宿主机,配置生效

相关文档

其他 docker 设置 (可选)

2.0.5及以后

需要 Seatable Python Runner 软件包版本 2.0.5 及以后,并且镜像 tag 在 2.5.4 及以后,实验性功能,请谨慎修改

由于客户需求各异,从 2.0.5 版本及以后,在 OTHER_OPTIONS 中可以设置所有 docker 官方文档中的支持命令,但选项必须以 --\<option-name>=\<value> 的形式设置,例如需要挂载目录到容器内

OTHER_OPTIONS = [
    "--volume=/home/seatable:/data"  # 宿主机 /home/seatable 挂载到容器内 /data
]

更多配置选项

uwsgi 配置

Python runner 使用 uwsgi 运行,请以您自己的偏好或者符合您工作需求的方式编辑

使用以下命令修改 uwsgi 配置文件

vim conf/seatable_python_runner.ini

下面所示配置为默认配置

[uwsgi]
http = :8080  (端口)
process = 4   (进程数)
threads = 2   (线程数)

启动

sudo ./start.sh

终止

sudo ./stop.sh

启动/终止脚本是一系列操作的合集,您可以根据自己的需要进行二次编辑

使用 Docker 部署 SeaTable FAAS Scheduler

注意:部署 Scheduler 要求 Docker 版本为 20.10.10 或更高版本

我们建议把 Scheduler 部署到 /opt/seatable-faas-scheduler 下,目录结构如下

/opt/seatable-faas-scheduler
├── docker-compose.yml
├── shared
│   ├── seatable-faas-scheduler
│   │   ├── conf     (配置文件)
│   │   ├── scripts  (脚本文件)
│   │   └── logs     (日志文件)
│   ├── nginx-logs   (Nginx 日志)
│   └── ssl          (SSL 证书)
└── mysql-data       (数据库持久化目录)

先创建目录

mkdir /opt/seatable-faas-scheduler

下载 SeaTable FAAS Scheduler 镜像

拉取 SeaTable FAAS Scheduler 镜像

docker pull seatable/seatable-faas-scheduler:latest

您可以在官方 docker仓库 中找到 SeaTable FAAS Scheduler 的所有版本 。

下载和修改 docker-compose.yml

根据您需要的版本,下载 docker-compose.yml

将示例文件下载到 /opt/seatable-faas-scheduler, 然后根据您的环境修改文件, 需要修改以下字段

初始化数据库

使用以下命令初始化数据库

docker compose up

注意:您应该在 docker-compose.yml 文件所在的目录中运行上述命令。

稍等片刻,当您在输出日志中看到 This is a idle script (infinite loop) to keep container running 时,数据库已初始化成功。

然后按键盘的 Ctrl + C来结束初始化命令。

修改配置文件

使用以下命令修改配置文件

vim /您的 SeaTable FAAS Scheduler 数据卷目录/seatable-faas-scheduler/conf/seatable_faas_scheduler_settings.py

需要修改以下配置项

DTABLE_WEB_SERVICE_URL = 'https://demo.seatable.com'  # SeaTable 域名

RUNNER_URL = 'https://demo.runner.seatable.com'  # Python 运行器域名
# 若Python 运行器与 SeaTable FAAS Scheduler 运行在同一宿主机上,那么需要配置为 'http://host.docker.internal:8080'(不能为 'http://localhost:8080'), 或者 'http://<内网地址>:端口'

SEATABLE_FAAS_AUTH_TOKEN = '***'  # 仅复制此配置项,用来修改 SeaTable 配置文件

修改 SeaTable 配置文件

使用以下命令修改 SeaTable 配置文件

vim /您的 SeaTable 数据卷目录/seatable/conf/dtable_web_settings.py  

需要修改以下配置项

SEATABLE_FAAS_URL = '***'  # seatable-faas-scheduler  的地址
SEATABLE_FAAS_AUTH_TOKEN = '***'  # 与 seatable_faas_scheduler_settings.py 中的配置相同

设置脚本超时时间,在软件包已经设置了超时时间,此处需要和软件包中的配置相同,默认 15 分钟

SUB_PROCESS_TIMEOUT = 60 * 15  # 15 分钟

启动 SeaTable FAAS Scheduler 服务器

现在,您可以启动 SeaTable FAAS Scheduler 服务

docker compose up -d

重启 SeaTable 服务

# 重启 SeaTable 服务
docker exec -d seatable /shared/seatable/scripts/seatable.sh restart

接下来,您可以通过 SeaTable 测试 Python 运行器功能。

SeaTable FAAS Scheduler 更多配置选项

部署 Https

使用 LetsEncrypt SSL 证书

如果您在 “ docker-compose.yml” 中将 SEATABLE_FAAS_SCHEDULER_SERVER_LETSENCRYPT 设置为 True,则容器将自动为您请求一个 Letsencrypt 签名的 SSL 证书。

例如

  seatable-faas-scheduler:
    ...
    ports:
      - "80:80"
      - "443:443"
      ...
    environment:
      ...
      - SEATABLE_FAAS_SCHEDULER_SERVER_LETSENCRYPT=True   # 默认值为 False。 是否使用加密证书
      - SEATABLE_FAAS_SCHEDULER_SERVER_HOSTNAME=demo.faas-scheduler.seatable.com  # 指定启用 https 时的主机名

注意:由于 Nginx 配置文件仅在首次运行容器时自动生成,因此最好在首次执行 docker-compose up -d 命令之前将 SEATABLE_FAAS_SCHEDULER_SERVER_LETSENCRYPT 设置为 True。

使用自己的 SSL 证书

添加您自己的 SSL 证书

  1. 将 SSL 证书文件上传到 SeaTable FAAS Scheduler 数据目录:/您的 SeaTable FAAS Scheduler 数据卷目录/ssl/
  2. 修改 Nginx 配置文件:/您的 SeaTable FAAS Scheduler 数据卷目录/seatable-faas-scheduler/conf/nginx.conf
  3. 重新加载 Nginx 配置文件:docker exec -it seatable-faas-scheduler /usr/sbin/nginx -s reload

例如

server {
    if ($host = demo.faas-scheduler.seatable.com) {
        return 301 https://$host$request_uri;
    }
    listen 80;
    server_name demo.faas-scheduler.seatable.com;
    return 404;
}

server {
    server_name demo.faas-scheduler.seatable.com;

    listen 443 ssl;
    ssl_certificate /shared/ssl/<your-ssl.cer>;
    ssl_certificate_key /shared/ssl/<your-ssl.key>;

    proxy_set_header X-Forwarded-For $remote_addr;
    ......


高级设置

所有配置文件都在 /您的 SeaTable FAAS Scheduler 数据卷目录/seatable/conf/ 下。

修改后,您需要重新启动 SeaTable FAAS Scheduler 服务器。

docker exec -d seatable-faas-scheduler /shared/seatable-faas-scheduler/scripts/seatable-faas-scheduler.sh restart

SeaTable FAAS Scheduler 常见问题

如果由于某种原因安装失败,如何从干净状态重新开始?

只需删除目录 /opt/seatable-faas-scheduler,然后重新开始即可。

LetsEncrypt SSL 证书将要过期

如果证书没有自动更新,需要执行命令 /scripts/renew_cert.sh 以手动更新证书。

Last modified by seatable, 2024-03-21

架构
部署 SeaTable Python Runner
下载软件包
安装依赖
下载 SeaTable Python Runner 依赖镜像
初始化服务
修改配置文件
更多配置选项
启动
终止
使用 Docker 部署 SeaTable FAAS Scheduler
下载 SeaTable FAAS Scheduler 镜像
下载和修改 docker-compose.yml
初始化数据库
修改配置文件
修改 SeaTable 配置文件
启动 SeaTable FAAS Scheduler 服务器
重启 SeaTable 服务
SeaTable FAAS Scheduler 更多配置选项
SeaTable FAAS Scheduler 常见问题