首页 > 代码库 > CentOS6.5 LAMP之一编译httpd
CentOS6.5 LAMP之一编译httpd
apache服务器程序
命令httpd:
-t 测试配置文件
-l 静态模块
-D DUMP_MODULES 动态模块
-h获得帮助
-M:相当于-D DUMP_MODULES
-D DUMP_VHOSTS:列出虚拟主机
htpasswd:
为基于文件basic认证创建和更新用户认证文件
apachectl 自带脚本
apachectl start 开启httpd服务
httpd服务控制工具;
ab:apache benchmark Apache性能基准测试工具
apxs:httpd得以扩展使用第三方模块的工具 (钩子接口)钩住第三方模块
htcacheclean:
磁盘缓存清理工具
htdigest:
为digest摘要认证创建和更新用户认证文件
httxtt2dbm:
为rewrite map(重写映射表)创建dbm格式的文件
rotatelogs:
不关闭httpd而切换其使用日志的工具(如果站点访问量较大,月访问量文件可能到达亿级别了),当日志文件增长速度过快,access_log,我们的rotatelogs可以把原来的access_log重命名为access_log.1,进而生成一个新的access_log让我们的web服务写日志。平滑的实现日志切割
suexec:运行进程的用户身份,在配置文件中。
当httpd进程需要以另外用户身份去访问资源文件时,可以suexec做临时身份切换。
ab工具的初步使用:(同类的工具:http_load,webbench seige)
ab不能真实模拟场景
真正的工作环境大概分三种:
1、生产线上环境:提供真正服务
2、测试 环境
3、开发环境
ab [options] URL
-c # 模拟发起多少个并发请求
-n # 模拟的总请求数
-n 的值一定要大于等于 –c 的值
如:
[root@localhost ~]# ab -c 50 -n 500 http://www.aaabig.com/index.html
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking www.aaabig.com (be patient)
Completed 100 requests
一个鼓吹1000MB带宽的假设传输速率是125mb/s 1000/8=125mb/s
CentOS6编译安装httpd2.4
httpd2.4有哪些新特性呢?
1)MPM支持在运行时装载:装载方式:--enable-mpms-shared=all 等于把所有模块都编译进来编译成共享模块
--with-mpm={prefork|worker|event}
2)支持event模块 mpm
3)支持异步读写
4)支持每个模块和每个目录分别使用不同的日志级别
5)支持每请求的配置:<IF> <Elseif>
6)支持增强版的表达式分析器
7)支持毫秒级的keep alive的timeout
8)支持FQDN的虚拟主机,不在需要NameVirtualhost指令
9)支持用户使用自定义变量!
10)新增了一些模块:mod_proxy_fcgi ,mode_ratelimit
mod_request(对用户请求做更大作用)mod_remoteip(对远端的ip地址做更强大的控制能力)
11)修改了一些配置机制:不再支持使用order,allow,deny,基于ip的访问控制,改为require
CentOS6默认是不太支持安装http2.4,很多特性无非启动,如果非要安装,需要手动安装好几个版本。
httpd程序依赖于apr和apr-until(httpd2.4依赖于apr1.4以上的版本)
apr:apache portable runtime(相当(于httpd运行在虚拟机)不管在什么操作系统平台上,它会无视底层的差异
1.安装之前,先把http服务停掉
2.查看是否安装过包组 Development Tools Server platform
3使用rpm –qa | grep apr*查看版本
httpd2.4需要的组建差不多下载下来了,放到/tmp目录下,叫做
打红勾那三个
先解压缩apr-1.5.0.tar.bz2,进而cd进该目录
./configure --help
默认安装在/usr/local目录下,./configure --prefix=/usr/local/apr-1.5为了不覆盖CentOS原有的apr1.5,所以才使用此选项。
如果安装不存在问题,就直接make&&make install就ok了
笔者在安装时候出现过的问题跟大家分享一下,
make[1]: execvp: /root/20140813/apr-1.5.1/build/mkdir.sh: Permission denied,出现权限denied,肯定是mkdir.sh本身没有写权限,于是chmod a+x 给它一个全部人都可以执行的写权限。
笔者这里曾经还有错误,显示:libtool: link: you must specify an output file libtool: link: Try `libtool --help --mode=link‘ for m…
笔者通过找问题,感觉曾经是由xftp—>windows—>CentOS 6.5上,这里configure刚拷过来的时候也没有x权限,估计肯定是转到windows时候出现了问题。
这时候安装完成,显示:
/usr/bin/install -c -m 644 apr.exp /usr/local/apr-1.5/lib/apr.exp
/usr/bin/install -c -m 644 apr.pc /usr/local/apr-1.5/lib/pkgconfig/apr-1.pc
for f in libtool shlibtool; do \
if test -f ${f}; then /usr/bin/install -c -m 755 ${f} /usr/local/apr-1.5
done
/usr/bin/install -c -m 755 /tmp/new/apr-1.5.1/build/mkdir.sh /usr/local/apr-1.5/buil
for f in make_exports.awk make_var_export.awk; do \
/usr/bin/install -c -m 644 /tmp/new/apr-1.5.1/build/${f} /usr/local/apr-
done
/usr/bin/install -c -m 644 build/apr_rules.out /usr/local/apr-1.5/build-1/apr_rules.
/usr/bin/install -c -m 755 apr-config.out /usr/local/apr-1.5/bin/apr-1-config
[root@localhost apr-1.5.1]#
于是再次用相同的方法安装另一个包叫apr-util,
[root@localhost new]# ll
total 6400
drwxr-xr-x 28 1000 1000 4096 Aug 13 15:36 apr-1.5.1
-rw-r--r-- 1 root root 817569 Aug 12 23:40 apr-1.5.1.tar.bz2
-rw-r--r-- 1 root root 695303 Aug 12 23:38 apr-util-1.5.3.tar.bz2
-rw-r--r-- 1 root root 5031834 Aug 12 23:41 httpd-2.4.10.tar.bz2
[root@localhost new]# tar xf apr-util-1.5.3.tar.bz2
[root@localhost new]# cd apr-util-1.5.3
[root@localhost apr-util-1.5.3]# ./configure –help 注意这里有一项很关键,—with-apr
--with-apr=PATH prefix for installed APR or the full path to
apr-config
你需要告诉apr-util去哪里找apr,于是我们需要指定刚才安装的apr的路径
[root@localhost apr-util-1.5.3]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr-1.5/
然后
configure: creating ./config.status
config.status: creating Makefile
config.status: creating export_vars.sh
config.status: creating build/pkg/pkginfo
config.status: creating apr-util.pc
config.status: creating apu-1-config
config.status: creating include/private/apu_select_dbm.h
config.status: creating include/apr_ldap.h
config.status: creating include/apu.h
config.status: creating include/apu_want.h
config.status: creating test/Makefile
config.status: creating include/private/apu_config.h
config.status: executing default commands
[root@localhost apr-util-1.5.3]#
安装完成
先解压缩httpd,老规矩,cd到该目录下来,然后./configure --help来查看帮助
这里我们列举一下安装前的长长的选项,都有哪些需要添加的:
[root@localhost httpd-2.4.10]# ./configure --prefix=/usr/local/apache24(安装在哪个目录下) --sysconfdir=/etc/httpd(配置文件的文件夹放到哪里)
--enable-so(关键,支不支持动态装卸载模块都由它来决定)
--enable-ssl 启动ssl模块!(但是在装载这项之前,需要看看是否安装过openssl-devel模块)
--enable-cgi(支不支持cgi)
--enable-rewrite(支不支持URL重写,很有用)
--with-zlib(数据报文专用的压缩库)(这里需要yum install一个叫pcre-devel的包)
--with-apr=/usr/local/apr-1.5
--with-apr-util=/usr/local/apr-util
--enable-mpms-shared=all
--with-mpm=event (选择用event模式)
--enable-modules={all|most}(选择那些模块进行编译)
编译好了以后,make && make install,经过漫长的安装,安装成功了,然后就可以启动了,首先你要ss –tnlp 确保80端口没有被占用,因为我们还有服务启动脚本,需要编辑/etc/profile.d/httpd24.sh
export PATH=/usr/local/apache/bin:$PATH
然后执行source一下该文件
[root@localhost httpd-2.4.10]# source /etc/profile.d/httpd24.sh
[root@localhost httpd-2.4.10]# echo $PATH
/usr/local/apache/bin:/usr/lib64/qt-3.3/bin:/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
看看路径里面有了!
apachectl start
可以了!
it works!
安装完以后还要有收尾工作,查看cgi-bin服务器脚本二进制程序,默认显示的it works!页面在编译安装后的/usr/local/apache24/htdocs目录下,而不在/var/www/html下,而服务器端脚本在cgi-bin目录下,error不是错误日志,而是一大堆error错误页面。还有include下的头文件们,可以基于二次开发。
如果需要把httpd24做好的头文件放到系统中去,方便做二次开发,可以使用ln -sv /usr/local/apache24/include/ /usr/include/
最后可以导出man文档帮助,vim /etc/man.config 然后加入:
MANPATH /usr/local/apache24/man
在httpd2.4下基于ip做访问控制
允许所有主机访问:Require all granted
拒绝所有主机访问: Require all deny
控制某特定主机访问:
Require ip IPADDR
Require not ip IPADDR
IPADDR:
单个ip
network/Netmask
Network/Length :172.16.0.0/16
Net:172.16
Require host HOSTNA HOSTNAME
Require not host HOSTNAME
范例:假设我不想让192.168.1.121访问我这台主机,则要在/etc/httpd/httpd.conf定义Require,并且还需要另外用<>括起来。如:
<RequireAll>
Require not ip 192.168.1.121
Require all granted
</RequireAll>
则用192.168.1.121连接则显示:
[root@www tmp]# elinks 192.168.1.126
无权限!
下面来谈一下httpd2.4怎么设置虚拟主机:
先到主配置文件上找到DocumentRoot一项,注释掉,
215 #
216 #DocumentRoot "/web/htdoc"
217 <Directory "/web/htdoc">
还是在主配置文件上找到/vhost一项,找到并把前面的注释去掉
类似
# Virtual hosts
Include /etc/httpd/extra/httpd-vhosts.conf
然后找到/etc/httpd/extra/httpd-vhosts.conf文件,从里面修改
千万要记得用权限<Directory> </Directory>里面可以定义目录访问设定。
主机1
主机2