从源码安装apache httpd,并加载对php的支持
来源:互联网 发布:php ext skel 编辑:程序博客网 时间:2024/05/17 00:56
要完成如题所述目标,分两步走:首先从源码安装apache httpd,然后加载对php的支持。
一、从源码安装apache httpd
1、首先下载最新的httpd包,这里使用的是httpd-2.4.16.tar.gz
2、解压下载的httpd包,进入解压后目录
3)最后解决PCRE依赖。下载最新的PCRE包,假如PCRE包最终的“安装到目录”为"/home/dsl/usr",那么执行以下命令安装PCRE包
4、假如httpd包最终的“安装到目录”为"/home/dsl/usr",那么执行以下命令,安装httpd
本文使用的是php5,具体的php5模块路径为"/usr/lib/apache2/modules/libphp5.so",使用"LoadModule"指令加载php5模块的具体命令是:
2.2、使得识别php文件
要使得httpd可以识别php文件,可以在httpd.conf中加入如下内容(摘自网上)。
运行"apachectl start",发现出现如图1错误。
有两种解决方案:用支持多线程的PHP版本替换当前版本,而由于即便是支持多线程的PHP版本对多线程的支持也不是很好,因而不选用这种方案[4]。第2种方案是在安装httpd的时候配置使用prefork MPM,具体是在运行httpd的configure脚本时,加上"--with-mpm=prefork"参数。
根据第2种方式重新安装httpd,再次运行"apachectl start",不再出现图1错误。
3.2、访问某个目录,不会自动访问该目录下的主页文件
现有一个PHP项目目录,名称为ganglia,将其复制到apache的Web项目目录下,通过访问"http://localhost/ganglia",出现如图2的结果,即并没有自动加载该项目下的"index.php"文件。
图2
要解决以上问题,需要设置httpd.conf中的两处地方:
1)加载mod_dir.so模块
要解决以上问题,需要mod_dir.so模块的支持,通过以下命令,加载mod_dir.so模块。
[1]http://httpd.apache.org/docs/2.4/install.html
[2]https://httpd.apache.org/docs/2.2/mpm.html
一、从源码安装apache httpd
1、首先下载最新的httpd包,这里使用的是httpd-2.4.16.tar.gz
2、解压下载的httpd包,进入解压后目录
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]3)最后解决PCRE依赖。下载最新的PCRE包,假如PCRE包最终的“安装到目录”为"/home/dsl/usr",那么执行以下命令安装PCRE包
prefix=/home/dsl/usrexec_prefix=/home/dsl/usroldincludedir=$prefix/oldinclude./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedirmakemake install在执行以上命令后,在"/home/dsl/usr/bin"中有个"pcre-config"程序。修改PATH环境变量为:PATH=$PATH:/home/dsl/usr/bin,那么在安装httpd的时候就能够找到这个"pcre-config"程序,从而解决了对PCRE的依赖。
4、假如httpd包最终的“安装到目录”为"/home/dsl/usr",那么执行以下命令,安装httpd
prefix=/home/dsl/usrexec_prefix=/home/dsl/usroldincludedir=$prefix/oldinclude./configure --prefix=$prefix --exec-prefix=$exec_prefix --oldincludedir=$oldincludedirmakemake install
二、加载对php的支持
2.1、加载php模块本文使用的是php5,具体的php5模块路径为"/usr/lib/apache2/modules/libphp5.so",使用"LoadModule"指令加载php5模块的具体命令是:
LoadModule php5_module /usr/lib/apache2/modules/libphp5.so在httpd.conf文件中加入以上语句即可。
2.2、使得识别php文件
要使得httpd可以识别php文件,可以在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模块不支持多线程
运行"apachectl start",发现出现如图1错误。
图1
有两种解决方案:用支持多线程的PHP版本替换当前版本,而由于即便是支持多线程的PHP版本对多线程的支持也不是很好,因而不选用这种方案[4]。第2种方案是在安装httpd的时候配置使用prefork MPM,具体是在运行httpd的configure脚本时,加上"--with-mpm=prefork"参数。
根据第2种方式重新安装httpd,再次运行"apachectl start",不再出现图1错误。
3.2、访问某个目录,不会自动访问该目录下的主页文件
现有一个PHP项目目录,名称为ganglia,将其复制到apache的Web项目目录下,通过访问"http://localhost/ganglia",出现如图2的结果,即并没有自动加载该项目下的"index.php"文件。
图2
要解决以上问题,需要设置httpd.conf中的两处地方:
1)加载mod_dir.so模块
要解决以上问题,需要mod_dir.so模块的支持,通过以下命令,加载mod_dir.so模块。
LoadModule dir_module modules/mod_dir.so2)扩展主页文件的名称集合
默认配置中,只认为名称为"index.html"的才为主页文件,现在需要增加"index.php"名称。具体是配置如下片段:
#如果原先存在,在原先基础上修改<IfModule dir_module> DirectoryIndex index.html index.php</IfModule>
以上实践中,程序以root用户身份运行,如果想以普通用户身份运行,可参考《以普通用户运行Ganglia监控框架》。
[1]http://httpd.apache.org/docs/2.4/install.html
[2]https://httpd.apache.org/docs/2.2/mpm.html
[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
0 0
- 从源码安装apache httpd,并加载对php的支持
- 安装apache 并配置支持PHP
- httpd.conf中对php支持的配置
- apache对php支持的配置
- Centos 使用源码安装subversion apache-httpd
- 【Ubuntu 16】源码包安装Apache Httpd
- Apache(httpd)-2.4.29源码安装
- 源码安装和配置apache(httpd)和 PHP 和 mysql全过程(一)
- 源码安装和配置apache(httpd)和 PHP 和 mysql全过程(二)
- 源码安装和配置apache(httpd)和 PHP 和 mysql全过程(三)
- centos 7 安装 apache,php,并支持mongodb扩展
- Linux下安装配置apache,mysql,php并支持gd,jpeg,png,freetype的方法
- CentOS 配置 apache +php 并附上 httpd启动不了的解决方案
- PHP源码安装开启GD库并支持JPEG
- 使用apache的指令从httpd.conf中改变php.ini中配置
- apache php源码安装
- php安装对memcached的支持
- php安装对memcached的支持
- 服务器加速
- discuz论坛图片无法显示之图片流问题
- pagerank的matlab实现
- 常用函数--不同时间粒度循环取数
- celery 简介
- 从源码安装apache httpd,并加载对php的支持
- block循环引用问题
- JQuery选择器大全
- A记录、MX记录、NS记录、CNAME记录、url转发的解释说明
- echarts: 图表的搬运工
- iOS 开发 是该选择Block 还是Delegate呢
- [PAT (Advanced Level) ]1005. Spell It Right解题文档
- Web负载均衡高可用之Nginx+Keepalived
- gdb调试相关