Loading... <p><strong><span style="font-size: 18px">一、 服务器status页</span></strong></p> <p> 内生的status信息,可以通过web予以显示, 可以映射为url地址进行访问</p> <p> <strong> 1. 配置路径有几种不同方式 </strong></p> <p> 如果URL可以映射到文件系统映射上,尽量用directory </p> <p> <strong> 1) 配置文件系统路径访问属性</strong></p> <pre class="brush:bash;toolbar:false"> ## 简单来说,就是实实在在存在的路径,在/etc/httpd/conf/httpd.conf 中配置下面容器。并且支持正则表达式 <Directory [~] ""> </Directory> ## 对于文件 <File [~] ""> </File></pre> <p> <strong>2) 配置URL访问文件路径,不一定是实实在在存在的路径,有可能是系统内生的文件,只是通过web的形式来显示。比如status页面</strong></p> <pre class="brush:bash;toolbar:false"> <Location [~] ""> </Location> ## 专门用于做正则表达式 <LocationMatch ""> </LocationMatch></pre> <p><strong> 2. 处理器:当文件被调用时,apache的内部表现形式, 每一种文件类型,都有种隐式的处理形式。</strong> </p> <pre class="brush:bash;toolbar:false"> ## 对于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 ## 用宿主机尝试进行访问 </pre> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703165921-30.png" title="1432261417225121.png" alt="server_status_asking.png" width="963" height="294" style="width: 963px;height: 294px" /></p> <p style="text-align:center"><img src="//cto.wang/usr/uploads/2016/07/20160703165922-7.jpg" title="1432261491213502.jpg" alt="server_status.jpg" width="957" height="269" style="width: 957px;height: 269px" /></p> <p></p> <p><strong><span style="font-size: 18px">二、 配置httpd服务器支持压缩</span></strong></p> <p> 使用mod_deflate模块支持页面压缩</p> <pre class="brush:bash;toolbar:false">## 检查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 ## 然后重启服务后,进行测试</pre> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703165922-62.jpg" title="1432263576981956.jpg" alt="gzip.jpg" /></p> <p>可以看到Content-Encoding显示为gzip, 说明文件输出确实以gzip形式进行 </p> <p></p> <p><strong><span style="font-size: 18px">三、 httpd相关的工具 </span></strong></p> <p><strong> 1. curl命令 </strong></p> <p> 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服务器等等,功能十分强大。</p> <p><strong> curl的常用选项:</strong></p> <p> -A/–user-agent <string> 设置用户代理发送给服务器</p> <p><span class="Apple-tab-span"> </span> -basic 使用HTTP基本验证</p> <p><span class="Apple-tab-span"> </span> –tcp-nodelay 使用TCP_NODELAY选项</p> <p><span class="Apple-tab-span"> </span> -e/–referer <URL> 来源网址</p> <p><span class="Apple-tab-span"> </span> –cacert <file> CA证书 (SSL)</p> <p><span class="Apple-tab-span"> </span> –compressed 要求返回是压缩的形势</p> <p><span class="Apple-tab-span"> </span> -H/–header <line>自定义头信息传递给服务器</p> <p><span class="Apple-tab-span"> </span> -I/–head 只显示响应报文首部信息</p> <p><span class="Apple-tab-span"> </span> –limit-rate <rate> 设置传输速度</p> <p><span class="Apple-tab-span"> </span> -u/–user <user[:password]>设置服务器的用户和密码</p> <p><span class="Apple-tab-span"> </span> -0/–http1.0 使用HTTP 1.0</p> <p> <strong>2. 资源限定以及相关命令 </strong></p> <p> 软限定: 可以超管但是,只能超过一定量的时间</p> <p> 硬限定:决不能超过的限制 </p> <p><span class="Apple-tab-span"> </span><strong><span class="Apple-tab-span"> </span>ulimit</strong></p> <p><span class="Apple-tab-span"> </span> -n [N]: 显示或限定能打开的最大的文件句柄数;</p> <p><span class="Apple-tab-span"> </span> -u [N]: 所能够运行的最多进程数;</p> <p> 配置文件:<strong>/etc/security/limits.conf,扩展配置:/etc/security/limits.d/*.conf</strong></p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703165922-100.jpg" title="1432623686901807.jpg" alt="limit.jpg" width="489" height="624" style="width: 489px;height: 624px" /></p> <p> <strong>3. ab 命令, 服务器标准压力测试软件 </strong></p> <p><span class="Apple-tab-span"> </span> -c: 模拟的并发数</p> <p><span class="Apple-tab-span"> </span> -n: 总请求数</p> <p> 其他压力测试工具: http_load, webbench, seige, tcp_copy(使用真实环境下的请求重放)</p> <p> <strong> 4. httpd RPM安装后产生的自带工具 </strong></p> <p><span class="Apple-tab-span"> </span> <strong> httpd:</strong> Apache 服务器。</p> <p><span class="Apple-tab-span"></span> <strong>apachectl:</strong>Apache HTTP 服务器控制工具。当自行编译没有服务脚本时,可以使用这个作为服务脚本</p> <p><span class="Apple-tab-span"> </span> <strong> ab:</strong>Apache HTTP 服务器性能基准工具。</p> <p> <strong>ulimit :</strong> 资源限定查看和修改命令</p> <p> <strong>apxs:</strong>Apache 扩展工具。</p> <p><span class="Apple-tab-span"> </span> <strong>configure</strong>:配置源代码。</p> <p><span class="Apple-tab-span"> </span> <strong>dbmmanage:</strong>为基本认证创建和更新 DBM 格式的用户认证文件。</p> <p><span class="Apple-tab-span"> </span> <strong>htcacheclean:</strong>清理磁盘缓存。</p> <p><span class="Apple-tab-span"> </span> <strong> htdigest:</strong>为摘要认证创建和更新用户认证文件。</p> <p><span class="Apple-tab-span"> </span> <strong>htdbm:</strong>操作 DBM 密码数据库。</p> <p><span class="Apple-tab-span"> </span> <strong> htpasswd</strong>:为基本认证创建和更新用户认证文件。</p> <p><span class="Apple-tab-span"> </span> <strong> httxt2dbm</strong>:为 RewriteMap 创建 dbm 文件。</p> <p><span class="Apple-tab-span"> </span> <strong>logresolve</strong>:将 Apache 日志文件中的 IP 地址解析到主机名称。</p> <p><span class="Apple-tab-span"> </span> <strong>rotatelogs:</strong>不关闭 Apache 而切换日志文件。</p> <p><span class="Apple-tab-span"> </span> <strong>suexec:</strong>执行外部程序前切换用户。当用户请求的文件不能被appache用户请求时,可以临时以特定用户身份来获取。</p> <p></p> <p><strong><span style="font-size: 18px">四、 httpd 2.4编译安装</span></strong></p> <p> <strong> 1. 解决依赖关系, httpd-2.4 依赖高版本的apr(apache portable runtime)和apr-util软件包。 并且依赖pcre-devel perl兼容的正则表达式库</strong> </p> <p> <strong> 1) 安装开发工具和pcre-devel包</strong> </p> <pre class="brush:bash;toolbar:false"> # yum -y install pcre-devel # yum -y groupinstall "Development tools"</pre> <p> <strong> 2) 编译安装apr-1.5.2</strong></p> <pre class="brush:bash;toolbar:false"> # tar -xf apr-1.5.2.tar.gz # cd apr-1.5.2 # ./configure --prefix=/usr/local/apr # make && make install</pre> <p> <strong> 3) 编译安装apr-util-1.5.4 </strong></p> <pre class="brush:bash;toolbar:false"> # 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</pre> <p><strong> 2. 编译配置httpd-2.4.12 </strong></p> <p> 1) httpd-2.4新特性: </p> <p><span class="Apple-tab-span"> </span> MPM支持在运行时装载;</p> <p><span class="Apple-tab-span"> </span> –enable-mpms-shared=all –with-mpm=event</p> <p><span class="Apple-tab-span"> </span> 支持event</p> <p><span class="Apple-tab-span"> </span> 异步读写</p> <p><span class="Apple-tab-span"> </span> 在每模块及每目录上指定日志级别</p> <p><span class="Apple-tab-span"> </span> 每请求配置;<If>, <Elseif></p> <p><span class="Apple-tab-span"> </span> 增强版的表达式分析器</p> <p><span class="Apple-tab-span"> </span> 毫秒级的keepalive timeout</p> <p><span class="Apple-tab-span"> </span> 基于FQDN的虚拟主机不再需要NameVirtualHost指令</p> <p><span class="Apple-tab-span"> </span> 支持使用自定义变量</p> <p> 新增了一些模块:mod_proxy_fcgi, mod_ratelimit, mod_request, mod_remoteip</p> <p> 对于基于IP的访问控制做了修改,不再支持使用order, allow, deny这些机制;而是统一使用require进行</p> <p> <strong> 2) httpd-2.4编译安装 </strong></p> <pre class="brush:bash;toolbar:false"> ## 编译安装 # 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</pre> <p> <strong> 3) 预备服务脚本,使用老版本httpd的服务脚本进行修改 </strong></p> <pre class="brush:bash;toolbar:false"> # 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</pre> <p> <strong>4) 新特性,基于IP访问控制 </strong></p> <p><span class="Apple-tab-span"> </span>允许所有主机访问:<strong>Require all granted</strong></p> <p><span class="Apple-tab-span"> </span>拒绝所有主机访问:<strong>Require all deny</strong></p> <pre class="brush:bash;toolbar:false"> 控制某主机的访问: ## 基于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</pre> <p><span class="Apple-tab-span"></span></p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信