3、根据[1],要安装httpd包,首先需要解决3个依赖:APR,APR-Util和PCRE。
1)首先解决APR依赖。下载最新的APR包,将其解压得到一个目录,将该目录重命名为apr。将apr目录整个移入httpd解压后目录的srclib子目录中。[1]
2)其次解决APR-Util依赖。下载最新的APR-Util包,将其解压得到一个目录,将该目录重命名为apr-util。将apr-util目录整个移入httpd解压后目录的srclib子目录中。[1]prefix=/home/dsl/usr exec_prefix=/home/dsl/usr oldincludedir=$prefix/oldinclude ./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir make make install在执行以上命令后,在"/home/dsl/usr/bin"中有个"pcre-config"程序。修改PATH环境变量为:PATH=$PATH:/home/dsl/usr/bin,那么在安装httpd的时候就能够找到这个"pcre-config"程序,从而解决了对PCRE的依赖。
prefix=/home/dsl/usr exec_prefix=/home/dsl/usr oldincludedir=$prefix/oldinclude ./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedir make make install
二、加载对php的支持
2.1、加载php模块LoadModule php5_module /usr/lib/apache2/modules/libphp5.so在httpd.conf文件中加入以上语句即可。
<FilesMatch ".+\.ph(p[345]?|t|tml)$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch ".+\.phps$"> SetHandler application/x-httpd-php-source # Deny access to raw php sources by default # To re-enable it's recommended to enable access to the files # only in specific virtual host or directory Order Deny,Allow Deny from all </FilesMatch> # Deny access to files without filename (e.g. '.php') <FilesMatch "^\.ph(p[345]?|t|tml|ps)$"> Order Deny,Allow Deny from all </FilesMatch> # Running PHP scripts in user directories is disabled by default # # To re-enable PHP in user directories comment the following lines # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it # prevents .htaccess files from disabling it. <IfModule mod_userdir.c> <Directory /home/*/public_html> php_admin_flag engine Off </Directory> </IfModule>备注:以上需要加到httpd.conf文件中的内容可以单独放置到文件中,然后再在httpd.conf文件中通过"IncludeOptional"指令进行相应文件的导入。
三、排错
运行安装得到的httpd的方式一般是通过使用安装得到的apachectl脚本,使用该脚本可以设置好运行httpd运行所需要用到的环境变量。运行httpd的命令如下:apachectl start3.1、PHP模块不支持多线程
图1
根据[2][3],MPM是Apache加载的一个模块,它主要用来处理并发多请求问题。有很多种MPM实现:worker,event,prefork,winnt等。worker MPM使用多线程的方式来解决并发多请求问题,prefork MPM使用多进程的方式来解决并发多请求问题。安装httpd的时候默认配置使用worker MPM。PHP分为支持多线程的PHP版本和不支持多线程的PHP版本,当前安装的PHP为不支持多线程的版本,因此报出以上错误。LoadModule dir_module modules/mod_dir.so2)扩展主页文件的名称集合
默认配置中,只认为名称为"index.html"的才为主页文件,现在需要增加"index.php"名称。具体是配置如下片段:
#如果原先存在,在原先基础上修改 <IfModule dir_module> DirectoryIndex index.html index.php </IfModule>
以上实践中,程序以root用户身份运行,如果想以普通用户身份运行,可参考《以普通用户运行Ganglia监控框架》。
[3]https://httpd.apache.org/docs/2.2/mod/
[4]http://stackoverflow.com/questions/1623914/what-is-thread-safe-or-non-thread-safe-in-php
[5]http://blog.csdn.net/dslztx/article/details/49097977