马哥教育第二十一天httpd高级配置详解、编译安装

1、httpd.conf配置文件
                 ★设置默认字符集
                         AddDefaultCharset

                 ★CGI脚本路径
                         ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"指定cgi路径别名
                               bash写CGI脚本:
                                  所有文本都使用命令输出:echo, printf, cat 具体格式如下:                                              
                                                     Content-Type: text/html 头一行后一定要空一行否则报错
                                                              
                                                                       <pre>
                                                                        </pre> 
                                                     FastCGI: 协议
 
                 ★基于用户访问控制
                           用户认证功能:基本认证(basic)、摘要认证(digest)
                           虚拟用户:仅用于访问某服务或获取某资源的凭证,用于保存用户信息有以下几种方式:
                                          文本文件:.htpasswd
                                          SQL数据库
                                          dbm: 数据库引擎,提供API
                                           ldap:

                  ★虚拟主机
                           虚拟主机不同的访问机制:基于端口、基于IP、基于主机名(它是通过http首部来判别请求的不同主机)                       
                           使用虚拟的前提:取消主服务器
                                  注释主服务器的站点根路径指定:DocumentRoot
                                  如果基于端口做虚拟主机需用listen监听多个端口
                                  定义虚拟主机
                                         NameVirtualHost IP:PORT。开启名称虚拟主机,2.2版本上有该选项2.4没有*表示所有ip
                                          <VirtualHost IP:PORT>定义每个虚拟主机的属性,在主服务器上设置的都可以在这里单独设置
                                                   ServerName
                                                   DocumentRoot
                                                   ServerAlias
                                                   ErrorLog
                                                   CustomLog
                                           </VirtualHost>
                         
                                          配置示例:
                                           <VirtualHost 192.168.18.7:80>
                                                   ServerName www.mageedu.com
                                                   DocumentRoot "/web/hosta"
                                           </VirtualHost>

                                           <VirtualHost 192.168.18.8:8080>
                                                    ServerName www.mageedu.com
                                                    DocumentRoot "/web/hostc"
                                            </VirtualHost>       
                                       配置文件语法检查:httpd -t  
                                    
2、               ★https协议
                           ssl(安全的套接字层), tls(传输层安全)
                                         ssl会话基于IP地址创建,所以,每一个IP仅创建一个SSL会话;

                           httpd: ssl模块:mod_ssl
                                        http协议:文本编码
                                        https协议: 基于SSL二进制编码, 443/tcp
                          
                           ssl握手要完成的工作:
                                       交换协议版本号
                                       选择双方都支持的加密方式
                                       客户端对服务器端实现身份验正
                                       密钥交换
                            
                            配置httpd工作于https
                                       安装mod_ssl模块
                                                     安装后rpm -ql mod_ssl查看生成的配置文件
                                       为服务端生成私钥,并为其提供证书:
                                                      mkdir /etc/httpd/ssl && cd /etc/httpd/ssl
                                                      (umask 077; openssl genrsa -out httpd.key 1024)
                                                      openssl req -new -key httpd.key -out httpd.csr
                                                      签署后的证书为:/etc/httpd/ssl/httpd.crt
                                       配置使用https的虚拟主机
                                                      SSLCertificateFile:设定证书路径
                                                      SSLCertificateKeyFile :设定私钥路径
                                                       <VirtualHost IP:443>
                                                                     DocumentRoot
                                                                     ServerName
                                                        </VirtualHost>  
                                       重新装载配置
                                       测试:
                                                       openssl s_client -connect IP:PORT -CAfile /path/to/ca_certificate

             ★status页面
                         httpd内嵌有handler,其中有一个handler用于输出当前httpd服务相关状态信息
                         handler: server-status
                         启用handler要使用SetHandler指令      
                         handler: 当文件被调用时,apache内部表示形式;一般每种文件类型都有其隐式处理器
                修改配置文件中该选项:启动handler页面
                   <Location /server-status>
                              <Location /server-status>
                               Order allow,deny
                               Allow from 192.168.146.0/24
                    </Location>   

             ★访问属性配置总结
                         配置文件系统访问路径:
                                    <Directory [~] "">
                                    </Directory>
                                    <File [~] "">
                                    </File>
                          配置URL访问路径:
                                    <Location [~] "">
                                    </Location>

               ★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

                ★使用mod_deflate模块压缩页面优化传输速度
                               SetOutputFilter DEFLATE
                               mod_deflate configuration
                                        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

3、httpd程序包自带的工具介绍
               httpd:apache服务程序
                           -t:测试配置文件语法
                           -l: 显示静态模块
                           -D DUMP_MODULES:列出DSO模块
                           -M:相当于-t -D测试并显示DSO模块
                           -D:显示所有虚拟主机信息

             htpasswd:
                         为基于文件的basic认证创建和更新用户认证文件

             apachectl:
                         脚本,httpd服务控制工具可以启动和关闭服务;

             ab: 
                          apache benchmark:httpd的基准性能测试工具;

             apxs:
                           httpd得以扩展使用第三方模块的工具;

             htcacheclean:
                           磁盘缓存清理工具;

             htdigest:
                            为digest认证创建和更新用户认证文件

             httxt2dbm:
                              为rewrite map创建dbm格式的文件

             rotatelogs:
                             不关闭httpd程序而切换其日志文件的工具,根据用户设定切割日志

             suexec:
                              当httpd进程需要以另外的用户的身份去访问某些资源时,可以以suexec作临时切换;

      ★ab工具的基本使用(可以模拟真实生产环节压力测试的工具tcpcopy)
                -c:模拟并发数
                -n:模拟总的请求数,指并发数请求总的个数,例如:10并发请求20次这里就需要指明200,-c 10 -n 200

      ★资源限定:内核限定每个普通用户只能打开1024个文件,ulimit -n可以查看当前用户可以打开文件最大数          
                软限定:可以临时超出设定时长限制设定
                硬限定:绝对不可超出的限定

                管理员可使用ulimit命令临时性地修改各种资源的软限制;
                              ulimit -n #:能同时打开的文件数    
                                         -u #:能同时启动的进程数
                 配置文件:
                               /etc/security/limits.conf
                               /etc/security/limits.d/*.conf

        ★编译安装httpd-2.4
                 httpd程序依赖于apr和apr-util
                              apr: apache portable runtime(httpd2.4依赖于1.4以上的apr和apr-util,安装前请查看机器上的apr)
                              更新apr包:
                                               解压:tar xf apr-1.5.2.tar.gz
                                                          cd apr-1.5.2:进入apr目录
                                                           ./configure --help:查看安装路径
                                                           ./configure --prefix=/usr/local/apr:指定目录安装      
                                                            make && make install:编译安装

                                               解压:tar xf apr-util-1.5.4.tar.gz
                                                          ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/:apr-util是apr的工具所以需要指明为哪个apr进行工作,--with-apr指明为哪个apr工作        
                                                          make && make install:编译安装                                               

                httpd-2.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)支持用户使用自定义变量
                               新增了一些模块:
                                                mod_proxy_fcgi:支持用fcgi协议方式连接后端php服务, 
                                                mode_ratelimit:限定用户访问时传输速率,
                                                mod_request:对用户请求做更强大过滤,
                                               mod_remoteip:可以对客户端请求的IP地址做控制
                               修改了一些配置机制:不再支持使用order, allow, deny定义基于ip的访问控制;改为require

              ./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-mpms-shared=all --with-mpm=event --enable-modules=most
                         --sysconfdir:指定配置文件路径
                         --enable-so:支持DSO动态装卸模块
                         --enable-ssl:编译启用ssl模块,但是这项依赖于openssl,rpm -qa |grep open
                         --enable-cgi:启用cgi
                         --enable-rewrite:url重写,但是它依赖于pcre(perl正则表达式分析器
                         --with-zlib:数据报文发送时的压缩库
                         --with-pcre:如果指明要使用prcr就需要把相关的pcre-devel先安装好
                         --with-apr=/usr/local/apr:指定apr路径。
                         --with-apr-util=/usr/local/apr-util/
                         --enable-mpms-shared=all --with-mpm=event
                         --enable-modules={all,most}:编译所有模块或者常用模块,编译好可以不用。

                编译安装后如需修改主程序参数,在配置文件目录下extra/httpd-mpm.conf,如需切换主程序注释当前主程序,添加相应主程序
                编译安装后虚拟主机配置文件在配置文件目录下extra/httpd-vhosts.conf,先注释中心主机后开启Virtual hosts,每个虚拟主机访问目录都需要指明可访问权限
                
                基于IP做访问控制:
                         允许所有主机访问:Require all granted
                         拒绝所有主机访问:Require all deny
                 控制某特定主机的访问:
                         Require ip IPADDR
                         Require not ip IPADDR

你可能感兴趣的:(httpd,详解,高级配置)