第十四章 Apache服务器

 

      简介

 

        1   www:world  wide  web    万维网

 

            http    协议:  超文本传输协议

 

            HTML语言:  超文本标识语言

 

        2   URL:统一资源定位        协议+域名:端口+网页文件名

                    http://www.sina.com.cn:80/11/index.html

                    www.sina.com.cn

 

        3   搭建www的服务器的方法

                windows     IIS+asp+SQLserver

                        Internet  Information  server

                Linux       apache+mysql+php

 

      安装

        1lamp源码安装 

        2rpm包安装

            httpd

            mysql

            mysql-server       

            php

            php-devel

            php-mysql

 

      相关文件

 

        apache配置文件

            源码包安装/usr/lcoal/apache2/etc/httpd.conf

                    /usr/local/apache/etc/extra/*.conf

                   

            rpm包安装:/etc/httpd/conf/httpd.conf

 

        默认网页保存位置

            源码包/usr/local/apache2/htdocs/

            rpm包安装:/var/www/html/

 

        日志保存位置

            源码包:/usr/local/apache2/logs/

            rpm: /var/log/httpd/

 

      配置文件

       

        注意:apache配置文件严格区分大小写

 

        1   针对主机环境的基本配置

 

        ServerRoot      apache主目录

        Listen          监听端口

        LoadModule      加载的相关模块

       

        User

        Group           用户和组

        ServerAdmin     管理员邮箱

        ServerName      服务器名(没有域名解析时,使用临时解析。不开启)

        ErrorLog "logs/error_log    错误日志

        CustomLog "logs/access_log" common      正确访问日志

        DirectoryIndex index.html index.php     默认网页文件名,优先级顺序

        Include  etc/extra/httpd-vhosts.conf    子配置文件中内容也会加载生效

       

        2   主页目录及权限

 

            DocumentRoot "/usr/local/apache2//htdocs"

                主页目录

 

            <Directory "/usr/local/apache2//htdocs">

                #Directory关键字定义目录权限

 

                Options Indexes FollowSymLinks

                    #options

                        None没有任何额外权限

                        All所有权限

                        Indexes:   浏览权限当此目录下没有默认网页文件时显示目录内容

                        FollowSymLinks准许软连接到其他目录

                AllowOverride None

                    #定义是否允许目录下.htaccess文件中的权限生效

                        None:.htaccess中权限不生效

                        All文件中所有权限都生效

                        AuthConfig文件中只有网页认证的权限生效。

 

                Require all granted 访问控制列表

                

#定义此目录的允许访问权限

1仅允许IP192.168.1.1的主机访问

<RequireAll>

      Require all  granted

      Require ip 192.168.1.1

</RequireAll>

 

例子2.仅允许192.168.0.0/24网络的主机访问

<RequireAll> 

      Require all  granted 

      Require ip 192.168.1.0/24

</RequireAll> 

 

例子3.禁止192.168.1.2的主机访问,其他的都允许访问,

<RequireAll>

      Require all  granted

      Require not ip 192.168.1.2

</RequireAll>

 

例子4.允许所有访问,

Require all  granted            #可以不写在<RequireAll>。。。</RequireAll>

 

例子5.拒绝所有访问,

Require all  denied             #可以不写在<RequireAll>。。。</RequireAll>

 

 

        3   目录别名

子配置文件名 etc/extra/httpd-autoindex.conf

 

Alias /icons/ "/usr/local/apache2//icons/"

    apache以为在这里     实际目录位置

    定义别名  /icons/----

        http://192.168.1.253/icons/

 

<Directory "/usr/local/apache2//icons">

    Options Indexes MultiViews           MultiViews多编码支持

    AllowOverride None

    Require all granted

</Directory>

 

        4   用户认证

        限制特定目录只有指定用户可以访问。

 

        1建立需要保护的目录

 

            /usr/local/apache2/htdocs/11下建立目录然后保护

 

            使用别名在系统位置建立目录然后保护

 

                mkdir  -p  /share/soft

 

        2) 修改配置文件允许权限文件生效

        vi  /usr/local/apache2/etc/httpd.conf

 

Alias /soft/ "/share/soft/"

 

<Directory "/share/soft">

    Options Indexes

    AllowOverride All           #开启权限认证文件.htaccess

    Require all granted

</Directory>

 

        重启apache

 

        3在指定目录建立权限文件

        cd  /share/soft

 

        vi  .htaccess         #不区分大小写

 

AuthName "50 docs"

  #提示信息

AuthType basic

  #加密类型

AuthUserFile /share/apache.passwd

  #密码文件文件名自定义。

require valid-user

  #允许密码文件中所有用户访问

 

        4建立密码文件加入允许访问的用户。用户和系统用户无关

       /usr/local/apache2/bin/htpasswd  -c  /share/apache.passwd  test1

            -c  建立密码文件,只有添加第一个用户时,才能-c

        /usr/local/apache2/bin/htpasswd  -m  /share/apache.passwd  test2

            -m  再添加更多用户时,

 

    5   虚拟主机

 

        xeon  *2

 

       

        1)分类

            基于IP的虚拟主机:    一台服务器,多个IP,搭建多个网站

            基于端口的虚拟主机   一台服务器,一个ip,搭建多个网站,每个网络使用不同端口访问

            基于名字的虚拟主机   一台服务器,一个ip,搭建多个网站,每个网站使用不同域名访问

 

        2)步骤:

            ①  解析试验域名

                修改hosts文件:

                192.168.120.145     www.sina.com

                192.168.120.145     www.sohu.com

 

C:\WINDOWS\system32\drivers\etc\hosts      windows

/etc/hosts                              Linux

 

 

            ②  规划网站主目录

                /share/sina--------------www.sina.com 目录下创建index.html

              /share/sohu ------------ www.sohu.com 目录下创建index.html

 

            修改配置文件

                vi  /usr/local/apache2/etc/httpd.conf

                    Include etc//extra/httpd-vhosts.conf

                    #打开虚拟主机配置文件

 

                修改虚拟机主配置文件:

                vi /usr/local/apache2/etc/extra/httpd-vhosts.conf

 

                加入Directory权限内容如下

 

<Directory "/usr/local/apache2/htdocs/sina">

    Options Indexes

    AllowOverride None

Require all granted

</Directory>

 

<Directory "/usr/local/apache2/htdocs/sohu">

    Options Indexes

    AllowOverride None

    Require all granted

</Directory>

               

                修改为ip:

<VirtualHost 192.168.150.253>

    #注意只能写ip

    ServerAdmin webmaster@sina.com

        #管理员邮箱

    DocumentRoot "/usr/local/apache2/htdocs/sina"

        #网站主目录

    ServerName www.sina.com

        #完整域名

    ErrorLog "logs/sina-error_log"

        #错误日志

    CustomLog "logs/sina-access_log" common

        #访问日志

</VirtualHost>

 

<VirtualHost 192.168.150.253>

    ServerAdmin webmaster@sohu.com

    DocumentRoot "/usr/local/apache2/htdocs/sohu"

    ServerName www.sohu.com

    ErrorLog "logs/sohu.com-error_log"

    CustomLog "logs/sohu.com-access_log" common

</VirtualHost>

               

 

    6   rewrite 重写功能

        URL中输入一个地址会自动跳转为另一个

 

        1域名跳转  www.sina.com  ------>  www.sohu.com

 

            开启虚拟主机,并正常访问

 

            打开配置文件的此模块:

vi /usr/local/apache2/etc/httpd.conf

LoadModule rewrite_module modules/mod_rewrite.so

#打开重写模块,记得重启apache

 

 

            修改配置文件使sina目录的 .htaccess文件生效(.htaccess为跳转规则

 

vi extra/httpd-vhosts.conf

 

<Directory "/usr/local/apache2/htdocs/sina">

# FollowSymLinks意思为这个目录容许通过此处跳转到其他目录

    Options Indexes FollowSymLinks

    AllowOverride All

Require all granted

</Directory>

 

            vi  /usr/local/apache2/htdocs/sina/.htaccess

 

            在sina配置文件中加入如下内容:

 

RewriteEngine on

    #开启rewrite功能

RewriteCond %{HTTP_HOST} www.sina.com

    把以www.sina.com 开头的内容赋值给HTTP_HOST变量

RewriteRule  .*   http://www.sohu.com

    .*  输入任何地址都跳转到http://www.sohu.com

 

 

        2)静态网页向动态网页跳转

修改配置文件

<Directory "/usr/local/apache2/htdocs/sohu">

    Options Indexes FollowSymLinks

    AllowOverride All

    Require all granted

</Directory>

 

 

vi  /usr/local/apache2/htdocs/sohu/.htaccess

RewriteEngine on

 

RewriteRule index(\d+).html index.php?id=$1

    #   输入index(数值).html跳转到index.php文件同时把数值当成变量传入index.php

 

 

 

    7   常用子配置文件

 

        httpd-autoindex.conf            apache系统别名

 

        httpd-default.conf          线程控制         *

 

        httpd-info.conf         状态统计网页

 

        httpd-languages.conf            语言编码         *

 

        httpd-manual.conf           apache帮助文档

 

        httpd-mpm.conf          最大连接数           *

            MaxRequestWorkers      250  (默认worker MPM模块生效)

 

        httpd-multilang-errordoc.conf       错页面          *

 

        httpd-ssl.conf          ssl安全套接字访问

 

        httpd-userdir.conf          用户主目录配置

 

        httpd-vhosts.conf           虚拟主机