【问题标题】:How to manage different environments with a single server?如何使用单个服务器管理不同的环境?
【发布时间】:2015-07-12 01:22:23
【问题描述】:

我对这些东西有点陌生,所以请原谅我的无知。

我正在开发一个 Web 应用程序,我有 4 个环境;开发、测试、登台和生产。我只有一台服务器。

我想知道在 1 台服务器上管理这 3 个环境的最佳方法是什么,我猜应该如下: - 每个人都可以访问生产 - 测试和登台应该只对特定用户开放。

那么你们将如何管理这些环境?

我正在考虑从我的虚拟主机中的 ips 列表中允许,但用户可能没有静态 ip 地址。 有什么建议吗?

【问题讨论】:

标签: php apache server development-environment production-environment


【解决方案1】:

如果您有四个不同的环境,则需要设置应用程序的四个不同实例 - 因为您不会总是在开发、测试、登台和生产环境下运行相同的代码。

使用 Apache,您可以使用基于名称的虚拟主机来设置子域并将它们指向每个不同的环境。如果您在服务器上有一个控制面板,它应该为您处理子域的创建。如果您需要尝试 Vesta CP - 它是免费的。

您可以使用应用程序中的代码和配置或服务器上的安全指令来控制对不同环境的访问。这样做的一种常见方法是使用受信任的 IP 地址,但在这里要小心 - 您可能会遇到信任此字段的安全问题 - 确保您非常小心地信任(或只是不信任)X-Forwarded 的值- 用于标头(由代理使用)。这个网站正是通过这样做而对其开发环境造成了访问漏洞(谷歌:我如何破解 stackoverflow 的攻击剖析,我无法发布更多链接)。

如果你使用 symfony2 之类的应用框架,你会发现它对环境的控制和防火墙在这些场景中真的可以发挥作用。

这里是掌握和创建环境的文档:http://symfony.com/doc/current/cookbook/configuration/environments.html

这里是他们的安全配方的链接:http://symfony.com/doc/current/cookbook/security/index.html

使用那里的文档,您应该能够创建特定于环境的安全配置。

【讨论】:

  • 我使用 Yii2 ans 创建多个环境不是问题。虚拟主机也不是问题。但问题是如何处理它并使测试和登台对世界不可见。当所有 3 个都在同一台服务器上时,是否可以将测试和登台放在 vpn 之后而不是生产?以及如何使用存储库来管理环境?开发提交到 repo,然后使用 repo 更新测试,然后 rsync staging 和 testing,然后 rsync prod 和 staging.. 这样好吗?
猜你喜欢
  • 2018-05-10
  • 2021-03-13
  • 2020-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-01
  • 1970-01-01
相关资源
最近更新 更多