httpd服务归纳:httpd基本配置(周边常用工具,httpd 编译安装)

一、 服务器status页

    内生的status信息,可以通过web予以显示, 可以映射为url地址进行访问

    1. 配置路径有几种不同方式 

        如果URL可以映射到文件系统映射上,尽量用directory 

        1) 配置文件系统路径访问属性

      ## 简单来说,就是实实在在存在的路径,在/etc/httpd/conf/httpd.conf 中配置下面容器。并且支持正则表达式  
        <Directory [~] "">
        </Directory>

      ## 对于文件
        <File [~] "">
        </File>

        2) 配置URL访问文件路径,不一定是实实在在存在的路径,有可能是系统内生的文件,只是通过web的形式来显示。比如status页面

        <Location  [~] "">
        </Location>

        ## 专门用于做正则表达式
        <LocationMatch "">
        </LocationMatch>

   2. 处理器:当文件被调用时,apache的内部表现形式, 每一种文件类型,都有种隐式的处理形式。 

     ## 对于status页面而言,显式定义处理为,事例
    <Location /server-status>
		SetHandler server-status                                 # 使用server-status处理器处理/server-status  
		AuthType Basic                                           # 基本授权
		AuthName "Server Status"                                 # 授权名称
		AuthUserFile "/etc/httpd/conf/.htpasswd"                 # 授权认证文件所在位置
		Require valid-user
		Order deny,allow
		Allow from all
    </Location>
    ## 此设置相当于把server-status 页面映射到 , 并且只有特定用户才可以访问 
    
    ## 用命令创建用户认证文件 
    htpasswd -c -m /etc/httpd/conf/.htpasswd tom
    htpasswd -m /etc/httpd/conf/.htpasswd jerry 
    ## 用宿主机尝试进行访问 
     

server_status_asking.png

server_status.jpg

二、 配置httpd服务器支持压缩

    使用mod_deflate模块支持页面压缩

## 检查deflate模块是否装载 
httpd -M | grep deflate 
Syntax OK
 deflate_module (shared)

## 在配置文件中配置deflate模块属性: 创建/etc/httpd/conf.d/deflate.conf 文件为一下内容 
SetOutputFilter DEFLATE

# mod_deflate configuration


# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css

# Level of compression (Highest 9 - Lowest 1)
DeflateCompressionLevel 9

# Netscape 4.x has some problems.
BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html  

## 然后重启服务后,进行测试

    gzip.jpg

可以看到Content-Encoding显示为gzip, 说明文件输出确实以gzip形式进行 

三、 httpd相关的工具 

    1. curl命令  

    curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等协议。curl支持HTTPS认证,并且支持HTTP的     POST、PUT等方法, FTP上传, kerberos认证,HTTP上传,代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,上载文件断点续传,,http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器,,通过http代理服务器上传文件到FTP服务器等等,功能十分强大。

    curl的常用选项:

         -A/–user-agent <string> 设置用户代理发送给服务器

         -basic 使用HTTP基本验证

         –tcp-nodelay 使用TCP_NODELAY选项

         -e/–referer <URL> 来源网址

         –cacert <file> CA证书 (SSL)

         –compressed 要求返回是压缩的形势

         -H/–header <line>自定义头信息传递给服务器

         -I/–head 只显示响应报文首部信息

         –limit-rate <rate> 设置传输速度

         -u/–user <user[:password]>设置服务器的用户和密码

         -0/–http1.0 使用HTTP 1.0

    2. 资源限定以及相关命令 

         软限定: 可以超管但是,只能超过一定量的时间

         硬限定:决不能超过的限制  

         ulimit

            -n [N]: 显示或限定能打开的最大的文件句柄数;

            -u [N]: 所能够运行的最多进程数;

        配置文件:/etc/security/limits.conf,扩展配置:/etc/security/limits.d/*.conf

                    limit.jpg

    3. ab 命令, 服务器标准压力测试软件 

            -c: 模拟的并发数

            -n: 总请求数

        其他压力测试工具: http_load, webbench, seige, tcp_copy(使用真实环境下的请求重放)

    4. httpd RPM安装后产生的自带工具 

            httpd: Apache 服务器。

            apachectl:Apache HTTP 服务器控制工具。当自行编译没有服务脚本时,可以使用这个作为服务脚本

            ab:Apache HTTP 服务器性能基准工具。

            ulimit : 资源限定查看和修改命令

            apxs:Apache 扩展工具。

            configure:配置源代码。

            dbmmanage:为基本认证创建和更新 DBM 格式的用户认证文件。

            htcacheclean:清理磁盘缓存。

            htdigest:为摘要认证创建和更新用户认证文件。

            htdbm:操作 DBM 密码数据库。

            htpasswd:为基本认证创建和更新用户认证文件。

            httxt2dbm:为 RewriteMap 创建 dbm 文件。

            logresolve:将 Apache 日志文件中的 IP 地址解析到主机名称。

            rotatelogs:不关闭 Apache 而切换日志文件。

            suexec:执行外部程序前切换用户。当用户请求的文件不能被appache用户请求时,可以临时以特定用户身份来获取。

四、 httpd 2.4编译安装

    1. 解决依赖关系, httpd-2.4 依赖高版本的apr(apache portable runtime)和apr-util软件包。 并且依赖pcre-devel perl兼容的正则表达式库 

        1)    安装开发工具和pcre-devel包 

    # yum -y install pcre-devel 
    # yum -y groupinstall "Development tools"

        2)    编译安装apr-1.5.2

    # tar -xf apr-1.5.2.tar.gz
    # cd apr-1.5.2 
    # ./configure --prefix=/usr/local/apr 
    # make && make install

        3)     编译安装apr-util-1.5.4 

    # tar -xf apr-util-1.5.4.tar.gz 
    # cd apr-util-1.5.4 
    # ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr 
    # make && make install

    2. 编译配置httpd-2.4.12 

       1) httpd-2.4新特性: 

                 MPM支持在运行时装载;

                –enable-mpms-shared=all –with-mpm=event

                支持event

                异步读写

                在每模块及每目录上指定日志级别

                每请求配置;<If>, <Elseif>

                增强版的表达式分析器

                毫秒级的keepalive timeout

                基于FQDN的虚拟主机不再需要NameVirtualHost指令

                支持使用自定义变量

                新增了一些模块:mod_proxy_fcgi, mod_ratelimit, mod_request, mod_remoteip

                对于基于IP的访问控制做了修改,不再支持使用order, allow, deny这些机制;而是统一使用require进行

        2) httpd-2.4编译安装 

    ## 编译安装
    # tar -xf httpd-2.4.12.tar.gz
    # cd httpd-2.4.12
    # ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-ssl --enable-cgi --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event
    # make && make install
    
    ## configure 个选项意义 
    --prefix=/usr/local/apache : 设置安装路径 
    --sysconfdir=/etc/httpd24 : 设置配置文件安装路径
    --enable-ssl : 支持使用ssl库 
    --enable-cgi : 支持使用cgi脚本 
    --enable-rewrite : 支持重写
    --with-zlib : 支持使用压缩库 
    --with-pcre : 支持使用perl正则表达式库
    --with-apr=/usr/local/apr : apr安装位置 
    --with-apr-util=/usr/local/apr-util : apr-util安装位置
    --enable-modules=most : 编译支持大部分模块 
    --enable-mpms-shared=all : 编译支持所有mpms模块 
    --with-mpm=event : 默认使用event模块
    
    ## 导出头文件
    # ln -sv /usr/local/apache/include  /usr/include/httpd
    
    ## 导出库文件, httpd没有额外的库文件生成,如果有的话,创建/etc/ld.so.conf.d/httpd24.conf, 并且把库文件目录添加在其中,并执行下面命令 
    # ldconfig 
    # idconfig -p  用于查看已经装载的库文件 
    
    ## 导出man手册。 在/etc/man.config 中添加
    MANPATH /usr/local/apache/man
    
    ## 导出二进制程序,创建/etc/profile.d/httpd.sh 写入下面一行 
    export PATH=/usr/local/apache/bin:$PATH

        3) 预备服务脚本,使用老版本httpd的服务脚本进行修改 

    # cp /etc/init.d/httpd /etc/init.d/httpd24 
    # vim /etc/init.d/httpd24 修改如下几行 
    apachectl=/usr/local/apache/bin/apachectl        ## 设置新的apachectl 路径 
    httpd=/usr/local/apache/bin/httpd                ## 新的httpd路径 
    prog=httpd24                                     ## 程序名称改为http24
    pidfile=${PIDFILE-/var/run/httpd24.pid}          ## 重新修改pid文件路径  
    lockfile=${LOCKFILE-/var/lock/subsys/httpd24}    ## 设置新的锁文件名,防止冲突 
    
    # vim /etc/httpd24/httpd.conf 添加下面一行指令,来修改pid文件地址 
    PidFile "/var/run/httpd24.pid"
    
    添加httpd24服务, 设置开机自动启动,关闭老版本httpd防止版本冲突 
    # chkconfig --add httpd24 
    # chkconfig httpd off 
    # chkconfig httpd24 on  
    
    
    # service httpd24 start 
    # ss -tnlp | grep "httpd"
    tcp    LISTEN     0      128                   :::80                   :::*      users:(("httpd",44350,4),("httpd",44352,4),("httpd",44353,4),("httpd",44354,4))
    
    # ps aux  | grep "httpd"
    root     44350  0.0  0.1  76980  2320 ?        Ss   18:07   0:00 /usr/local/apache/bin/httpd
    daemon   44352  0.0  0.2 421240  4132 ?        Sl   18:07   0:01 /usr/local/apache/bin/httpd
    daemon   44353  0.0  0.2 486776  4752 ?        Sl   18:07   0:01 /usr/local/apache/bin/httpd
    daemon   44354  0.0  0.2 421240  4160 ?        Sl   18:07   0:01 /usr/local/apache/bin/httpd
    
    可以看到,一个主进程,另外event默认配置为三个工作进程,默认用户为daemon

        4)  新特性,基于IP访问控制 

            允许所有主机访问:Require all granted

            拒绝所有主机访问:Require all deny

     控制某主机的访问:
        ## 基于ip 
	Require ip IPADDR
	Require not ip IPADDR
	    IPADDR:
		单个IP地址, 例如172.16.100.7
		Network/Netmask, 例如172.16.0.0/255.255.0.0
		Network/Length, 例如172.16.0.0/16
		Net: 172.16
	    例如: Require ip 172.16.0.0/16
	    
        ## 基于主机名
	Require host HOSTNAME
	Require not host HOSTNAME
	    HOSTNAME:
		FQDN:具体的主机
		DOMAIN: 域名, 例如 www.playground.com

原创文章,作者:以马内利,如若转载,请注明出处:http://www.178linux.com/4705

(0)
以马内利以马内利
上一篇 2015-05-27
下一篇 2015-05-27

相关推荐

  • 推荐-MySQL存储日志并使用Loganalyzer作为前端展示

    MySQL存储日志并使用Loganalyzer作为前端展示 MySQL存储日志并使用Loganalyzer作为前端展示 为什么要使用日志 本文目标 实验拓扑图 实验环境 实验步骤 syslog主机上rsyslog设置 Server1主机上rsyslog设置 Web服务器配置 总结 为什么要使用日志 在生产环境中我们可能需要一个较为完整的日志系统来查看运行中主…

    Linux干货 2016-03-30
  • linux发展史

    Linux 发展史 说明 此前对linux认识模糊一知半解,近期通过学习将自己对于linux的发展总结一下方便大家日后的学习。那Linux是目前一款非常火热的开源操作系统,可是linux是什么时候出现的,又是因为什么样的原因被开发出来的呢。以下将对linux的发展历程进行详细的讲解。    目录 一、Linux发展背景 二、UINIX的诞…

    Linux干货 2016-10-14
  • tomcat配置详解

    主程序: ·tomcat ·tomcat-admin-webapps ·tomcat-webapps ·tomcat-docs-webapp ·java-1.8.0-openjdk 配置文件: 配置文件目录:/etc/tomcat 主配置文件:server.xml webapps存放位置:/var/lib/tomcat/webapps/ webapps的根目…

    2017-08-08
  • linux开篇六式

    第一式. Linux上的文件管理类命令,其常用的使用方法及其相关示例。       mkdir, 创建目录       rmdir,删除目录       tree, 显示目录层级       cat和tac均用于查看文件,cat是从文件首向…

    Linux干货 2016-10-13
  • 编译安装——吐血经验,内附脚本

    程序包编译安装: 源码包:name-VERSION-release.src.rpm         rpm由源码包安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装        &nbsp…

    Linux干货 2016-08-24

评论列表(4条)

  • stanley
    stanley 2015-05-27 10:06

    以马内利的文章每次都比其它同学更有深度。赞

    • 以马内利
      以马内利 2015-05-27 11:17

      @stanleyI/O模型纠结了老半天,不知道该怎么表达,看了好几遍,还是觉得理解的很浅

  • 浅蓝
    浅蓝 2015-05-27 21:55

    求前辈出一个完整的httpd+openssl的教程,从编译安装到配置一步一步下来,面向小白的,多谢!
    (原因是网上看了很多教程,但是都是httpd和openssl分开讲的,里面很多细节都不太明白,新手希望能有一个一步一步跟着做的教程是最好的,先实现结果,再追求理论细节。再次感谢!)

    • 以马内利
      以马内利 2015-05-31 16:55

      @浅蓝httpd + openssl 就是实现https协议啦,我这个系列的总结中,我写过一个实现https的,
      http://www.178linux.com/archives/4671
      我也是个新手,就是一边学一边总结。 仅供参考