对于那些不熟悉“暂存”一词的人来说,它包括将您的代码私下部署到生产服务器(或服务器的克隆),以便您可以确保上线时不会出现任何问题。
我通常在域上暂存我的代码staging.example.com在哪里示例.com是我的生产域。
我经常遇到的问题是某些应用程序逻辑依赖于域名,尤其是当域名在某处硬编码时。
假设您的暂存环境和生产环境在同一台服务器上,您如何处理这种情况?
答案1
您可以添加别名 IP(或使用其他 NIC)并将您的临时服务器虚拟主机/服务器的 IIS 或 Apache 绑定到该特定 IP 地址;然后,您可以为 domain.com 创建一个 HOSTS 文件条目,以解析为测试计算机上的这个新的别名(或辅助)IP 地址(或者,如果您希望通过 domain.com 进行 LAN 范围的临时访问,您可以在 LAN DNS 服务器中创建一条 A 记录)。
当然,您将无法访问实际的实时服务器,因为您的新 A 记录或 HOSTS 文件条目将解析为错误的 IP 地址,直到被注释掉或删除。
答案2
我设计的所有应用程序都从数据库中提取信息。我的所有工作都是用 Java 编写的。扩展 java.util.Properties 类,以便所有内容都从数据库而不是文件中提取。不同服务器之间唯一不同的是数据源的 JNDI 条目。所有关于要做什么的逻辑都封装在扩展 java.util.Properties 类的类中。
这使得从 DEV -> UAT -> STAGING -> PROD 的迁移变得更加容易。从 UAT -> STAGING -> PROD 迁移时,我们无需更改任何代码,无需进行 DNS 清理,也绝对无需重建 WAR 文件。
当我们与不在同一环境中工作的开发人员打交道时,DNS 混乱/虚拟 IPS 可能会变得难以调试。
当您拥有负载平衡/集群环境时,这也会让您开始扩展时的生活更加轻松。在扩展时尝试处理应用程序中的 DNS/虚拟 IPS 非常困难,并且会增加更多可能损坏的移动部件。
答案3
我总是将临时服务器设置为在真实域上响应,然后更改我的本地主机文件以将真实域名指向临时服务器的 IP 地址。当然,这只有在您有单独的服务器时才有效,您应该有!
Windows 上有一些实用程序可以即时更改 hosts 文件,在 Mac 上我使用 Gas Mask。在 Windows 上,您可能需要刷新 dns(ipconfig /flushdns),在 Mac 上,只要您单击“应用”,Gas Mask 就会立即更改它。
答案4
您可以使用视图设置 DNS 服务器。在内部视图中返回您的暂存环境的 IP。为了避免冲突,仅配置测试客户端以使用这些 DNS 服务器。