APACHE配置详解

  1. 本章结构

  2. 相关概念
    1. 协议:

      超文本传输协议—HTTP协议

    2. 核心

      超文本标识语言—HTML语言

    3. URL

      统一资源定位符—http://或https://

      如:http://www.baidu.com/index.html

    4. 搭建

      Linux+apache+mysql+php

      Linux+nginx+mysql+php

      Windows+IIS+SQLserver+Asp

    5. 安装方式
      1. 源码包安装
      2. RPM包安装

        # yum -y install httpd mysql mysql-server mysql-devel php php-devel php-mysql

    6. 相关文件
      1. Apache配置文件:

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

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

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

      2. 默认网页保存位置:

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

        rpm包安装:/var/www/html

      3. 日志保存位置:

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

        Rpm包:/var/log/httpd

  3. 常用配置项

    1、常用配置项

    ServerRoot apache主目录

    Listen 监听端口

    LoadModule 加载的相关模块

    User 用户

    Group 组

    ServerAdmin 管理员邮箱

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

    ErrorLog "logs/error_log" common 错误日志

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

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

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

    DocumentRoot "/usr/local/apache2/htdocs" 主页目录

    <Directory "/usr/local/apache2/htdocs"> Directory关键字定义目录权限

    Options Indexes FollowSymlinks

    None:没有任何额外权限

    All:所有权限

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

    FollowSymlinks:准许软链接到其他目录

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

None:.htaccess中权限不生效

All:文件中所有权限都生效

Require all granted 访问控制列表

2、目录别名与用户身份验证

Alias /指定的目录 /实际的目录

vim .htaccess #不区分大小写

AuthName "name" #提示信息,任意

AuthType basic #加密类型

AuthUserFile /share/apache.passwd #密码文件,文件名自定义

require valid-user #允许密码文件中所有用户访问

# /usr/local/apache2/bin/htpasswd -c /share/apache.passswd user1

-c 建立密码文件,只有添加第一个用户时,才能-c否则会覆盖之前定义的

# /usr/local/apache2/bin/htpasswd -m /share/apache.passswduser2

-m 再添加更多用户时,记得用-m

3、虚拟主机

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

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

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

  1. 案例1:基于用户身份验证
    1. [root@myredhat htdocs]# vim .htaccess

      authname "handsome boy"

      authtype basic

      authuserfile "/usr/local/apache2/htdocs/apache.passwd"

      require valid-user

      #注意创建的.htaccess文件要与需要验证保护的主页在同一个文件夹里面

    2. # /usr/local/apache2/bin/htpasswd –c /usr/local/apache2/htdocs/apache.passwd user1 #输入密码
    3. # /usr/local/apache2/bin/htpasswd -m /usr/local/apache2/htdocs/apache.passwd user2

      #创建密码文件和验证的用户~

    4. # vim /usr/local/apache2/etc/httpd.conf

      DocumentRoot "/usr/local/apache2/htdocs"

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

      Options Indexes FollowSymLinks

AllowOverride All

Require all granted

</Directory>

  1. # /usr/local/apache2/bin/apachectl restart 重启服务

五、案例2:基于客户端地址的验证

    1. # vim /usr/local/apache2/etc/httpd.conf

    DocumentRoot "/usr/local/apache2/htdocs"

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

    Options Indexes FollowSymLinks

AllowOverride All

<Requireall>

Require all granted

Require ip 192.168.131.129

</Requireall>

</Directory>

  1. # /usr/local/apache2/bin/apachectl restart 重启服务
  2. # curl http://192.168.131.134/index.html

    在192.168.131.134也就是自己主机进行访问试验

    # curl http://192.168.131.134/index.html

  1. 拒绝某个IP地址访问
    1. #vim /usr/local/apache2/etc/httpd.conf

    DocumentRoot "/usr/local/apache2/htdocs"

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

    Options Indexes FollowSymLinks

AllowOverride All

<Requireall>

Require all granted

Require not ip 192.168.131.129

</Requireall>

</Directory>

  1. # /usr/local/apache2/bin/apachectl restart
  2. 用之前192.168.131.134那台主机进行访问,发现无法访问了,而其他主机正常

  1. 案例3:虚拟主机
    1. 基于IP地址的虚拟主机
      1. # ifconfig eth0:0 192.168.131.135 netmask 255.255.255.0 #配置虚拟IP地址
      2. # cd /usr/local/apache2/htdocs/

        # mkdir taobao

        # mkdir xdl

        # cd taobao/

        # vim index.html

        www.taobao.com

        # cd xdl/

        # vim index.html

        www.xdl.com

      3. # vim /usr/local/apache2/etc/extra/httpd-vhosts.conf

<VirtualHost 192.168.131.134:80>

ServerAdmin 863380404@qq.com

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

ErrorLog "logs/taobao-error_log"

CustomLog "logs/taobao-access_log" common

</VirtualHost>

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

options Indexes FollowSymLinks

allowoverride none

require all granted

</Directory>

<VirtualHost 192.168.131.135:80>

ServerAdmin 863380404@qq.com

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

ErrorLog "logs/xdl-error_log"

CustomLog "logs/xdl-access_log" common

</VirtualHost>

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

options Indexes FollowSymLinks

allowoverride none

require all granted

</Directory>

  1. # vim /usr/local/apache2/etc/httpd.conf

  2. # /usr/local/apache2/bin/apachectl restart
  3. www.taobao.com

    在浏览器输入http://192.168.131.135/,显示

    www.xdl.com

  1. 基于端口的虚拟主机
    1. # vim /usr/local/apache2/etc/extra/httpd-vhosts.conf

      Listen 8080

      <VirtualHost 192.168.131.134:80>

      ServerAdmin 863380404@qq.com

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

      ErrorLog "logs/taobao-error_log"

      CustomLog "logs/taobao-access_log" common

      </VirtualHost>

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

      options Indexes FollowSymLinks

      allowoverride none

      require all granted

      </Directory>

      <VirtualHost 192.168.131.134:8080>

      ServerAdmin 863380404@qq.com

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

      ErrorLog "logs/xdl-error_log"

      CustomLog "logs/xdl-access_log" common

      </VirtualHost>

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

      options Indexes FollowSymLinks

      allowoverride none

      require all granted

      </Directory>

    2. # /usr/local/apache2/bin/apachectl restart
    3. 在浏览其分别输入http://192.168.131.134:8080/http://192.168.131.134/,正确显示
    1. # yum -y install bind
    2. zone "baidu.com" IN {

      type master;

      file "baidu.localhost";

      allow-update { none; };

      };

      zone "taobao.com" IN {

      type master;

      file "taobao.localhost";

      allow-update { none; };

      };

    3. # cd /var/named/
    4. # cp -p named.localhost taobao.localhost
    5. # cp -p named.localhost xdl.localhost
    6. 注意:万一在启动dns时,卡在:Generating /etc/rndc.key,可以通过以下方法解决:

#rndc-confgen -r /dev/urandom -a

然后再重启DNS服务:

service named start

  1. <VirtualHost 192.168.131.134:80>

    ServerAdmin 863380404@qq.com

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

    ServerName www.taobao.com

    ErrorLog "logs/taobao-error_log"

    CustomLog "logs/taobao-access_log" common

    </VirtualHost>

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

    options Indexes FollowSymLinks

    allowoverride none

    require all granted

    </Directory>

    <VirtualHost 192.168.131.134:80>

    ServerAdmin 863380404@qq.com

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

    ServerName www.xdl.com

    ErrorLog "logs/xdl-error_log"

    CustomLog "logs/xdl-access_log" common

    </VirtualHost>

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

    options Indexes FollowSymLinks

    allowoverride none

    require all granted

    </Directory>

  2. # /usr/local/apache2/bin/apachectl restart
  3. #vim /etc/sysconfig/network-scripts/ifcfg-eth0

    #curl http://www.taobao.com显示结果如下:

    # curl http://www.xdl.com,显示结果如下:

  1. 案例4:为每个用户分别添加个人主页
    1. # vim etc/httpd.conf

    2. # vim etc/extra/httpd-userdir.conf

    3. # /usr/local/apache2/bin/apachectl restart #重启服务
    4. # useradd user1

      # useradd user2

    5. # cd /home/user1

      # mkdir public_html

      # cd public_html/

      # vim index.html

      I'm user1 index

    6. # cd /home/user2

      # mkdir public_html

      # cd public_html/

      # vim index.html

I'm user2 index

  1. # chmod o+x /home/user1

    ]# chmod o+x /home/user2 #赋予权限,否则无权进入此目录

  2. 在192.168.131.129这台linux客户机进行测试,结果如下:

[root@myrhel1 ~]# curl http://192.168.131.134/~user1/

I'm user1 index

[root@myrhel1 ~]# curl http://192.168.131.134/~user2/

I'm user2 index

  1. 案例5:页面间跳转
    1. # vim /usr/local/apache2/etc/httpd.conf

      LoadModule rewrite_module modules/mod_rewrite.so #开启这个选项

    2. # cd /usr/local/apache2/htdocs/xdl/

      # vim .htaccess

rewriteengine on #开启重写规则

rewritecond %{HTTP_HOST} www.xdl.com #具体怎么重写,注意大小写

rewriterule .* http://www.taobao.com #定义重写规则

  1. # vim /usr/local/apache2/etc/extra/httpd-vhosts.conf

  2. # /usr/local/apache2/bin/apachectl restart #重启服务
  3. 在192.168.131.129这台linux客户端主机进行检验:

    # elinks http://www.xdl.com 结果显示的是淘宝的测试页面

  1. 案例6:网页别名
    1. # mkdir /aliasweb/alias
    2. #cd /aliasweb/alias
    3. #vim index.html

      this is a alias page

    4. # vim /usr/local/apache2/etc/extra/httpd-vhosts.conf

      <VirtualHost 192.168.131.134:80>

      ServerAdmin 863380404@qq.com

      DocumentRoot "/"

      ServerName www.taobao.com

      ErrorLog "logs/taobao-error_log"

      CustomLog "logs/taobao-access_log" common

      <Directory "/">

      options Indexes FollowSymLinks

      allowoverride none

      require all granted

      </Directory>

    5. </VirtualHost>
    6. 在192.168.131.134这台linux客户端测试结果

# curl http://192.168.131.134/aliasweb/alias/index.html

this is a alias page

  1. # vim /usr/local/apache2/etc/extra/httpd-vhosts.conf

  2. # /usr/local/apache2/bin/apachectl restart
  3. # curl http://192.168.131.134/aliasweb/index.html

    this is a alias page #跟上面显示结果一样

posted @ 2015-10-28 18:42  【风语】  阅读(263)  评论(0)    收藏  举报