标签:httpd2.4编译
httpd-2.4特性
(1) MPM支持运行DOS机制
(2) 支持event MPM
(3) 支持异步读写
(4) 支持每模块及每个目录分别使用各自的日志级别
(5) 每请求配置;<if>
(6) 增强版的表达式分析器(正则表达式)
(7) 支持毫秒级的keepalive timeout
(8) 基于FQDN的虚拟主机不在需要Name Virtual Host指令
(9) 支持用户自定义变量
增加了新模块
(1)mod_proxy_fcgi fast cgi
(2)mod_ratelimit 速率限制
(3)mod_remoteip 限定远程客户端IP
修改了一些配置机制
不再支持使用order ,deny,allow 来做基于IP的访问控制
httpd 依赖于apr apr-util apr-icon(不是必须的)
apr:Apache portable runtime Apache可移植运行环境
apr需要1.4以上的版本,所以apr apr-util两个软件需要编译安装
注意:如果已经安装老的httpd,要停掉此服务并开机不启动
httpd编译前的准备工作:
一般编译安装时需要这几个包组: “development tools” “server plantform development”
安装顺序:apr --> apr-util --> httpd2.4
安装apr,apr-util(需要 --with-apr=新版apr安装路径);编译之前需要安装pcre-devel解决依赖关系
安装apr、apr-util 钱可以查看下安装方法 #less README
apr可以安装在/usr/local/apr
./configure --prefix=/usr/local/apr
make && make install
apr-util可以安装在/usr/local/apr-util
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
编译安装httpd2.4
安装时可能会有关于pcre的报错,所以需要提前安装下列软件
yum install pcre-devel zlib-devel openssl-devel(可不安装)
1、httpd编译安装的常用选项:
./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-module=most --enable-mpms-shared=all --with-mpm=prefork
prefix 程序包的安装路径
sysconfdir 配置文件的路径
enable-so 启用DSO机制,模块动态加载
enable-ssl 启用SSL功能
enable-cgi 支持cgi模式
enable-rewrite 支持URL重写
with-zlib 支持网络中压缩传输(所有with的功能,都需要安装对应包的devel包)
with-pcre 支持pcre功能
with-apr rpm包在with的时候就不需要=/path,编译安装的则需要指明其路径
with-apr-util
enable-module 启用哪些模块
enable-mpms-shared 把所有支持的mpm功能做成共享模式
with-mpm 默认的MPM
2、make && make install
启动、关闭服务:
apachectl start|stop
注意:直接使用apachectl启动服务可能会启动老版本的,需要将新的路径放置在PATH变量的最前面
vim /etc/profile.d/httpd.sh
exprot PATH=/usr/local/apache/bin:$PATH
#source /etc/profile.d/httpd.sh
#hash -r
验证一下:which apachectl 看下新的apachectl是否在新的路径中
#hash -r 清除下所有的hash记录
目录解释:
/usr/local/apache/build/config.nice 中可以看到自己编译时用的那些选项
/usr/local/apache/cgi-bin/ 以后再做介绍
/usr/local/apache/error/ 错误页
/usr/local/apache/htdocs/ 新版的默认主页位置
/usr/local/apache/icons/ 图标文件
/usr/local/apache/include/ 头文件,要导出被系统使用的话需要:ln -sv /usr/local/apache/include /usr/include/httpd
/usr/local/apache/logs/ 日志文件,可以修改配置文件修改路径
/usr/local/apache/man/ 帮助文档、说明页;如果要找到这些man,要输出给MANPATH:
vim /etc/man.config 增加一条MANPATH /usr/local/apache/man
/usr/local/apache/manual 手册页(html格式文档)如果想启用起来,则修改/etc/httpd24/httpd.conf 启用include /etc/httpd24/extra/httpd-manual.conf
/usr/local/apache/modules 共享模块
A、如何修改MPM:
修改配置文件:/etc/httpd24/httpd.conf,找到loadmodule mpm_prefork_module modules/mod_mpm_prefork.so,修改自己想要的mpm即可
#killall httpd 关闭所有httpd进程
#apachectl start 启动服务
没有指明以哪个用户身份启用其进程,默认使用daemon。如果想使用apache用户身份运行,则:
创建没有宿主目录的用户:
#groupadd -r apache
#useradd -r -g apache apache
修改配置文件中的user group即可
B、修改main server的DocumentRoot。跟以往不同,修改了DocmentRoot=NEW PATH后还额外需要增加<Directory /NEW/PATH> ...... </Directory>
C、基于IP的访问控制法则
允许所有主机访问:require all granted
拒绝所有主机访问:require all deny
控制特定IP访问:
require ip IPADDR 授权指定来源地址的主机访问
require not ip IPADDR 拒绝指定来源地址的主机访问
IPADDR:可以写成
ip 192.168.1.1
network/mask 192.168.1.0/255.255.255.0
network/length 192.168.1.0/24
net 192.168.1
控制特定主机(HOSTNAME)
require host HOSTNAME
require no host HOSTNAME
HOSTNAME:
FQDN:特定主机
DOMAIN:指定域内的所有主机
D、虚拟主机
注释掉DocumentRoot
启用Include /etc/httpd24/extra/httpd-vhosts.conf
基于IP PORT和FQDN都支持
基于FQDN的不在需要NameVirtualHost指令,如:
在配置文件中NameVirtualHst *:80 或者别的(httpd2.2中有),现在到了httpd2.4版本后没有此指令
<VirtualHost *:80>
ServerAdmin webadmin@a.com
DocumentRoot "/vhost/a.com/htdocs"
ServerName www.a.com
Alias a.com
Errorlog "logs/www.a.com-error.log"
CustomLog "logs/www.a.com-access.log" combined
<Directory "/vhost/a.com/htdocs"> (没有对目录做授权,网页打开时会出现报错forbidden)
options none
AllowOverride none
Require all granted
</Directory>
</VirtualHost>
#killall -SIGHUP httpd 可以重读配置文件
E、SSL
需要启用LoadModule ssl_module
启用配置文件Include /etc/httpd24/extra/httpd-ssl.conf
启用LoadModule socache_shmcb_module modules/mod_socache_shmcb.so(不启用会有依赖的报错)
F、服务脚本
#cd /etc/rc.d/init.d/
#cp httpd httpd24
修改httpd24中:
apachectl=/usr/local/apache/bin/apachectl
httpd=${HTTPD-/usr/local/apache/bin/httpd}
pidfile=${PIDFILE-/usr/local/apache/logs/httpd.pid}
chkconfig --add httpd24
chkconfig httpd24 on
标签:httpd2.4编译
原文地址:http://wangkunpeng.blog.51cto.com/1538469/1768241