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美元

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

也可以像这样定义每个主机名的配置文件matomoDir / config / hostname.config.ini.php美元。但是,这可能会在未来被删除,我们总是强烈建议将它们放入misc /用户目录,因为这样更容易为使用EFS或NFS等共享文件系统的租户共享所有文件(配置文件、徽标)。

共享配置文件

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

;< ?php退出;? b>不要删除这一行

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

;< ?php退出;?>不要删除这一行[General] enable_auto_update = 0

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

定制品牌标识

如果承租者上传自定义徽标,则这些徽标将存储在承租者特定的目录中。例如,如果租户subdomain_b.mydomain.com上传一个徽标,然后任何徽标将被存储在目录中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执行如下命令:

./console cache:clear——matomo-domain=subdomain_a.mydomain.com

更新代码库

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

[General] enable_auto_update = 0

这样,没有用户可以触发更新代码库,因为一个代码库用于多个租户。如果您使用多个服务器,那么您还需要设置multi_server_environment = 1设置参见our负载均衡的Matomo FAQ

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

设置新租户

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

数据库

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

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

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

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

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

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

跟踪代码

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

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

Baidu