使用隐藏的站点设置

:bookmark: 本指南介绍隐藏站点设置、如何启用它们以及为何要调整它们。

:person_raising_hand: 所需用户级别:管理员
:warning: 重要提示:某些步骤需要控制台访问。

在 Discourse 中,隐藏站点设置是指在标准管理员仪表板界面中不易看到或访问的配置选项。这些设置是后端配置的一部分,可以控制站点的各种高级或可能产生影响的功能。

这些隐藏设置带有预先配置的默认值,这些值根据常见用例和最佳实践设置为确保最佳性能和安全性。

隐藏设置从默认设置界面中隐藏,以防止可能不完全理解其含义的管理员意外错误配置。它们适用于:

  • 深入了解 Discourse 内部工作原理的管理员。
  • 需要非常特殊的站点配置的特定情况。
  • 尚未准备好供一般使用的测试或实验功能。

希望修改隐藏设置的管理员通常会这样做,因为默认配置与他们的需求不完全匹配。

:warning: 关于隐藏设置的重要说明

在 Discourse 中调整隐藏站点设置可能会导致各种问题,例如安全漏洞、负面性能影响、用户体验下降或数据丢失,如果操作不当!

只有知识渊博的 Discourse 管理员才能修改隐藏站点设置。在更改设置之前,请务必了解其功能和更改的含义。如果可能,请在暂存或开发环境中实施重大的配置更改。在进行广泛或关键的更改之前,请确保备份是最新的,以便在出现问题时恢复论坛的状态。

如何编辑隐藏站点设置

选项 1:Rails 控制台

要修改隐藏站点设置,通常需要使用 Rails 控制台,这是一个命令行工具,允许您直接与 Discourse 安装的后端进行交互。要通过 Rails 控制台调整设置,您可以按照以下步骤操作:

  1. 访问 Rails 控制台

    cd /var/discourse
    ./launcher enter app
    rails c
    
  2. 更改设置

    SiteSetting.your_setting_name = new_value
    

your_setting_name 替换为您要修改的设置的名称,将 new_value 替换为您要设置的值。

  1. 退出控制台

    exit
    

选项 2:在 app.yml 中设置环境变量

您还可以使用环境变量来调整隐藏站点设置。app.yml 文件是 Discourse 的 Docker 部署中使用的配置文件。它通常位于 Discourse 安装的 /containers 目录中。以下是如何添加或修改环境变量:

  1. 访问 app.yml 文件
    在您喜欢的文本编辑器中打开 app.yml 文件:

    nano /var/discourse/containers/app.yml
    
  2. 添加环境变量
    可以在 app.yml 文件的 env 部分配置环境变量。它们遵循 DISCOURSE_SETTING_NAME: value 的模式。例如,要通过环境变量将 max_category_nesting 设置设置为 3,您可以使用:

    env:
      DISCOURSE_MAX_CATEGORY_NESTING: 3
    
  3. 重建容器
    保存对 app.yml 文件的更改后,重建 Discourse Docker 容器以应用更改:

    cd /var/discourse
    ./launcher rebuild app
    

为什么启用隐藏设置

启用或调整 Discourse 中的隐藏站点设置允许管理员深入自定义其论坛设置,以满足特定的技术要求、提高性能或确保安全性和合规性,从而支持量身定制的用户体验和运营效率。

隐藏站点设置的示例包括:

  • 徽章 SQL:启用 enable badge sql 允许站点管理员为徽章创建自定义 SQL 查询,从而根据复杂条件灵活分配徽章。
  • 永久删除帖子:启用 can permanently delete 以便出于合规性或隐私原因永久删除帖子。
  • S3 备份设置:通过 include_s3_uploads_in_backups 将 S3 上传包含在备份中,可用于增强备份策略。
  • 搜索速率限制:通过 rate_limit_search_user 等设置调整搜索速率限制,以防止在高使用场景下出现节流。

常见问题解答

问:隐藏设置能否在 UI 中可见?
答:出于安全和复杂性原因,Discourse 中的隐藏设置不能直接通过 UI 进行配置。

问:在哪里可以找到有关每个隐藏设置的信息?
答:有关每个设置的详细信息可以在隐藏站点设置参考指南和 Discourse 源代码中找到,特别是在GitHub 存储库site_settings.yml 文件中。一些设置的额外信息也可在 Discourse Meta 论坛上找到。

问:通过环境变量所做的更改是否会在更新后保留?
答:是的,如果设置在 app.yml 或系统的永久配置文件中,这些设置将会在更新后保留,除非被其他配置覆盖。

问:我如何知道哪些设置可以通过环境变量控制?
答:通常,任何 Discourse 站点设置都可以加上 DISCOURSE_ 前缀并设置为环境变量。

问:通过环境变量配置敏感信息是否安全?
答:环境变量通常被认为是安全的配置管理方式。但是,请确保它们不会在共享或不安全的环境中暴露。

问:如果我切换一个站点设置,是否需要重建?
答:在大多数情况下,通过 Rails 控制台切换站点设置不需要重建您的 Discourse 设置。这些更改通常会立即生效或在您的实例刷新后生效。但是,某些特定设置,尤其是那些影响系统基础方面的设置,可能需要重新启动或重建才能应用更改。对于在 app.yml 文件中进行的更改,需要重建您的 Discourse 容器才能使这些更改生效。

问:我能否轻松撤销设置更改?
答:是的,大多数设置都可以撤销,除非它们涉及数据删除。

附加资源

8 个赞