分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

**httpd-2.4基础特性及SSL,访问控制,MPM[DSO],status**

发布时间:2023-09-06 01:14责任编辑:苏小强关键词:http

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]

  • aprapache 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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved