光油/ Nginx的/阿帕奇/ APC / Memcached的

我正在build立一个新的Web服务器,并想知道以下是一个有效的堆栈:

在前面清理caching和拆分静态内容的nginx和Apache与mod_php之间的dynamic内容之间的stream量。

我也将运行APC作为PHP的操作码caching和作为数据caching的memcached。

这是一个有效的configuration? 如果我的一些PHP已经被Varnishcaching,是否需要打扰运行APC?

我看到你的方法有些冗余。 nginx作为一个web服务器和负载平衡器是相当有效的,在它之上添加第二个负载平衡器似乎毫无意义。

我个人宁愿有一个前端的nginx服务静态内容和负载平衡请求到Apache + PHP

对于caching,你可能想看看redis,我认为它比memcached更强大。 除了负载均衡之外,还有更好的操作码caching。 您可能会考虑将xcache作为PHP的操作码caching。

这是一个有效的设置,虽然我想它可能是大多数用途的过大,并需要大量的内存按照预期行事。

有几个地方可以减less图层…例如,nginx /静态web服务器可能可以被一个聪明的caching策略取代,只使用apache和varnish(如果更改内容,可以使用caching静态内容,并使用caching失效技术)。 但这取决于您的特殊应用和需求。

memcached可能不会增加你的设置依赖于你的数据和用法。

“如果我的一些PHP已经被Varnishcaching了,我是否需要麻烦地运行APC?” 他们确实caching完全不同的东西。 APCcaching已编译的PHP代码和Varnish或任何其他webcaching的内容(可能由该代码生成)。 所以这是一个有效的设置。 没有什么可以打扰的。

我会尽可能简化你的架构:

首先,我将获得apache,并使用nginx和php-fpm作为dynamic内容。 那么,如果你不使用边缘包括或高级caching失效,我会使用nginx的dynamic内容caching而不是清漆。 静态内容应在nginxconfiguration中给予较长的到期时间,并在文件名中使用版本控制来避免服务过期的内容。

APC(或者xcache)是一个守护者,它避免了在每个执行过程中重新编译php源代码到操作码。 另外,如果你在一台机器上运行所有的程序,你可以使用APC进行数据caching,如果你从开始就编写了一个很好的抽象代码,可以稍后扩展到memcached。