HTTP基本特性
0.9
文本
,method
1.0
非持久
, method,mime
,弱缓存
1.1
持久
2.0mime, method,
引入spdy优势
,缓存加强
2.4较2.2新特性:
1、 MPM
非编译为核心
: httpd -M查看2、 event在2.4
生产环境
3、 支持
毫秒级别
的保持连接(KeepAlive Off KeepAliveTimeout 0.01?)4、 虚拟主机直接配置,不需要(#NameVirtualHost *:80)
5、
async IO
(由内核决定什么时候写入磁盘: async)6、 每个模块及每个目录各自独立的日志级别
7、 每请求配置;
8、 增强版的表达式分析器;正则表达式解析速度更快
9、 配置文件中自定义变量
2.4引入模块
mod_proxy_fcgi//httpd以cgi协议与php结合mod_ratelimit//支持速率限制mod_remoteip//远端ip地址的控制
2.4修改配置机制
访问控制指令变化:Order,Denyfrom,Allowfrom--><RequireAll>Require[not]ip|hostRequireallgrantedRequirealldeny</RequireAll>
安装httpd-2.4
httpd2.4依赖:apr-1.4+, apr-util-1.4+, [apr-icon]
apr
apache portable[环境] runtime[运行]
不同OS平台提供的库接口不同,只有调用POSIX规范的库才能跨平台编译,apr运行环境能将库的不同的差异给抹除[即使开发调用的库不支持POSIX规范也能跨平台运行]
,就能实现不同OS平台运行httpd程序。
CentOS 6安装编译安装httpd-2.4
CentOS 6默认的apr, apr-util程序的版本:1.3
,需要编译安装httpd-2.4。
不建议在CentOS 6上使用httpd-2.4
,对大规模布署
不方便,除非自
己定制RPM包
。
开发环境
#yum-ygroupinstall"DevelopmentTools""ServerPlatformDevelopment"
获取源码ASF
apr-1.6.2.tar.bz2
apr-util-1.6.0.tar.gz
httpd-2.4.27.tar.bz2
编译apr-1.4+
#tarxfapr-1.6.2.tar.bz2#./configure--prefix=/usr/local/apr#make&&makeinstall(--prefix=安装路径,方便卸载,避免覆盖已有的程序)
编译apr-util-1.4+
#tarxfapr-util-1.6.0.tar.gz#./configure--prefix=/usr/local/apr-util--with-apr=/usr/local/apr/#make&&makeinstall(--with-<>=/path/to/somewhere:针对于哪个包来安装)xml/apr_xml.c:35:19:error:expat.h:Nosuchfileordirectoryxml/apr_xml.c:66:error:expectedspecifier-qualifier-listbefore‘XML_Parser’#yum-yinstallexpat-devel**注意如果出现错误,需要在安装程序包后,删除apr-util-1.6.0目录,重新编译
编译httpd-2.4
确认安装目录内的文件位置
#ls/usr/local/httpd24/binbuildcgi-binerrorhtdocsiconsincludelogsmanmanualmodules
导出PATH环境变量
位置:[全局]
/etc/profile.d/*.sh
, [个人]~/.bash_profile
#vim/etc/profile.d/httpd24.shexportPATH=/usr/local/httpd24/bin:$PATH#./etc/profile.d/httpd24.sh
导出库文件
位置:
/etc/ld.so.conf.d/*.conf
#vim/etc/ld.so.conf.d/httpd24.conf/usr/local/httpd24/lib#ldconfig[-v]
导出头文件
位置:
/usr/include/NAME
#ln-sv/usr/local/httpd24/include/usr/include/httpd24
导出man手册
位置:
/etc/man.conf
#vim/etc/man.configMANPATH/usr/manMANPATH/usr/share/manMANPATH/usr/local/manMANPATH/usr/local/share/manMANPATH/usr/X11R6/manMANPATH/usr/local/httpd24/man//添加的条目
添加用户apache
*如果已经存在apache用户,则不用添加...#groupadd-rapache#useradd-r-gapacheapache
安装依赖
#yum-yinstallpcre-devel
编译
#tarxfhttpd-2.4.27.tar.bz2#./configure--prefix=/usr/local/httpd24--sysconfdir=/etc/httpd24--enable-so--enable-ssl--enable-cgi--enable-rewrite--with-pcre--with-zlib--with-apr=/usr/local/apr--with-apr-util=/usr/local/apr-util--enable-modules=most--enable-mpms-shared=all--with-mpm=event#make&&makeinstall
--prefix:安装路径。方便卸载,避免覆盖已有的程序--with-<>:针对于哪个包来安装--sysconfdir=<>:避免覆盖,冲突--enable-soDSO机制--enable-sslSSL--enable-rewriteURL重写--with-pcrePerl扩展正则表达式--with-zlibzlib提供多种压缩库,支持压缩传输--enable-modulesDSO--enable-mpm-sharedMPMDSO--with-mpm默认的MPM
测试启动
查看80是否被占用,Socket会独占端口#ss-tnl启用服务#apachectlstart#hash/usr/local/httpd24/bin/apachectl//确保启动是2.4httpd测试#iptables-F#setenforce0
650) this.width=650;" src="https://s2.51cto.com/wyfs02/M02/A6/5C/wKioL1nNHLezWhFdAAAbHQ_qh2o818.png" ?/>
CentOS 7安装httpd-2.4
CentOS 7 默认安装httpd-2.4。
rpm安装
#yum-yinstallhttpd
CentOS 7 对应配置文件
配置路径:
/etc/httpd/conf/httpd.conf/etc/httpd/conf.d/*.conf
欢迎页:
/etc/httpd/conf.d/welcome.conf
模块路径:
/etc/httpd/conf.modules.d/*.conf/usr/lib64/httpd/modules/mod_mpm_event|prefork|worker
httpd-2.4基本应用
MPM切换及查看
查看编译进核心的模块:
#httpd-l
查看动态装载的模块及编译进核心的模块:
#httpd-Mmpm_event_module(shared)
切换模块
备份配置:#cp-v/etc/httpd24/httpd.conf{,.bak}进入配置,注释event.so,起动prefork或worker:#LoadModulempm_event_modulemodules/mod_mpm_event.soLoadModulempm_prefork_modulemodules/mod_mpm_prefork.so#LoadModulempm_worker_modulemodules/mod_mpm_worker.so退出配置后:#httpd-t#apachectlrestart
查看模块
#httpd-Mmpm_prefork_module(shared)
虚拟主机
准备DocumentRoot及默认主页面
#mkdir-p/vhosts/www#echo"www.mykernel.cn">/vhosts/www/index.html
添加配置
备份配置:#cp-v/etc/httpd24/extra/httpd-vhosts.conf{,.bak}仅在配置添加以下内容#vim/etc/httpd24/extra/httpd-vhosts.conf<VirtualHost*:80>ServerNamewww.mykernel.cnDocumentRoot/vhosts/wwwErrorLoglogs/www.errCustomLoglogs/www.accesscombined<Directory"/vhosts/www">OptionsNoneAllowOverrideNoneRequireallgranted</Directory><Location/server-status>SetHandlerserver-statusRequireallgranted</Location>#ExtendedStatusOn</VirtualHost>
测试并访问
#httpd-t#apachectlrestart在windows的解析库中添加以下内容(C:\Windows\System32\drivers\etc)172.16.100.1www.mykernel.cn
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/A6/5C/wKioL1nNJIiBT6JxAAAVy0IyXnk807.png" ?/>650) this.width=650;" src="https://s1.51cto.com/wyfs02/M00/07/AA/wKiom1nNJMmQZ4KkAABKiWx3GKQ782.png" ?/>
启用虚拟主机
#vim/etc/httpd24/httpd.conf注释中心主机#DocumentRoot"/usr/local/httpd24/htdocs"#VirtualhostsInclude/etc/httpd24/extra/httpd-vhosts.conf
配置虚拟主机
访问控制
本机127.0.0.1访问
安装文本协议浏览工具#yum-yinstallcurlelinkstelnet#curl172.16.100.1www.mykernel.cn#elinks--dumphttp://172.16.100.1www.mykernel.cn#telnet172.16.100.180Trying172.16.100.1...Connectedto172.16.100.1.Escapecharacteris‘^]‘.GET/HTTP/1.1Host:172.16.100.1HTTP/1.1200OKDate:Sun,10Sep201700:37:49GMTServer:Apache/2.4.27(Unix)Last-Modified:Sun,10Sep201700:20:44GMTETag:"10-558cac7f1211e"Accept-Ranges:bytesContent-Length:16Content-Type:text/htmlwww.mykernel.cn
在配置文件中修改为禁止本机访问
#vim/etc/httpd24/extra/httpd-vhosts.conf<RequireAll>RequireallgrantedRequirenotip172.16.100.1</RequireAll>
测试
#httpd-t#apachectlrestart#curl-I172.16.100.1HTTP/1.1403ForbiddenDate:Sun,10Sep201700:45:04GMTServer:Apache/2.4.27(Unix)Content-Type:text/html;charset=iso-8859-1#elinks--dump172.16.100.1ForbiddenYoudon‘thavepermissiontoaccess/onthisserver.#telnet172.16.100.180Trying172.16.100.1...Connectedto172.16.100.1.Escapecharacteris‘^]‘.GET/HTTP/1.1Host:172.16.100.1HTTP/1.1403ForbiddenDate:Sun,10Sep201700:46:02GMTServer:Apache/2.4.27(Unix)Content-Length:209Content-Type:text/html;charset=iso-8859-1<!DOCTYPEHTMLPUBLIC"-//IETF//DTDHTML2.0//EN"><html><head><title>403Forbidden</title></head><body><h1>Forbidden</h1><p>Youdon‘thavepermissiontoaccess/onthisserver.<br/></p></body></html>
mod_ssl
自建CA
#dir=/etc/pki/CA#touch$dir/index.txt#echo"01">$dir/serial#(umask077;opensslgenrsa-out$dir/private/cakey.pem2048)#opensslreq-new-x509-key$dir/private/cakey.pem-out$dir/cacert.pem-days7300(SC,ChengDu,ChengDu,MageEduLtd,Ops,&nbs