一、httpd:俗称Apache,以高度模块化设计的,即core+modules。

1、Apache重要特性:

(1)、DSO:Dynamic Shared Object,因Apache是高度模块化设计的,所以模块可以动态编译,即使编译后也可以设置是否启用。

(2)、MPM:Multipath Processing Module多道处理模块,并非一个模块,而是一种特定的统称,是针对“Web请求过程的接收请求来设计的,这块是Apache的核心,当然了面试必问”。

MPM有三种实现方式,如下:

(2.1)、prefork(主进程-->工作子进程):

预先创建进程,即进程池,一个进程一个请求

需要定义最大空闲数,最小空闲数。

注意:最大进程数不能超过1024。

(2.2)、worker(主进程-->工作子进程---线程)

一个进程多个线程,一个线程一个请求

同一个进程的线程可以共享资源,可见可以提高性能;

但一个进程生成有限的线程,并且线程间需要切换浪费时间。

总之,worker和prefork两个在性能上相比不分伯仲。

(2.3)、event:

enent-driven事件驱动模型,一个线程响应多个请求

事件驱动主要目的在于实现单线程响应多个请求。

可见大大提高了性能。

    wKiom1hrE2XA_jwBAAA2lP_I3pI132.jpg

2、httpd版本:apache的官方站点:httpd.apache.org。

httpd-1.3(很少用)

httpd-2.0(很少用)

httpd-2.2(常用)

httpd-2.4(常用):从2.4开始才支持event特性。

wKioL1hQ51KD95fwAAD954DTCxk227.jpg-wh_50


3、httpd的功能特性

(1)、路径别名:alias

(2)、用户认证:authentication

(3)、虚拟主机:virtual host,在一个物理主机上可以配置多个站点服务。

(4)、反向代理(代理服务器,用户访问先访问代理):如负载均衡

(5)、用户站点:

(6)、CGI:Common Gateway Interface


4、初次启动httpd会报主机名和ip地址不一致的错误,即未配置host

(1)、查看主机名的命令: #hostname

(2)、请在/etc/hosts中配置如192.168.1.120 www.test.com

(3)、主机名配置文件在/etc/sysconfig/network中

   NETWORKING=yes

   HOSTNAME=主机名


5、安装httpd步骤总结 :#yum -y install httpd

(1)、服务脚本:/etc/rc.d/init.d/httpd

服务脚本配置文件:/etc/sysconfig/httpd


(2)、工作目录:/etc/httpd

(3)、配置文件:

    A、主配置文件:/etc/httpd/conf/httpd.conf

    全局配置

    主机配置:用于提供一个站点时

    虚拟主机配置:用户提供多个站点时

    备注:可见主机配置和虚拟主机配置不能同时启用。

    B、扩展配置文:件/etc/httpd/conf.d/*.conf

      配置文件语法测试:#service httpd configtest或者#httpd -t

      配置文件生效方式:绝大多数修改配置文件后,可执行#service httpd reload来生效,

      如果修改了监听的端口或地址必须重启服务才行。

(4)、Socket:80/tcp

(5)、文档跟目录:/var/www/html

(6)、CGI目录:/var/www/cgi-bin


二、httpd的主配置文件:/etc/httpd/conf/httpd.conf


1、执行#grep "Section" httpd.conf可以清楚地看到httpd.conf分为三段,如下:


### Section 1: Global Environment

### Section 2: 'Main' server configuration

### Section 3: Virtual Hosts

(1)、全局配置(Global Environment)

(2)、主机配置(Main Server configuration):仅用于提供一个站点时。

(3)、虚拟主机配置(Virtual Hosts):用户提供多个站点时。

注1、主机配置和虚拟主机配置不能同时启用。

注2、配置文件修改完后最好做语法测试:#service httpd configtest或者#httpd -t


2、主要的配置介绍如下:

(1)、监听套接字:

Listen [IP:]port

此命令可以出现多次,用于指定监听多个不同的套接字。

Listen 80,本机所有地址(一个主机可以配置多个IP)的80端口,默认监听套接字方式。

Listen 192.168.127.137:8080,本机192.168.127.137的8080端口

(2)、配置使用持久连接keep alive

KeepAlive {On|Off}

KeepAliveTimeout 2 (长连接时请求超时时间,单位为秒)

MaxKeepAliveRequests 50 (长连接时最大的请求数。)

注:只要满足任何一个条件就会断开持久链接。


(3)、MPM:

A、apache 2.2上仅支持prefork和worker,其中默认为prefork。

wKiom1l-85aBC5I7AABsAPcFJVQ107.jpg

B、要想使用worker请修改配置#vi /etc/sysconfig/httpd中的

#HTTPD=/usr/sbin/httpd.worker,将#去掉,然后重启service httpd restart即可。

wKiom1l-8rHCpYZ8AAAkTrZ93vg220.png

C、可以通过执行#httpd -l 查看httpd支持的MPM,执行结果如下:

core.c

prefork.c

http_core.c

mod_so.c

D、prefork(主进程---工作子进程):

预先创建进程,即进程池,一个子进程一个请求。

需要定义最大空闲数,最小空闲数,。

由一个而且唯一的一个主进程来负责子进程的生命周期。

<IfModule prefork.c>判断prefork模块是否启用,若启用则其内部的属性有效。

<IfModule prefork.c>

StartServers      8:默认启动的工作子进程数

MinSpareServers    5:最少空闲子进程数

MaxSpareServers    20:最大空闲子进程数

ServerLimit       256:允许的最大活动子进程数,最大不能超过1024.

MaxClients        256:并发请求的最大数,即最多允许多少个请求同时进来。

MaxRequestsPerChild  4000:每个工作子进程在生命周期内所能服务的最多请求个数。

</IfModule>


E、worker(主进程---工作子进程---线程)

一个子进程多个线程,一个线程一个请求。

由一个而且唯一的一个主进程来负责子进程的生命周期。

子进程负责自己线程的生命周期。

<IfModule worker.c>判断worker模块是否启用,如果启用,其内部的属性有效。

<IfModule worker.c>

StartServers       4:默认启动的工作子进程数

ThreadsPerChild     25:每个子进程可生成的线程数

MaxClients        300:并发请求的最大数,即最多允许多少个请求同时进来

MinSpareThreads     25:最少空闲线程数

MaxSpareThreads     75:最大空闲线程数

MaxRequestsPerChild  0:每个工作子进程在生命周期内所能最多服务的请求个数,0表示不限定。

</IfModule>

注意:worker也支持ServerLimit(允许的最大活动子进程数) ,那么至少应该>=MaxClients/ThreadsPerChild

F、顺便说下httpd 2.4中event参数说明如下:

<IfModule mpm_event_module>

    StartServers             默认进程数

   ThreadsPerChild          每个子进程可以生成的线程数

    MinSpareThreads          最小空闲线程数

    MaxSpareThreads          最大空闲线程数

    MaxRequestWorkers        最大线程数量

    MaxConnectionsPerChild   子进程的最大连接数,当达到设置值以后,APACHE就会结束当前的子进程

</IfModule>


(4)、DSO模块的加载方式:

LoadModule module_name /path/to/module


A、相对路径:如果使用相对路径,则对于ServerRoot所定义的位置而言

    (ServerRoot为httpd的工作目录即httpd进程的工作目录);


B、绝对路径:如LoadModule php5_module /usr/lib64/httpd/modules/php5.so


C、httpd -M:列出已经装载的所有DSO以及非DSO模块,

     非DSO显示为static,DSO的显示为SHARED。


D、httpd -l:列出支持使用的非DSO模块。


注:让服务重载配置文件方能生效,#service httpd reload



(5)、配置站点根目录以及页面访问属性:


A、站点根目录

      DocumentRoot "/path/to/somewhere",apache默认在 "/var/www/html"下。

      DocumentRoot中的文件并非所有的都能正常被访问,还受“页面访问属性以及控制”的限制。

     与它对应的还有一个<Directory>...</Directory>用来设定“页面访问属性以及控制”。

      

B、页面访问属性以及控制

  <Directory "/path/to/somewhere">

     Options FollowSymLinks --->页面访问属性

     AllowOverride None --->页面访问控制

  </Directory>

Directoryd的两大项配置Options和AllowOverride,详情如下。

<Directory "/www/html">

a、Options:

    Options可以指定多个,空格分隔,具体参数如下:

    None:所有选项都不启用,web站点使用None

    All:所有选项都启用

    Indexes:缺少默认页面时即index页面,允许将站点跟目录中的所有文件以列表形式返回给用户。非常危险,web站点禁用之。

    FollowSymLinks:允许访问符号链接所指向的原始文件, 非常危险,web站点禁用之。

    ExecCGI:允许使用mod_cgi模块执行CGI脚本。

    Includes:允许使用mod_include模块实现服务器端包含(SSI)

    MultiViews:允许使用mod_negotiation实现内容协商,比如客户端说我支持中文,服务端可以提            供中文、英文等,则经内容协商返给客户端中文的。

b、AllowOverride {None|ALL|Limit|FileInfo|AuthConfig}

  表示Order、Allow、Deny这个三个基于IP的页面访问控制是否被禁用。

  All禁用,None不禁用,只有为None时基于IP页面访问控制Order、Allow、Deny才有效。

 Order {allow,deny|deny,allow}控制访问次序。

           allow,deny:允许访问外的都被拒绝,即白名单;

           deny,allow:没有拒绝的都可访问,即黑名单。

   Allow from all,基于白名单设置的选项,表示允许所有的IP均可访问此站点,没拒绝任何IP。

   Deny from 192.1.1.2,基于黑名单设置的选项,表示设置的参数不允许访问此站点。

   Deny from 192.1.1.3,基于黑名单设置的选项,表示设置的参数不允许访问此站点。

</Directory>

注意:Allow from和Deny from两个参数的值取最佳匹配:从列表中找出最小的能匹配的访问者的地址的条目为最终生效的,其格式可以配置如下:

192.1

192.1.1.2

192.1.1.2/24

192.1.1.2/255.255.255.0

wKiom1hYz22CJf8EAABjDuCkPc4958.jpg

(6)、DirectoryIndex 定义默认主页面:依次找主页,直至找到为止。


<IfModule dir_module>

    DirectoryIndex index.html

</IfModule>

允许有多个,用空格隔开,如下:

DirectoryIndex index.php index.html home.html default.html


(7)、用户目录(目前很少用,一般禁用之):

如果期望让每个用户(linux用户)都可以创建个人站点:http://Server_IP/~UserName/

<IfModule mod_userdir.c>

UserDir disabled:禁止

UserDir public_html:是用户家目录下的目录名称,所有位于此目录下的文件均可通过前述的访问路径进行访问。

</IfModule>

注意:用户的家目录要赋予运行httpd的用户拥有执行权限。


(8)、配置日志功能:

A、日志路径:/var/log/httpd

在httpd.conf中的一般配置如下:

   CustomLog logs/access_log combined

B、访问日志,其格式需要自定义。

 CustomLog "/path/to/access_log_file" LogFormat_Name

如、下面自定义了两个日志格式combined和common。

    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

    LogFormat "%h %l %u %t \"%r\" %>s %b" common

日志格式的具体参数详解如下:

 %h:客户端地址,即客户端IP

 %l:远程登录名,通常为-

 %u:认证时的远程用户名,如果没认证则为-

 %t:收到请求时的时间(如[14/Dec/2016:18:42:38 -0800]其中包含时区8)

 %r:请求报文的起始行,即<method><request-URL><version>,

        如 GET /1.html HTTP/1.1;

            GET /1.html?a=111&b=222 HTTP/1.1

 %b:响应报文的长度,单位为字节

 %>s:响应状态码,如,200成功

 %{Header_name}i:记录指定请求报文首部的内容,如:

          %{Referer}i:此请求的父请求,-表示为直接访问的。

          %{User-Agent}i:客户端类型,如:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0)  Gecko/20100101 Firefox/50.0

 详情请参考apache官网。


C、错误日志:错误日志无需指定格式,httpd自己知道哪些是错误的。

在httpd.conf中的配置如下:

ErrorLog logs/error_log


(9)、路径别名:

   Alias /p_w_picpaths/ "/data/imgs/":意味着访问http://server_ip/p_w_picpaths时,其页面文件来自于/data/imgs/

注意:/p_w_picpaths后有/,那么/data/imgs后必须有/,两个一定保持一致


(10)、设置默认字符集:

AddDefaultCharset UTF-8


3、CGI:Common Gateway Interface(了解即可):

(1)、Apache调用一种可执行文件,并且可执行文件返回时必须以Content-type:text/html开头;

并且这种可执行文件必须以管理员的身份执行;在运行linux时,以管理员的身份运行是非常危险的,所以现在动态网站很少使用CGI。因此大家对CGI了解即可。

(2)、可执行文件的路径必须定义在ScriptAlias /URL/ "/path/to/somewhere"下:只要定义在/path/to/somewhere下的文件都是可执行文件,都可以被Apache直接调用执行。

并且这些文件必须以管理员身份运行。

linux默认ScriptAlias为:ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"


(3)、CGI所依赖的两个模块为:mod_alias和mod_cgi。


如:我们在/var/www/cgi-bin/目录下创建一个文件cgitest,内容如下:

#!/bin/bash

   cat <<EOF

   Content-type:text/html

   <pre>

   The hostname is :`hostname`.

   The time is :`date`.

   </pre>

   EOF

,那么我们在浏览器下访问http://192.168.127.147/cgi-bin/cgitest 显示内容如下:

The hostname is :www.a.com

The time is: Tue Mar 23 11:12:56 CST 2015


4、基于用户的访问控制-HTTP认证:对于这种资源(网页)不是所有的IP都能访问,必须输入一个合法的账号/密码才可访问。


A、虚拟用户:为了获取特定服务的特定资源的用户,这种用户不是操作系统用户。

B、AuthType认证类型:

  a、basic基本认证:账号、密码明文发送。目前经常用。

   basic认证依赖的模块auth_basic_module modules/mod_auth_basic.so

  b、digest摘要认证:hash编码之后发送,很多浏览器不支持,很少用。

   digest依赖的模块auth_digest_module modules/mod_auth_digest.so

C、认证提供者(authn):账号、密码的存放位置,默认为文件。

  依赖的模块ahtun_*_module modules/mod_authn-*.so

D、授权机制(authz):根据什么进行授权。

 依赖的模块ahtuz_*_module modules/mod_authz-*.so


E、如何配置基于用户授权:案例-做基本认证

在httpd的配置文件:/etc/httpd/conf/httpd.conf添加如下信息:

   <Directory "/www/html/fin">

        Options None

        AllowOverride AuthConfig

        AuthType Basic

        AuthName "Private Area 请提供账户和密码"

        AuthUserFile /etc/httpd/conf/.htpasswd

        Require valid-user

   </Directory>

   注意1:.htpasswd为隐藏文件。

   注意2:Require valid-user:/etc/httpd/conf/.htpasswd下的所有合法用户

        Require user zhangsan:只允许/etc/httpd/conf/.htpasswd下的zhangsan

   注意3用命令htpasswd创建认证用户,如下:

       #htpasswd -c -m /etc/httpd/conf/.htpasswd tom

       #htpasswd  -m /etc/httpd/conf/.htpasswd jerry

    注意4AuthName "Private Area 请提供账户和密码"为“弹出对话框的提示信息”。

F、如何配置基于组的访问控制-HTTP认证-案例:

  <Directory "/www/html/fin">

    Options None

    AllowOverride AuthConfig

    AuthType Basic

    AuthName "Private Area 请提供账户和密码"

    AuthUserFile /etc/httpd/conf/.htpasswd

    AuthGroupFile /etc/httpd/conf/.htgroup

    Require group GroupName

  </Directory>

  组文件.htgroup需要手工创建:

    组名: 用户1 用户2 用户3


5、虚拟主机Virtualhost:一个物理服务器服务多个站点。


(1)、实现虚拟主机的方法如下:


A、基于不同IP实现不同的虚拟主机,IPV4已基本用完,并且多个IP浪费资源。-->变化IP

<Virtualhost 192.168.1.101:80>

ServerName www.a.com

DocumentRoot "/web/a/html"

</Virtualhost>


<Virtualhost 192.168.1.102:80>

ServerName  www.b.org

DocumentRoot "/web/b/html"

</Virtualhost>


B、基于不同port实现不同的虚拟主机,Web站点默认端口为80,如果用不同Port则不太合适。--变化Port


<Virtualhost 192.168.1.101:80>

ServerName  www.a.com

DocumentRoot "/web/a/html"

</Virtualhost>


<Virtualhost 192.168.1.101:8080>

ServerName  www.b.com

DocumentRoot "/web/b/html"

</Virtualhost>


C、基于不同主机名(FQDN)实现不同的虚拟主机,最节省资源。-->变化ServerName,需要配置/etc/hosts文件。

注意:http2.2实现基主机名的虚拟主机需要启用NameVirtualHost *:80,http2.4已不需要此属性。

<Virtualhost *:80>

ServerName  www.a.com

DocumentRoot "/web/a/html"

</Virtualhost>


<Virtualhost *:80>

ServerName  www.b.com

DocumentRoot "/web/b/html"

</Virtualhost>

(2)、实现虚拟主机步骤: 

A、要实现"虚拟主机",必须取消“中心主机”,即注释掉 #DocumentRoot "/www/html/"

B、配置Virtualhost:

<Virtualhost IP:port>

 ServerName  ...

 DocumentRoot ...

 ErrorLog ...

 CustomLog ....

 <Directory "">

        ...

 </Directory>

</Virtualhost>

C、每个虚拟主机可以单独配置:用户认证、访问日志、错误日志、别名、脚本别名等。

D、说明:大多数个人站点就是基主FQDN实现的,向虚拟主机提供商如IDC申请,提供商只需建立<Virtualhost>...</Virtualhost>,自己如在godaddy上注册一个域名,注册域名时绑定虚拟主机提供商提供的IP。虚拟主机提供商也会开通一个ftp账号,供个人将自己站点内容上传到服务器上。这样自己的个人站点就建立好了。

E、因防火墙问题无法访问,需要执行 setenforce 0和service iptables stop


三、https的实现:

    https的来源:因http请求和响应都是以明文方式传输的,对于网上银行、支付宝、财付通等账户信息以明文方式传输很不安全,因此才提出http的加密方式传输即https。目前网上银行、支付宝、财付通等都是基于ssl/tls。

    ssl:Secure Socket Layer(安全的套接字层),常用的版本为sslv3

    tls:Transport Layer Security(传输协议层的安全),常用的版本为tlsv1


1、X509.3证书格式:

(1)、证书格式的版本号:X509.3

(2)、证书序列号:CA给每个证书在签署时在CA端的序列号。

(3)、证书签名算法:

(4)、证书颁发者:谁发的证即CA组织的名称

(5)、有效期:1年、5年等。

(6)、持有者名称:人、机器等。

(7)、持有者公钥:

(8)、其他扩展信息:基本约束、使用策略、密钥使用的限制

(9)、数字签名


2、PKI:Public Key Infrastructure公钥基础设施

(1)、签证机构(CA)

(2)、端实体(申请者)

(3)、证书撤销列表(CRL)发布机构

(4)、注册机构(RC)

(5)、证书存取库


3、SSL握手要完成的工作:

(1)、交换协议版本号,如双方都使用sslv3或者tlsv1。

(2)、选择双方都支持的加密方式

(3)、对两端实现身份验证,一般是客户端验证服务器端身份。

(4)、进行密钥交换


4、http VS https:

(1)、http:文本协议,80/tcp。

(2)、https:二进制格式的协议,443/tcp。

(3)、SSL会话是基于IP地址实现,因此不支持在基于FQDN的虚拟主机上实现。

  wKiom1Vyfr_hjMJmAAI2iTbw9YU411.jpg


5、https验证一般指客户端验证服务端证书,验证的内容:

(1)、检测有效期:证书是否在有效期内。

(2)、检测证书颁发者的可信度。

(3)、检测证书的签名。

(4)、检测持有者的身份。


6、在httpd上实现https:基于mod_ssl模块实现对ssl的支持。

(1)、准备好服务器的私钥和证书

A、私钥文件

  #cd /etc/pki/CA

  #(umask 077;openssl genrsa 2048 > private/cakey.pem)

B、生成自签证书:

  #openssl req -new -x509 -key private/cakey.pem -days 3655 -out cacert.pem

  #mkdir /etc/httpd/conf/ssl

  #cd /etc/httpd/conf/ssl

  #(umask 077;openssl genrsa 1024 > httpd.key)

C、生成证书签署请求

  #cd /etc/httpd/conf/ssl

  #openssl req -new -key httpd.key -out httpd.csr

  #cd /etc/pki/CA/

  #touch index.txt serial crlnumber

  #echo 01 > serial

D、签署证书

  #cd /etc/httpd/conf/ssl

  #openssl ca -in httpd.csr -out httpd.crt -days 365

  #ls 结果如下:

  httpd.crt httpd.csr httpd.key

  等下web服务器配置时都要用到httpd.crt和httpd.key。


(2)、安装mod_ssl模块

   #yum -y install mod_ssl

(3)、配置/etc/httpd/conf.d/ssl.conf

A、配置使用ssl的虚拟主机

    ServerName "/var/www/html"

    DocumnetRoot www.test.com:443

B、配置证书和私钥

    SSLCertificatFile web服务器自己的证书文件,如上面自建的/etc/httpd/conf/ssl/httpd.crt

    SSLCertificatKeyFile 密钥文件,如上面自建的/etc/httpd/conf/ssl/httpd.key

(4)、重启httpd服务

(5)、测试

   #openssl s_client -connect IP:port -CAfile /path/to/CA_certificate_file

如: #openssl s_client -connect  www.test.com:443 -CAfile /etc/pki/CA/cacert.pem


四、服务器status页面:apache的内生的status页面,这些页面可以观察服务器的运行状态,所以要限定访问。

1、配置“文件系统路径访问属性”

<Directory "">


</Directory>


2、配置“URL访问属性”

<Location /server-status>

 SetHandler server-status

 AuthType basic

 AuthName "Server Stauts"

 AuthUserFile /etc/httpd/conf/.htpasswd

 Require valid-user

</Location>

如果“要配置其属性的URL能映射到具体的文件路径”,建议使用<Directory>而非<Location>;

否则使用<Location>。而服务器status页面,显示的是服务器的运行状态,status页面在服务器上根本不存在,status页面无法映射到具体的文件路径,又因这些信息不是所有的人都能看到的,所以要“基于URL访问属性”限定访问(限定方法:基于用户认证AuthType或者基于IP的认证,见上面)。

五、使用mod_deflate模块压缩页面优化传输速度。

注:使用场景:

CPU比较空闲,而带宽比较紧张时使用压缩;

如果CPU比较忙,而带宽比较空闲时就不需要使用压缩。


1、通常只压缩纯文本文件,如html、css、js、plain等,对于二进制文件如mp3,jpg等压缩效果不明显。

2、配置mod_deflate:

(1)、启用:SetOutputFilter DEFLATE 

(2)、配置:

<IfModule mod_deflate.c>

#指定对哪些格式的文件进行压缩,可以写在一行,用空格隔开

AddOutputFilterByType DEFLATE text/plain

AddOutputFilterByType DEFLATE text/html

AddOutputFilterByType DEFLATE text/css

AddOutputFilterByType DEFLATE text/javascript

AddOutputFilterByType DEFLATE text/xml

AddOutputFilterByType DEFLATE application/xml

AddOutputFilterByType DEFLATE application/xhtml+xml

AddOutputFilterByType DEFLATE application/x-javascript

#压缩级别 Level of compression (1-9,Highest 9),默认6

DeflateCompressionLevel 9

#有些浏览器不支持压缩,通常如下:

BrowserMatch ^Mozilla/4 gzip-only-text/html

BrowserMatch ^Mozilla/4\.0[678] no-gzip

BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

</IfModule mod_deflate.c>

3、如果配置文件httpd.conf中没有deflate的配置,可以vi /etc/httpd/conf.d/下创建deflate.conf,

内容为上面2的(1)和(2)。注意这是deflate.conf中最好去掉<IfModule mod_deflate.c>

4、配置过deflate后,见下图Response Headers会有gzip,下图同时也可以看到启用了Keep-Alive.

wKiom1hl1A7x6qF8AACiyBI5FIY575.jpg


六、安装Apache后自动会安装一些工具,比较重要的工具有:

1、apachectl:apache服务器控制工具,apachectl start|restart|stop 

2、压力模拟测试工具ab,测试结果只能作为参考:

-c :模拟的并发数即链接数

-n :总请求数

注意:-c的值小于等于-n的值才有效。

如:ab -c 100 -n 5000 http://www.baidu.com/index.html

3、apxs:apache的扩展工具,编译第三方模块或者在编译安装apache时未安装某模块,要想使用此模块都需要使用apxs。

4、rotatelogs:不关闭apahce手动滚动日志文件。


七、curl命令:在命令行模式下去探测服务器工作状态的工具。

它基于URL的语法在命令行模式下工作的文件传输工具,它支持FTP、FTPS、HTTP、TELNET、FILE、LADP、DICT等等协议。支持HTTPS认证,并且支持HTTP的POST、PUT等方法,FTP上传,HTTP上传,下载文件断点续传,上传文件断点续传,http代理服务器管道,甚至还支持IPv6,socks5代理服务器等等,功能非常强大。


常用的命令选项:

1、-I/--head:只获取响应报文首部信息。如:curl -I http://www.baidu.com

2、-e/--referer <URL>:来源网址。

如:curl -e http://www.google.com.hk/index.html http://www.baidu.com,即通过www.google.com.hk/index.html访问www.baidu.com。

3、-A/--user-agent <string>:设置客户端浏览器名称


八、资源限定:

1、软限定:可以超出限制,但仅能超出一定时长。

2、硬限定:绝对不能超出限制。

硬限定相关的配置文件:

/etc/security/limits.conf或者/etc/security/limits.d/*.conf

举例:文件内容举例如下:

apache(用户:apache) hard(限定类型:硬限定) nofile(nofile能够打开的最大文件数,65535为数量) 65535

apache(用户:apache) hard(限定类型:硬限定) nproc (nproc能够打开的最大进程数,50000为数量)  50000

实战:如下是公司线上某机器limits.conf的配置截图:

wKioL1hmApfyNUpNAAAh1SttFeo116.jpg

3、ulimit为软限定。

-n:显示或限定能打开的最大的文件句柄数。

-u:显示或限定能够打开的最大进程数。