使CMS的媒体目录在本地开发中可用,并回退到生产数据(例如Magento 2 public/ Media)



在开发网络商店时,我们不希望将所有媒体资产复制到本地开发机器。

如果能获得系统的真实视图,也就是根据需要从生产服务器加载媒体映像,那就太好了。

如何做到这一点?

对于Magento 2,有一个开源模块可以做到这一点。

如果您使用的是Linux,那么更通用的解决方案似乎是可能的,使用http和union融合文件系统。这可以工作在不同的商店和CMS系统,如Shopware, TYPO3等。

下面的例子是在Ubuntu 20.04上测试的

但是:解决方案没有在生产安装上进行很好的测试,所以请小心。

首先安装所需的软件包

apt install httpdirfs unionfs-fuse

我们假设生产服务器使用Apache。在下一步中,我们启用目录列表,但仅针对某个秘密用户代理。确保替换掉"ThisIsSecret"你的秘密。

<If "%{HTTP_USER_AGENT} == 'ThisIsSecret'">
Options +Indexes +MultiViews
AllowOverride None
</If>
<Else>
Options -Indexes -MultiViews +FollowSymLinks
AllowOverride All
</Else>

进入本地开发目录,移动当前的media目录:

cd /home/me/projects/example.com/public
mv media media_local

现在使用httpdirfs通过HTTP挂载服务器的目录。httpdirfs解析目录列表并让您看到远程文件。无法编辑

mkdir media_remote
httpdirfs --cache --user-agent ThisIsSecret https://example.com/media/ media_remote

接下来,我们使用unionfs与CopyOnWrite (cow)选项,以便仍然能够写入媒体文件夹。

mkdir media
unionfs-fuse -o cow media_local=RW:media_remote=RO media

最新更新