apache 配置php mod_php cgi fastcgi访问方式

来源:互联网 发布:网络歌手成都 编辑:程序博客网 时间:2024/04/30 01:42

1 apahe 以动态模块的方法调用php解析脚步

   编译php 指定 

 --with-apxs2=/usr/local/apache/bin/apxs 选项(其中apxs是apache安装后 在bin目录下生成的一个可执行程序)
注意测试不在需要指定--enable-fpm选项
最后会生成一个libphp5.so  这种方式是将php编译成一个 php内置模块
方法1
http.conf配置添加
PHPINIDir=".../php.ini" 
LoadModule php5_module modules/libphp5.so 则是编译php生成的动态库
<IfModule mime_module>容器中添加以下方法
AddType application/x-httpd-php .php
</IfModule>
方法2
<FilesMatch \.php$>   SetHandler application/x-httpd-php</FilesMatch>
方法3:
<IfModule mime_module>容器中添加以下方法
   AddHandler php5-script .php
方法4
<Directory ...>
SetHandler php5-script
注意上面的php5-script在很多网上 被说成cgi-script是有问题的 暂时还未研究清楚
最后注意一下 需要配置PHPINIDir 配置成 php.ini 文件全路径目录 例如 /home/work/php.ini 
  1. 安装Apache2.2.21
    #tar -zxvf httpd-2.2.21.tar.gz
    # cd httpd-2.2.21
    # ./configure--prefix=/usr/local/apache
    # make
    # sudo make install

httpd.conf文件中添加(或修改): ServerName 127.0.0.1 
启动Apache服务
#/usr/local/apache/bin/apachectl start

关闭Apache服务
#/usr/local/apache/bin/apachectl stop

重启Apache服务
#/usr/local/apache/bin/apachectl restart

  1. 安装libxml2(安装php需要libxml2做支持,所以需要先安装libxml2)
    #tar -zxvf libxml2-2.6.32.tar.gz 
    # cd libxml2-2.6.32 
    #./configure --prefix=/usr/local/libxml2 
    # make
    # sudo makeinstall

3.安装PHP5.2.6
#tar -zxvf php-5.2.6.tar.gz
# cd php-5.2.6
# ./configure--prefix=/usr/local/php

--with-libxml-dir=/usr/local/libxml2
--with-apxs2=/usr/local/apache/bin/apxs

#make
# sudo make install
# cp php.ini-dist /usr/local/php/lib/php.ini

4.配置Apache服务的httpd.conf文件
*
LoadModule处添加LoadModule php5_module module/libphp5.so
*
AddTypeapplication处添加AddType application/x-httpd-php .php

#/usr/local/apache/bin/apachectl restart



重启apache如果出现httpd:Syntax error on line 53 of /usr/devsoft/apache/conf/httpd.conf:Cannot load /usr/devsoft/apache/modules/libphp5.so into server:/usr/devsoft/apache/modules/libphp5.so: undefined symbol:sqlite3ExprDelete报这种错误一般是编译、链接出错,应该是不需要sqlite.所以需要重新编译php./configure时加--without-sqlite--without-pdo-sqlite


2 php-cgi模式
 其中php-cgi 直接拷贝php安装生成的php-cgi 无需要编译php 生成libphp5.so
 Action application/x-httpd-php /cgi-bin/php-cgi

3 php-fpm方式

    <VirtualHost *:8126>                                                                                             
    ServerAdmin pengzhi@baidu.com                                                                                
   DocumentRoot "/home/users/pengzhi/.jumbo/srv/http/ask18001"                                                  
 ServerName cq01-rdqa-dev059.cq01.baidu.com                                                                   
ErrorLog "/home/users/pengzhi/.jumbo/var/log/httpd/ask18001-error-log"                                       
 CustomLog "/home/users/pengzhi/.jumbo/var/log/httpd/ask18001-access-log" common                              



ProxyRequests Off

 ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:8112/home/users/pengzhi/.jumbo/srv/http/ask18001/index.php      注意这里fcgi后面一定要加上 Directory路径哈

#ProxyPassMatch ^/(.*)$ fcgi://127.0.0.1:8112/home/users/pengzhi/.jumbo/srv/http/zxq/wwwroot/index.php/?_url=/$1  注意这里面的 ? 前面一定得有个/ 否则会找不到文件的

 </VirtualHost>


0 0