是否可以在独立的远程服务器上设置/配置 Kiwi TCMS 的数据库和/或上传文件夹?

问题描述

稍微扩展/澄清一下标题,我的问题与管理需要持久化的 Kiwi TCMS 数据有关。阅读the documentation后,我没有找到有关如何使 Kiwi TCMS 与远程数据库和存储服务器一起工作的任何示例或配置步骤,因此您能否帮助我指出以下正确方向:

  1. 是否可以让 Kiwi TCMS 使用远程数据库(例如,AWS RDS 上的 mariaDB 实例)
  2. 是否可以让 Kiwi TCMS 将远程上传文件夹用于远程服务器或存储系统上的附件、图片(例如,任何远程存储服务器或简单的 AWS S3 存储桶)?
  3. 如果问题“1”或“2”中的任何一个是可能的,它们是否可以通过 repo 提供的“docker-compose.yml”文件进行配置,或者是否需要使用不同的方法进行配置?
  4. 如果问题“1”或“2”中的任何一个是可能的(尤其是与远程 DB 相关的问题),此设置在迁移 ... /Kiwi/manage.py migrate 时是否运行良好,或者是否需要采取特殊步骤,因为 DB 是远程运行?

注意:我提出问题的主要原因是拥有独立的远程数据库和/或上传文件夹将使备份/更新/恢复/重启/重置任何运行 Kiwi TCMS 工具的服务器或 kubernetes pod,而不必担心需要持久化的数据。

解决方法

请注意,数据库和文件存储卷在默认配置中都是持久的。这是故意的,以便他们可以在 docker-compose down 和升级之间幸存下来!所以你的问题实际上是如何将它们放在不同的机器上。

对于数据库配置,一切都通过环境变量进行控制。 https://kiwitcms.readthedocs.io/en/latest/configuration.html 列出所有配置设置,https://kiwitcms.readthedocs.io/en/latest/installing_docker.html#customization 告诉您如何覆盖它们。

# Database settings
DATABASES = {
    "default": {
        "ENGINE": os.environ.get("KIWI_DB_ENGINE","django.db.backends.mysql"),"NAME": os.environ.get("KIWI_DB_NAME","kiwi"),"USER": os.environ.get("KIWI_DB_USER","PASSWORD": os.environ.get("KIWI_DB_PASSWORD","HOST": os.environ.get("KIWI_DB_HOST",""),"PORT": os.environ.get("KIWI_DB_PORT","OPTIONS": {},},}

由于这些是环境变量,您也可以直接在您的 docker-compose.yml 文件中配置它们,如上游文件本身所示:

environment:
    KIWI_DB_HOST: db
    KIWI_DB_PORT: 3306
    KIWI_DB_NAME: kiwi
    KIWI_DB_USER: kiwi
    KIWI_DB_PASSWORD: kiwi

所以没有什么可以阻止您将数据库连接指向一个单独的主机,大概是您用于其他应用程序的数据库集群。

从 Kiwi TCMS 应用程序的角度来看,数据库无论如何都是远程的。无论如何,数据库是通过 TCP 访问的,无论这是与应用程序一起运行的另一个容器还是完全不同网络中的完全不同的主机都没有关系。

对于存储上传文件的卷来说有点不同。卷需要安装在应用程序容器内,这是通过以下行完成的:

volumes:
    - uploads:/Kiwi/uploads:Z

这会将一个持久卷从 docker 主机映射/挂载到正在运行的容器中。 Docker 允许对卷进行各种设置,请参阅 https://docs.docker.com/storage/volumes/ 但可能最简单的方法之一如下:

  • 在 docker 主机上的 /mnt/nfs/kiwitcms_uploads 下安装 NFS(或其他)卷
  • 然后将 /mnt/nfs/kiwitcms_uploads 挂载到正在运行的容器内的 /Kiwi/uploads。

IDK 这意味着什么以及它有多稳定。有关这方面的更多最佳实践,请参阅 docker 文档和您的 DevOps 管理员。

但是,如果您可以为 docker 主机提供网络存储/块设备,那么最终您可以将其安装在正在运行的容器中,Kiwi TCMS 应用程序会将其视为常规文件系统。

此答案由 Kiwi TCMS 团队成员提供给您。如果您觉得有用,请考虑通过 https://opencollective.com/kiwitcms#category-CONTRIBUTE

的小额捐款帮助社区