将 CMS 文件整合到一个地方

将 CMS 文件整合到一个地方

我们有一个系统,其中一台服务器上使用定制的 CMS。30-40 个客户使用此 CMS。每个客户 CMS 的大多数文件都是相同的(除了几个文件夹),因为每次我们添加新功能/补丁/错误修复时,我们都会将其推广到所有客户。我们希望将这些文件整合到一个地方,以便我们可以更轻松地从 SVN 部署更改。

每个用户帐户都有这样的结构:

/home/user/public_html/css/
                      /images/
                      /admin/
                      index.php
                      etc ....

在此示例中,css 和 images 文件夹对于每个客户端站点都是唯一的,但所有其他文件对于所有站点都是通用的。不确定我们是否应该研究符号链接/NFS/其他内容?

答案1

短期解决方案:

移动

/admin/ 
index.php
etc...

比如说,/opt/cms

为文件创建到新位置的符号链接。即:

$ ln -s /home/user/admin /opt/cms/admin
$ ln -s /home/user/index.php /opt/cms/index.php

编写一个脚本来为所有文件和所有用户执行上述操作应该很简单(有经验的话)。如果不行,请单独发帖提问。

然后使用/opt/cms目录中的SVN,每个人都链接到该目录。

长期解决方案:

彻底消除用户目录。将应用程序移至一个单一的网站位置(/opt/cms 或 /var/www/cms 等)。使用某种 URL 重写来指向example.com/~user/images/*example/user/images/*/opt/cms/user/images每个用户创建一个目录。此解决方案意味着用户不知道任何变化。

从长远来看,重写 CMS 以在后台存储差异,或者创建新结构并为用户提供新的 URL。

答案2

我不熟悉 Bespoke 的文件布局,但是您是否考虑过通过 svn:externals 属性来做到这一点?

它允许您将“外部”存储库链接到当前存储库内的位置。通过将 Bespoke 所在的中央存储库(对于您的组织来说是私有的,或者如果他们提供公共存储库)链接到您的所有项目存储库,它将使使用 SVN 推出一切变得轻而易举。

当您在存储库中某个位置运行 svn update 或 svn commit 时,更改将被拉取或推送到外部存储库并使所有内容保持同步。

svn:externals 仅支持 1.5 版之前的文件夹,因此请确保您使用的是 1.6 或更高版本,这样您才能将 index.php 之类的内容正确地链接到您的项目(除非定制文件可以放在一个目录中)。

相关内容