【问题标题】:Apache + php-fpm configuration profiles(pools) for vhosts用于虚拟主机的 Apache + php-fpm 配置文件(池)
【发布时间】:2014-04-23 16:58:47
【问题描述】:

我刚刚使用来自

的引用从 (apache + mpm_prefork) 切换到 (apache + php-fpm +mod_fastcgi)

Switching from prefork MPM to worker MPM + php-fpm on ubuntu
http://www.garron.me/en/blog/ubuntu-lamp-apache2-mpm-worker-and-php-fpm.html

以前主要的 apache 配置在

/etc/apache2/apache2.conf

并且虚拟主机配置在

/etc/apache2/sites-available/example1.com
/etc/apache2/sites-available/example2.com
/etc/apache2/sites-available/example3.com
/etc/apache2/sites-available/examplen.com

切换到 php-fpm 后,我需要制作类似的配置文件(池)
1. high.conf 应该是默认设置,如 ma​​x_execution_time , memory_limit 和其他设置为 high。 (适用于 drupal 商务网站)
2. light.conf 设置值较低,适合轻量级普通网站。

是否可以像这样创建两个配置文件(池)并一次将这些池分配给多个站点。? 我可以删除上面提到的旧 vhost 配置文件还是必须在其中指定池相关设置?

更新:这是在具有标准用户/组(如 root、www-data 等)的 VPS 上,而不是用于配置具有多个用户/组的共享主机。

更新 2:进一步阅读后,我尝试了一些可能有效的方法,请纠正我。 复制默认 www.conf

cp /etc/php5/fpm/pool.d/www.conf /etc/php5/fpm/pool.d/light.conf

sudo nano /etc/php5/fpm/pool.d/light.conf

将 php5-fpm.sock 替换为 php5-fpm-light.sock 并将 pm.* 设置更改为较低的值,例如

pm.max_children = 20 ;default www.conf value pm.max_children = 50
pm.start_servers = 2 ;default www.conf value pm.start_servers = 3
pm.min_spare_servers = 2;default www.conf value pm.min_spare_servers = 4
pm.max_spare_servers = 4;default www.conf value pm.max_spare_servers = 6
php_admin_value[memory_limit] = 32M ;default www.conf value php_admin_value[memory_limit] = 192M

所有轻量级 vhost 文件都配置为使用 php5-fpm-light.sock 的 fastcgi,所有其他 drupal 商务网站都配置为使用 php5-fpm.sock 的 fastcgi 喜欢

#light weight
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi-light -socket  /var/run/php5-fpm-light.sock -idle-timeout 30 -pass-header Authorization

#drupal commerce -idle-time-out is set to high.
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket  /var/run/php5-fpm.sock -idle-timeout 250 -pass-header Authorization

当尝试使用重新启动时

service apache2 restart && service php5-fpm restart

正在产生错误

FastCgiExternalServer:重新定义之前定义的类“/usr/lib/cgi-bin/php5-fcgi-light”

  1. 对于上述错误是否意味着应该创建单独的池 设置相同但插座不同?
  2. 如果是,不应该增加内存消耗,因为 php_admin_value[memory_limit]?
  3. -idle-timeout 参数会覆盖 php.ini 的 max_execution_time 还是它们都是不同的设置?

对我来说,这个 apache+php-fpm+fastcgi 的主要问题是有几个配置文件,如下所示,我无法弄清楚最后哪些设置覆盖(应用)。

/etc/apache2/conf.d/php5-fpm.conf
/etc/apache2/apache2.conf
/etc/apache2/mods-available/php5.conf
/etc/php5/fpm/php-fpm.conf (might be master process config)
/etc/php5/fpm/php.ini
/etc/php5/fpm/pool.d/www.conf (might be more if multiple pools are present)  

【问题讨论】:

    标签: apache configuration threadpool fastcgi php


    【解决方案1】:

    我遇到了相同的“重新定义先前定义的类”的问题,解决方案是确保所有 filename 组件(例如您/usr/lib/cgi-bin/php5-fcgi)都是唯一的,包括在所有虚拟主机中.

    这并不一定意味着您需要不同的套接字/端口,但如果您打算为作为单独用户运行的每个虚拟主机运行单独的 PHP-FPM 进程,也许还使用 Apache 的 suExec 函数,那么您将需要在单独的池中指定不同的套接字/端口,并将相应的值添加到 Apache 配置中的每个 VirtualHost 块。

    【讨论】:

      猜你喜欢
      • 2011-05-04
      • 2017-06-14
      • 2012-08-22
      • 2011-10-13
      • 1970-01-01
      • 2016-10-22
      • 2021-06-20
      相关资源
      最近更新 更多