Matomo多租户设置

您可以配置Matomo以使用相同的代码库为多个客户服务。虽然您可以在使用权限系统的任何标准Matomo安装中这样做,但这种解决方案的优点是可以对每个租户进行不同的配置,也可以为每个租户配置不同的数据库,这样更安全。

设置特定于租户的配置文件

要做到这一点,放置aconfig.ini.php内部misc / user /对于每个主机名。例如:

  • matomoDir / misc / user / subdomain_a.mydomain.com/config.ini.php美元
  • matomoDir / misc / user / subdomain_b.mydomain.com/config.ini.php美元

取决于你是否访问Matomo使用subdomain_b.mydomain.comsubdomain_a.mydomain.com将读取不同的配置文件。每个配置文件可能具有不同的配置,并且可以指向不同的数据库。

也可以为每个主机名定义配置文件,例如matomoDir / config / hostname.config.ini.php美元.然而,这可能会在未来被删除,我们总是强烈建议把他们放在misc /用户这样,使用EFS或NFS等共享文件系统为租户共享所有文件(配置文件,徽标)就容易得多。

共享配置文件

您可能希望在所有租户之间共享某些配置。为此,创建一个名为配置/ common.config.ini.php从这一行开始

;<?php退出;?>不删除该行

在第一行之后,您可以配置希望应用于所有租户的任何设置。例如,如果您想禁用所有租户的自动更新,请使用以下内容:

;<?php退出;?> DO NOT REMOVE THIS LINE [General] enable_auto_update = 0

请注意,这个共享配置文件中的任何设置都可以在特定于租户的配置文件中覆盖。

定制品牌标志

如果租户上传了自定义logo,那么这些logo将存储在特定于租户的目录中。例如,如果租户subdomain_b.mydomain.com上传一个logo,然后任何logo都将存储在该目录中misc / user / subdomain_b.mydomain.com/

缓存目录

每个租户在Matomo的缓存目录中都有自己的缓存目录tmp目录中。例如:

  • 美元matomoDir / tmp / subdomain_a.mydomain.com/ *
  • 美元matomoDir / tmp / subdomain_b.mydomain.com/ *

执行指定租户的命令

要执行CLI控制台命令,需要使用命令为哪个租户指定该命令——matomo-domain选择。例如,清除缓存subdomain_a执行如下命令:

./控制台缓存:clear——matomo-domain=subdomain_a.mydomain.com

更新代码库

强烈建议通过在共享配置文件中指定以下配置来禁用自动更新:

[常规]enable_auto_update = 0

这样,没有用户可以触发更新代码库,因为一个代码库用于多个租户。如果使用多台服务器,则还需要设置multi_server_environment = 1设置参见our负载平衡Matomo常见问题

通常,推荐的方法是更新Matomo代码库,部署新的代码库,然后运行核心:更新在代码库更新后立即为每个租户执行控制台命令。

建立新租户

目前不可能建立一个新的租户,这就是为什么它被记录在开发人员文档,而不是在Matomo网站上。

数据库

为了让多租户设置工作,每个租户都应该有自己的数据库模式。它们可以都在同一个物理数据库服务器上,但是为了最好的安全性,应该有自己的模式和自己唯一的MySQL用户名和密码。不建议为每个客户使用不同的数据库前缀,因为这样不太安全。

跨租户使用相同的数据库模式

从技术上讲,您可以“误用”这个多租户特性,在一个Matomo安装中为每个站点设置不同的配置,否则在Matomo中是不可能的。

这在一定程度上适用于某些配置设置。例如,如果您想在每个站点的基础上更改配置跟踪设置,那么您只需要确保在发送跟踪请求时始终对同一个idSite使用相同的主机。

对于其他一些配置设置,这可能会更困难。例如,如果您想要在每个站点的基础上更改存档配置设置,那么您将需要确保永远不只是运行核心。/控制台:档案但是总是强制使用预期主机的特定站点。例如./console内核:archive——force-idsites=1——matomo-domain=…

请注意,当您为每个租户使用相同的数据库模式和相同的表前缀时,所有站点总是在所有主机中可见。因此,通常总是建议使用不同的数据库模式。

跟踪代码

所有租户都使用相同的跟踪代码。如果每个租户启用了不同的插件,或者某些租户启用了热图/会话记录,而其他租户则没有,这可能会导致意想不到的结果。在这些情况下,跟踪代码可能会不断变化,可能包括未启用的功能的跟踪代码,或者可能缺少某个功能所需的跟踪代码。需要自定义解决方案来将它们存储在misc /用户目录。

这同样适用于标签管理器JS容器文件,这些文件都存储在js如果不同的租户拥有相同的containerId,那么他们将覆盖彼此的JS文件。

Baidu