秦11012 发表于 2015-8-5 08:22:54

[转] apache中配置php支持模块模式、cgi模式和fastcgi模式的实验

  转载自: http://www.iyunv.com/fangbo/archive/2011/12/02/2272400.html
  注: 好文章啊!
  
  首先安装apache、mysql和php,依次顺序安装。
  
  1.apache、mysql的安装比较简单,略过
  
  2. php的安装,我安装的是php5.3.6内置了php-fpm,所以不需要再单独下补丁了。
  ./configure –prefix=/usr/local/php5 /
--with-mysql=/usr/local/mysql /
--enable-fpm
--with-apxs2=/usr/local/apache/bin/apxs

  注意:
  --enable-fastcgi
  --enable-force-cgi-redirect
  这2个php新版本已经内置支持,所以如果加上这2个参数,make完毕会提示这2个参数找不到。所以不需要加这2个参数了。
  
  --with-apxs2
  这个参数看到有的文章说需要fastcgi模式的话,就不能配置这个,其实也不完全是这样,这个参数的用途只不过是把php的解释模块编译成so文件添加到apache的modules中,并且自动添加到conf文件。如果我们不想用模块模式的话,在httpd.conf中把:
  LoadModule php5_module modules/libphp5.so
  这行注释掉就可以了。
  
  3.mod_fastcgi的安装
  #wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.6.tar.gz
  # tar -zxvf mod_fastcgi-2.4.6.tar.gz
  # cd mod_fastcgi-2.4.6
  # cp Makefile.AP2 Makefile
  # vim Makefile 将Makefile中的路径改成你的apache的安装路径
  # make install 安装成功
  安装成功后,会自动把mod_fastcgi.so复制到/usr/local/apache/modules目录
  
  接下来是如何配置这4种模式:
  1.模块模式
  这种模式最简单,在http.conf中增加
  LoadModule php5_module modules/libphp5.so
  即可。然后在
  
  AddType application/x-httpd-php .php
AddType applicaiton/x-httpd-php-source .phps
  
  2.CGI模式
  这种模式需要注释掉
  LoadModule php5_module modules/libphp5.so 这行。如果不注释这行会一直走到handler模式。也就是模块模式。
  然后在httpd.conf增加action:
  Action application/x-httpd-php /cgi-bin/php-cgi
  如果在/cgi-bin/目录找不到php-cgi.可自行从php的bin里面cp一个。
  然后重启apache,再打开测试页面发现Server API变成:CGI/FastCGI。说明成功切换为cgi模式。
  
  3.FastCgi模式,用apche内置进程管理器
  首先要添加fastcgi模块到httpd.conf配置文件:
  LoadModule fastcgi_module modules/mod_fastcgi.so
  这种模式注释不注释LoadModule php5_module modules/libphp5.so这行貌似没什么关系,只要配置了以下模块
  
   FastCgiServer /usr/local/apache/cgi-bin/php-cgi -processes 20
   AddType application/x-httpd-php .php
  AddHandler php-fastcgi .php
  Action php-fastcgi /cgi-bin/php-cgi

  就会自动走到fastcgi模式。
  然后重启apache,这个时候用 ps aux|grep php就会发现有很多php-cgi进程在运行。说明配置生效
  
  
  
  
  4.FastCgi模式,用php-fpm进程管理器
  首先要添加fastcgi模块到httpd.conf配置文件:
  LoadModule fastcgi_module modules/mod_fastcgi.so
  接着修改配置文件成:
  
   FastCgiExternalServer /usr/local/apache/cgi-bin/php-cgi -host 127.0.0.1:9000
  AddType application/x-httpd-php .php
  AddHandler php-fastcgi .php
  Action php-fastcgi /cgi-bin/php-cgi

  
  注意,127.0.0.1:9000是php-fpm的开启端口,所以我们还需要把php-fpm打开。
  我电脑的位置是.
  >>>/usr/local/php5/sbin/php-fpm
  
  打开后再ps aux|grep php
  会发现很多php-fpm的进程:
  root      70020.41.5130601912 ?      Ss   15:20   0:00 php-fpm: master process (/usr/local/php5/etc/php-fpm.conf)
nobody    70030.01.3130521656 ?      S    15:20   0:00 php-fpm: pool www
nobody    70040.01.3130521660 ?      S    15:20   0:00 php-fpm: pool www
nobody    70050.01.3130521660 ?      S    15:20   0:00 php-fpm: pool www
nobody    70060.01.3130521660 ?      S    15:20   0:00 php-fpm: pool www
nobody    70070.01.3130521660 ?      S    15:20   0:00 php-fpm: pool www
nobody    70080.01.3130521660 ?      S    15:20   0:00 php-fpm: pool www
nobody    70090.01.3130521660 ?      S    15:20   0:00 php-fpm: pool www
nobody    70100.01.3130521660 ?      S    15:20   0:00 php-fpm: pool www
nobody    70110.01.3130521660 ?      S    15:20   0:00 php-fpm: pool www
nobody    70120.01.3130521668 ?      S    15:20   0:00 php-fpm: pool www
nobody    70130.01.3130521672 ?      S    15:20   0:00 php-fpm: pool www
nobody    70140.01.3130521672 ?      S    15:20   0:00 php-fpm: pool www
nobody    70150.01.3130521672 ?      S    15:20   0:00 php-fpm: pool www
nobody    70160.01.3130521672 ?      S    15:20   0:00 php-fpm: pool www
nobody    70170.01.3130521672 ?      S    15:20   0:00 php-fpm: pool www
nobody    70180.01.3130521672 ?      S    15:20   0:00 php-fpm: pool www
nobody    70190.01.3130521672 ?      S    15:20   0:00 php-fpm: pool www
nobody    70200.01.3130521676 ?      S    15:20   0:00 php-fpm: pool www
nobody    70210.01.3130521672 ?      S    15:20   0:00 php-fpm: pool www
nobody    70220.01.3130521676 ?      S    15:20   0:00 php-fpm: pool www
  
  再测试下访问没问题,大功搞成咯。
页: [1]
查看完整版本: [转] apache中配置php支持模块模式、cgi模式和fastcgi模式的实验