用于虚拟主机的Apache + php-fpm配置文件(池)

时间:2014-03-18 06:45:43

标签: apache configuration threadpool fastcgi php

我刚刚使用

中的引用从(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

和vhost配置在

/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应默认设置为 max_execution_time,memory_limit等设置为高。 (适用于drupal商业网站)
2. light.conf,设置值较低,适用于轻量级普通网站。

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

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

更新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-light.sock替换php5-fpm.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

使用php5-fpm-light.sock将所有轻量级vhost文件配置为fastcgi,并使用php5-fpm.sock将所有其他drupal商务站点配置为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或者它们都是不同的设置?
  4. 关于这个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)  
    

1 个答案:

答案 0 :(得分:1)

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

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