我对 PHP 和 EC2 还不太熟悉,所以请耐心等待。我需要在 EC2 上设置两个运行 Apache 和 PHP 的实例,然后与运行 MySQL 服务器的第三个实例进行通信。这两个 Web 实例将位于负载均衡器后面。
1) 如何同步不同 Web 服务器实例中的文件 (php、conf 等)?在 Web 服务器群中进行此类同步的标准做法是什么?是否可以通过在 EC2 上运行来简化此操作?
2) 大多数 Web 应用程序架构都包含表示层、业务逻辑层和存储层。是否有这样的 PHP 应用程序服务器,让我可以继续使用 Apache 作为前端 Web 服务器?(例如,在 JBoss 上运行 EJB 并使用 Apache 作为前端 Web 服务器)。Apache/PHP 解决方案的扩展性是否足够好?
干杯
布赖恩
答案1
我可以回答 (1),但对 (2) 不太了解:
1) 文件同步是一个问题,通常有多种解决方案,具体取决于您使用的特定技术。我在 Windows 上使用过 DFS,似乎效果很好。在 *nix 系统上,根据你的要求,你最好在 cronjob 上使用 rsync 之类的东西。不过,我认为 EC2 没有什么特别之处可以让这一切变得更容易。
2) 我不是 PHP 专家,但我认为运行位于 Apache(或您选择的 Web 服务器)后面的基于 PHP 的 Web 服务是 n 层架构中常用的中间层。这主要取决于您希望前端和中间层如何通信,是 HTTP 还是某种 EMS。PHP 似乎非常适合 Web/HTTP 模式,因此我建议查看 Web 服务路径。
答案2
1) 不幸的是,没有什么可以接近“标准”,但大多数网站都使用 NFS 或 rsync(或两者结合)。最近,将一个子集(conf)外包给 puppet 变得越来越流行。例如,您的 php.ini 将通过 puppet 进行控制,您的代码将通过 rsync 推送,并且您的用户上传或预生成的静态文件将位于 NFS 上。
2) 大多数 php 应用程序都牢牢扎根于单 http 请求/300 毫秒以下的生命周期。也就是说,您绝对可以拥有一个单独的 jboss 层或任何其他长寿命/内存驻留应用程序服务器。只需让您的 php 代码通过 http 或 thrift 或类似方式回调它即可。