马哥教育第二十一天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

时间: 2024-10-04 06:07:12

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

第二十天 TCP 及socket通信原理、http协议及web服务、httpd核心配置详解

一.TCP及socket通信原理详解 二.http协议及web服务原理(一) 三.http协议及web服务原理(二) 四.httpd核心配置详解 1.tcp.udp是一种传输协议,实现进程地址标记,套接字是一个虚拟设备,用来表明主机上的某个进程      众所周知:0-1023:管理员才有权限使用,永久地分配给某应用使用(由IANA分配)      注册端口:1024-41951:只有一部分被注册,分配原则上非特别严格.      动态端口或私有端口:41952-65535:由内核分配临时端口,

【转】Apache 的 httpd.conf 配置详解

Apache 的 httpd.conf 配置详解 原文链接 http://www.php100.com/html/webkaifa/apache/2009/0418/1192.html ServerRoot /usr/local ServerRoot用于指定守护进程httpd的运行目录,httpd在启动之后将自动将进程的当前目录改变为这个目录,因此如果设置文件中指定的文件或目录是相对路径,那么真实路径就位于这个ServerR oot定义的路径之下. ScoreBoardFile /var/run

Apache2 httpd.conf 配置详解

Apache2 httpd.conf 配置详解 <第一部分> 常用配置指令说明 1. ServerRoot:服务器的基础目录,一般来说它将包含conf/和logs/子目录,其它配置文件的相对路径即基于此目录.默认为安装目录,不需更改. 语法:ServerRoot directory-path 如: ServerRoot "/usr/local/apache-2.2.6" 注意,此指令中的路径最后不要加 / . 2. Listen:指定服务器监听的IP和端口.默认情况下Apa

httpd.conf配置详解

## 基于 NCSA 服务的配置文件.##这是Apache服务器主要配置文件.#它包含服务器的影响服务器运行的配置指令.#参见<http://httpd.ache.org/doc-2.0/>以取得关于这些指令的详细信息##不要只是简单的阅读这些指令信息而不去理解它.#这里只是做了简单的说明,如果你没有参考在线文件,你就会被警告.##这些配置指令被分为下面三个部分:#1. 控制整个Apache服务器行为的部分(即全局环境变量)#2. 定义主要或者默认服务参数的指令,也为所有虚拟主机提供默认的设置

Apache2.4之httpd.conf配置详解

1.ServerRoot:服务器的基础目录,一般来说它将包含conf/和logs/子目录,其它配置文件的相对路径即基于此目录.默认为安装目录,不需更改. 语法:ServerRoot    /path/to/directory 例如:ServerRoot    "/usr/local/apache" 2..PidFile:定义其pid文件所在的位置 语法:PidFile    /path/to/apache/pid 例如:Pidfile    "/var/run/httpd/h

Apache httpd.conf配置详解

常用配置指令说明 1. ServerRoot:服务器的基础目录,一般来说它将包含conf/和logs/子目录,其它配置文件的相对路径即基于此目录.默认为安装目录,不需更改. 语法:ServerRoot directory-path 如: ServerRoot "/usr/local/apache-2.2.6" 注意,此指令中的路径最后不要加 / . 2. Listen:指定服务器监听的IP和端口.默认情况下Apache会在所有IP地址上监听.Listen是Apache2.0以后版本必须

Apache2 httpd.conf 配置详解(一)

常用配置指令说明 1. ServerRoot:服务器的基础目录,一般来说它将包含conf/和logs/子目录,其它配置文件的相对路径即基于此目录.默认为安装目录,不需更改. 语法:ServerRoot directory-path 如: ServerRoot "/usr/local/apache-2.2.6" 注意,此指令中的路径最后不要加 / . 2. Listen:指定服务器监听的IP和端口.默认情况下Apache会在所有IP地址上监听.Listen是Apache2.0以后版本必须

Apache2 httpd.conf 配置详解 (二)

DocumentRoot "/usr/local/apache-2.2.6/htdocs" #设置WEB文档根目录的默认属性 <Directory />     Options FollowSymLinks     AllowOverride None     Order deny,allow     Deny from all </Directory> #设置DocumentRoot指定目录的属性 <Directory "/usr/local/

Ubuntu 12.04下PostgreSQL-9.1安装与配置详解(在线安装)

说明: 我是用root用户在终端登陆的,如果是非root用户,那在命令前需要加上"sudo",你懂的... 第一步:在Ubuntu下安装Postgresql 1.使用 apt-get install 安装         [email protected]:~# apt-get install -y postgresql-9.1 postgresql-client-9.1 postgresql-contrib-9.1 postgresql-server-dev-9.1 [代码说明] 安