您知道哪些 Apache/PHP 配置?它们有多好?

Vla*_*sny 8 php fastcgi cgi suphp apache-2.2

我想向您询问您所知道的 PHP/Apache 配置方法,以及它们的优缺点。我自己开始:

---------------- PHP 作为 Apache 模块----------------

优点:速度快,因为您不需要每次都启动 exe,尤其是在mpm-worker模式下。您还可以在此模式下使用各种PHP 加速器,如 APC 或 eAccelerator。

缺点:如果您在 mpm-worker 模式下运行 apache,您可能会面临稳定性问题,因为任何 php 脚本中的每个故障都会导致该 apache 进程的整个线程池不稳定。同样在这种模式下,所有脚本都代表 apache 用户执行。这不利于安全。mpm-worker 配置需要在线程安全模式下编译 PHP。至少 CentOS 和 RedHat 默认存储库没有线程安全的 PHP 版本,因此在这些操作系统上,您至少需要自己编译 PHP(有一种方法可以在 Apache 上激活 worker mpm)。线程安全的 PHP 二进制文件的使用被认为是实验性的和不稳定的。另外,许多 PHP 扩展不支持线程安全模式,或者没有在线程安全模式下进行良好测试。

---------------- PHP 作为 CGI ----------------

这似乎是最慢的默认配置,它本身似乎是一个“骗局”;)

---------------- PHP 作为 CGI 通过 mod_suphp ----------------

优点:suphp 允许您代表脚本文件所有者执行 php scipts。这样您就可以安全地将同一台机器上的不同站点分开。此外,suphp 允许每个虚拟主机使用不同的 php.ini 文件。

缺点:CGI 模式下的 PHP 意味着较低的性能。在这种模式下,你不能使用像 APC 这样的 php 加速器,因为每次产生新进程来处理脚本时,前一个进程的缓存都没用。顺便说一句,你知道在这个配置中应用一些加速器的方法吗?我听说了一些关于将 shm 用于 php 字节码缓存的消息。此外,您无法在此模式下通过 .htaccess 文件配置 PHP。如果您需要通过 .htaccess(php_value / php_flag 指令)设置各种脚本选项,则需要为此安装 P ECL htscanner

---------------- PHP 作为 CGI 通过 suexec ----------------

这个配置看起来和 suphp 一样,但我听说它更慢,更不安全。几乎相同的优点和缺点适用。

---------------- PHP 作为 FastCGI ----------------

优点:FastCGI 标准允许单个 php 进程在 php 进程被杀死之前处理多个脚本。这样您就可以获得性能,因为无需为每个脚本启动新的 php 进程。您还可以在此配置中使用 PHP 加速器(有关评论,请参阅缺点部分)。此外,FCGI 几乎就像 suphp 也允许代表某些用户执行 php 进程。mod_fcgid似乎对 apache 有最完整的 fcgi 支持和灵活性。

缺点:在fastcgi模式下使用php加速器会导致高内存消耗,因为每个PHP进程都会有自己的字节码缓存(除非有一些加速器可以使用共享内存进行字节码缓存。有这样的吗?)。FastCGI 的配置也有点复杂。您需要创建各种配置文件并进行一些配置修改。

看起来,fastcgi 是最稳定、最安全、最快速、最灵活的 PHP 配置,但是配置起来有点困难。但是,可能是,我错过了什么?

欢迎评论!

rkt*_*hkr 1

一个好的候选者是:Apache 2 ITK MPM

\n\n
\n

apache2-mpm-itk(简称 mpm-itk)是 Apache Web 服务器的 MPM(多处理模块)。\n mpm-itk 允许您在单独的\n 下运行每个虚拟主机。 uid 和 gid \xe2\x80\x94\n 简而言之,一个虚拟主机的脚本和配置文件不再需要对所有其他虚拟主机可读。

\n
\n\n

与我们的一位客户合作良好,拥有数百个虚拟主机,拥有大量访问者。

\n\n

您可以通过将 PHP 作为模块运行来获得所有优点,并找出一些缺点。

\n