我有一个个人网站,其 Apache 配置略显复杂。我在将更改上传到服务器之前,先在个人计算机上测试这些更改。磁盘上的文件路径和站点的根 URL 在测试和生产条件下当然是不同的,并且它们出现在配置中的许多地方(尤其是 <Directory> 块,用于包含脚本或没有目录列表等的特殊位置)。
共享配置的公共元素的最佳方法是什么,以确保我的生产环境尽可能与我的测试环境匹配?
答案1
我自己的答案:我想到的是使用 SetEnv 将当前机器的路径存储在环境变量中,然后在任何特定于机器的地方都使用 ${} 包含一个通用配置文件。但我以前从未使用过这些功能,我不知道是否有一些注意事项。
答案2
现在这不能直接回答您的问题,因为它涉及设置更改,但为了避免这个问题,我将虚拟化我的测试系统和生产服务器。我希望这能让我减少配置方面的麻烦,因为我将运行相同的映像并在将来添加简单的可扩展性或冗余性。
也许您有机会运行虚拟化......
您还应该看看有关版本控制和复制的这两个线程服务器配置和在平台之间移动已安装的 Linux
答案3
可以使用 sym/hardlinks 设置一些脚手架,更改挂载点等,以便测试环境路径与生产相匹配。根据您的特定设置,它可能非常简单,也可能既丑陋又复杂。
要访问测试环境,请使用其 IP,或者您可以添加一个额外的 ServerAlias,其名称指向您的测试环境,或者您可以为两台机器配置相同的名称,并使用本地 /etc/hosts 来切换您想要访问的机器。
答案4
尽可能尝试使用<Location>
而不是<Directory>
,这样更改DocumentRoot
将会覆盖大部分更改。这可能是处理此问题的最简单方法。
指令Include
也可以是你的朋友——你可以将它粘贴在<Directory>
或<Location>
块中以包含不会在机器之间改变的配置部分。
这有点像黑客手段,但你也可以用它DirectoryMatch
来在一个部分中匹配测试目录和生产目录。