Apache简介:

    Apache是一款著名的web服务器的软件。它是实现HTTP协议 的一个工具,而httpd则是Apache超文本传输协议服务器的主程序。

下面我来说说Apache的配置文件(非常重要)

1, 配置文件总体分为3个部分:

        Section1: Global Environment

            功能: 控制Apache服务器进程的全局操作的

        Section2:  'Main' server configuration

            功能: 提供主服务器(默认为主服务器)的配置

        Section3:  Virtual Hosts

            功能: 提供虚拟服务器配置的

    注意:默认状态下,主服务器启用,主服务器和虚拟服务器不能同时启用,需要启用虚拟服务器则先关闭主服务器。


2,Section1段的主要内容:

    ServerTokens  OS

    功能:显示Apache的版本和操作系统的名称

    serverRoot    "/etc/httpd"

    功能:设置服务器的根目录为/etc/httpd

    PidFile    run/httpd.pid (注意:此处为相对路径,绝对路径前面要加/etc/httpd)

    功能:指定Apache服务器进程的进程号文件存放的位置为:/etc/httpd/run/httpd.pid

    Timeout    300

    功能:    指定连接超时间隔为300s

    Keeplive Off

    功能:    设置是否允许持久连接,Off为不允许持久连接,且默认一次请求只能传输一个文件。

    MaxKeepAliveRequest     100

    功能:    设置一次持久连接最多接受的请求数为100,0则表示无限制

    KeepAliveTimeout    15

    功能:    表示 一次持久连接的超时时间为15s

    <IfModule prefork.c>(服务器池)

    

    <IfModule prefork.c>

StartServers       8   //服务器开启时,启动的服务器子进程为8个

MinSpareServers    5    //最小空闲服务器子进程为5个

MaxSpareServers   20    //最大空闲服务器子进程为20个    

ServerLimit      256    //允许服务器进程数最多为256个

MaxClients       256    //允许同时相应的客户端数为256个

MaxRequestsPerChild  4000  //允许一个服务器子进程最多相应的服务请求数为4000个

    </IfModule>    

    

    Listen 80    功能: 设置监听端口为80端口,且可以设置如下:IP:80这样的形式,指明那个IP的80端口


     3,Section2段的主要内容如下:

        User Apache

        Group AApche

        功能:    提供Apache运行时的身份及所属属组分别为用户:Apache  基本组:Apache

        ServerAdmin  root@localhost

        功能:    设置Apache的服务器管理员的邮箱

        ServerName {IP|域名}:80    // 如果此处为域名则需要DNS服务器的支持

        功能:    设置Apache默认站点的名称和端口号

        UseCanonicalName Off

        功能:    设置是否使用规范名称。当值为Off时,表示使用客户端提供的主机名和端口号

                                        当值为On时,表示使用ServerName 设置的值

        DocumentRoot "/var/www/html"

        功能:    设置默认web站点的文档根目录,网站上的页面文件都是存放在此根目录下的

        

        <Directory />

            Options FollowSymLinks

            AllowOverride None

        </Directory>

        功能:    根目录的访问控制,<Directory />表示要对文件系统的目录进行限制

        

        <Directory "/var/www/html">

            Options Indexes FollowSymLinks   //允许跟随符号连接,其中Indexes的含义是,如果要访问的页面文档不存在,则显示文档根目录下的文件目录清单

            AllowOverride None   //不允许覆盖当前配置,也就是不处理.htaccess文件

            Order allow,deny    //访问控制的顺序,先allow后deny

                Allow from all    // 允许所有主机访问

        </Directory>

         功能:对文档根目录的访问控制       

        

        <IfModule mod_userdir.c> 

            UserDir disabled

        </IfModule> 

        功能:默认禁用个人主页,而UserDir disable则是开放个人主页面

        AccessFileName .htaccess

        功能:    指明每个目录中访问控制文件的名称为.htaccess

        HostnameLookups Off

        功能:    设置在日志中记录的是客户的名称还是IP地址,Off则记录IP地址,On则记录名称

        ErrorLog    Logs/error_log

        功能:    指定错误日志的存放位置

        LogLevel    warn

        功能:    指定日志记录的基本为警告

        CustomLog    logs/access_log combined

        功能:    指定访问日志的位置及类型

        日志的格式

                        %h: 客户端地址

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

    %u: 认证时输入用户名,没有认证时为-

    %t: 服务器收到 用户请求时的时间

    %r:请求报名的起始行

    %>s: 响应状态码

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

    %{HEADER_NAME}i: 记录指定首部对应的值


        ServerSignature    On

        功能:    在服务器产生的页面中增加一行,显示内容为;服务器的版本和虚拟主机的名称

        Alias /icons/ "/var/www/icons/"

        功能:    定义/icons/  为/var/www/icons的别名,

        ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

        功能:    定义脚本别名,即将/cgi-bin/ 是 /var/www/cgi-bin/的别名

        IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable Charset=UTF-8

        功能:    设置自动生成目录列表的显示方式,

                    FancyIndexing  // 对每种类型的文件前加一个小图标加以区别

                    VersionSort    // 对同一个软件的多个版本进行排序

                    NameWidth=*    // 文件名字段自动适应当前目录下的最长文件名


        AddDefaultCharset UTF-8

        功能:字符集的设置,默认设置为UTF-8

        

        <Location /server-status>

        #    SetHandler server-status

        #    Order deny,allow

        #    Deny from all

        #    Allow from .example.com

        #</Location>

        功能:    设置Apache可以报告详细的服务器状态信息。

    

    Section3:主要说虚拟机主机的配置:

        主要有3种,基于IP的虚拟主机,基于端口的虚拟主机,基于名字的虚拟主机。

        虚拟主机不能和主服务器同时开启,所有要注释掉虚拟主机

        注释主服务器的站点根路径指定:DocumentRoot


 定义虚拟主机

NameVirtualHost IP:PORT

<VirtualHost IP:PORT>

ServerName      服务名称 

DocumentRoot     根目录

ServerAlias       服务别名

ErrorLog        错误日志

CustomLog        访问日志

</VirtualHost>

  大体上,Apache的配置文件就以上这么多啦,当然还有一些没有介绍,相比而言写出来的重要些而已。


基于端口号的虚拟主机

首先,要先把默认的服务器的DocumentRoot注释掉,且要多指定一个端口例如:8080端口

    wKiom1PnQViCgtbaAAAPNClchso014.png

然后就可以编辑虚拟主机的内容啦:(内容有点简单,日志文件没写而已)

wKiom1PnQaiQW02oAAAlstD_33Y790.png

然后测试文件语法 httpd -t  或者 service httpd configtest

然后service httpd restart (修改端口号要重启服务的)

测试如下:

wKioL1PnRVmTXF-rAAAgz5WJ9aQ345.png


wKiom1PnRGOiV4AlAAAiDoVpUKk620.png


再来看看基于IP的虚拟主机的实现:配置文件如下:

wKioL1PnRrWi2eoYAAAk9gboVw0063.png

我们只需把端口都改为80端口,而IP地址则不能一样

wKioL1PnRnCQkli-AAAlLGGO0vo996.png


wKiom1PnRWGjJ0cvAAAlFwOWNtg980.png

最后我们常用的是基于主机名称的实现,要想基于主机名,首先我们要能解析出主机的IP地址,要能解析主机名的IP地址,就需要DNS服务,所以配置好DNS服务器是前提,在这里,我们只需在已经配置好的DNS服务器的解析库文件中,/etc/hosts 文件中添加也行,

配置文件:

wKioL1PnSu3CobA2AAAf53mJDUY487.png

测试语法

重启服务

wKiom1PnSOmjr5UVAAAluCGy8HA532.png

wKioL1PnSgzRTqvZAAAngoS7V94619.png


以上3种虚拟主机的建立就这样啦,这里顺便说下,我用的虚拟机,做基于主机名称虚拟主机的时候,我改的不是虚拟机的/etc/hosts,我改的是我的window本机的C盘/windows/system32/drivers/etc/hosts文件,在这个文件内添加如下内容即可:

    192.168.0.102  www1.stu14.com

    192.168.0.102  www2,stu14.com 


以上就是HTTP服务的配置文件的详解以及如何去创建虚拟主机。