Apache服务器的搭建,尚观Day13

 第一、Apache服务器的搭建

    1、基本概念

    网站页面的技术:静态和动态
        静态页面:除了格式化的标签以外,页面有什么内容就有什么内容 ,一般页面的后缀:
                .html  .htm .shtml   
        动态页面:使用动态脚本,编译类型的代码(asp,php ;  .aspx , .jsp),一般都连接数据库,这页面就是一些脚本代码,并不是你最终看到的样子


    2、常见的web服务的类型:
            IIS    : asp , aspx ,cgi 通过外部模块还可以处理 php
            apache    :  php , cgi ,perl
            weblogic,tomcat :  调用apache ,才能运行 jsp
            nginx    :  除里轻量型页面比较好


    3、apache
        软件包:
        yum   install httpd  httpd-devel -y
    
        进程、服务名字:httpd

        工作目录: /etc/httpd
        主配置文件: /etc/httpd/conf/httpd.conf
        

    4、配置参数的说明

Timeout 120  处理一个请求连接的超时时间

KeepAlive 源码包是默认On ,  rpm 是 off  保持长效的http会话 ,  当页面包含的图片比较多的时候,开启这个就比较好

KeepAliveTimeout   在同一个连接当中,等待下一个新请求之前的时间,如果时间过了,就把建立好的连接断开

MaxKeepAliveRequests 在保持对话当中,最多可以接受的请求数目


StartServers       8   <---默认启动服务的时候启动多少个处理进程

MinSpareServers    5  <---最少空闲的服务进程数

MaxSpareServers   20  <---最多的空闲的服务进程数

ServerLimit      256  <--- 服务器最多能产生的服务进程数

MaxClients  256    <---最多能接受的客户端连接数量
    
MaxRequestsPerChild  4000 <---单个进程最多处理的请求数目

Include conf.d/*.conf   <---包含别的配置文件,这些配置文件在 工作目录中的 conf.d下

    5、配置实例

    例子1:

    安装完重启 service httpd restart

    访问http://ip

    看到一个欢迎的测试页面

    DocumentRoot "/var/www/html"  <---默认网站的根目录

    如果访问 http://ip/hello.html  ,也就是告诉 apache 在/var/www/html目录下找hello.html


    例子2:取消测试页面
    原因:没有默认首页
    默认首页定义参数:
        DirectoryIndex index.html index.html.var index.php
    解决方法:建立一个默认页面
        echo "Welcome home"  > /var/www/html/index.html

    修改参数:DirectoryIndex hello.html index.html index.html.var  <--看效果


    例子3:修改默认的网站根目录

    1、修改默认网站根目录参数:
    DocumentRoot "/www"  <---修改
    2、重启服务
    service httpd restart
    3、建立默认首页
    echo "this is /www"  > /www/index.html
    4、测试访问
    http://ip/

    思考:如果没有第三步,你看到的是什么样的页面?


    例子4、学习容器定义标签和访问控制

    容器标签的分类: Directory  Files  Location
    其中 Directory 和 Files 是针对文件系统,Location是针对网络位置的

<Directory "/var/www/html">   <---对原来的网站根目录进行一些控制
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

    参数说明:
Indexes  《---当找不到默认首页的时候,就把该目录下的文件和子目录都列表出来,不支持根目录的列表
FollowSymLinks  《---允许跟踪符号连接文件
AllowOverride  《--定义 对 .htaccess文件中的指令的支持
Order allow,deny
Allow from all    


小试牛刀1:
<Directory "/www>   
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

小试牛刀2:
<Directory "/www>   
    Options  FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

    
Order allow,deny  <---先匹配允许,再匹配拒绝,如果允许和拒绝冲突了,就取决deny
Order deny,allow  <---先匹配允许,再匹配拒绝,如果允许和拒绝冲突了,就取决allow


小试牛刀3:
<Directory "/www>   
    Options  FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
    Deny from all   <---由于 allow 和deny 冲突,最后deny生效
</Directory>


小试牛刀4:
<Directory "/www>   
    Options  FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all   
    Allow from all  <---由于 allow 和deny 冲突,最后allow生效
</Directory>

常用的情景:

    内部网站,只允许10.1.1.0/24

Order deny,allow
deny from all
allow from 10.1.1.0/255.255.255.0


    只想禁止某个网络或者某个主机

Order allow,deny
allow from all
deny from 10.1.1.141 10.1.0.0/255.255.255.0


    
    只允许 10.1.1.0/24这个网段去访问,但这个网段里面的IP为10.1.1.141就不能访问
Order allow,deny
allow from 10.1.1.0/255.255.255.0
deny from 10.1.1.141



小试牛刀5:

[root@slave www]# ls /www/sb
hello.html  Hello.html  sb.html

<Directory "/www">
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
<Files "hello.html">  <---所有名字为hello.html文件都不能访问,但区分大小写,由于Linux是对大小敏感
    Order allow,deny
    Deny from 10.1.1.20
</Files>

</Directory>


<Location "/sb">  《---  /Sb 不匹配 ---》
    Order deny,allow
    Deny from 10.1.1.20        
</Location>

他能够匹配什么地址?
http://ip/sb/     匹配
http://ip/sb/fs      匹配
http://ip/sbs/    不匹配

    Location的特点:
        1、由于他不与文件系统挂钩,所以你的设定对于那些大小不敏感的文件系统完全可以通过大小去突破,举例:
        在Windows存在一个 sb 目录,那么访问的时候采用这样URL: http://ip/sb  ,就能成功禁止掉
        但是如果对方使用 http://ip/Sb  ,由于 apache在windows下对大小不敏感,所以loacation对这样的访问失效
        
        apache判断是否允许你访问----》如果允许就去读取对应的硬盘文件---》

http://www.baidu.com   /sb

注意: <Files>  还有 <Location> 标签都不支持AllowOverride指令

小试牛刀6:

<Location "/sb/fs">  《---  /Sb 不匹配 ---》
    Order deny,allow
    Deny from 10.1.1.20        
</Location>

他能够匹配什么地址?
http://ip/sb/     不匹配
http://ip/sb/fs      匹配
---------------

引申:
    怎么把Location改成 Directory
<Location "/sb">  《---  /Sb 不匹配 ---》
    Order deny,allow
    Deny from 10.1.1.20        
</Location>


修改:
<Directory  "/www/sb">
    Order deny,allow
    Deny from 10.1.1.20    
</Directory>

注意:如果Location和Directory都是控制同一个资源的,谁生效?
    Location最后生效!



实例5:实现口令验证

    1、修改参数
增加AllowOverride All   <---这个参数只支持放在Directory里

<Directory "/www">
    Options FollowSymLinks
    AllowOverride All  <---启用口令验证
    Order allow,deny
    Allow from all
</Directory>

    2、建立.htaccess文件

如果你要对整个网站进行控制的话,就在网站的跟目录下建立:
vim /www/.htaccess

authname "Just for test"
authtype Basic
authuserfile /etc/httpd/userpasswd  <---注意路径,不能放在网站的根目录,防止下载
require valid-user

如果是对网站的某个子目录进行验证,就放在该子目录下:

vim /www/sb/.htaccess

authname "Just for test"
authtype Basic
authuserfile /etc/httpd/userpasswd  <---注意路径,不能放在网站的根目录,防止下载
require valid-user

    3、创建用户帐号(与系统帐号没有任何关系)
    
[root@slave www]# htpasswd -c /etc/httpd/userpasswd tom
New password:
Re-type new password:
Adding password for user tom
[root@slave www]# htpasswd  /etc/httpd/userpasswd mary
New password:
Re-type new password:
Adding password for user mary



实例6:建立系统帐号的个人空间

    1、修改配置文件:
<IfModule mod_userdir.c>
    #UserDir disable
    UserDir public_html
</IfModule>

<Directory /home/*/public_html>  《---把原来注释掉的整个配置段打开
    AllowOverride FileInfo AuthConfig Limit
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    <Limit GET POST OPTIONS>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>



    2、切换到tom用户,然后创建个人空间页面
[root@slave www]# su - tom
[tom@slave ~]$ pwd
/home/tom
[tom@slave ~]$ mkdir public_html
[tom@slave ~]$ ll
总计 4
drwxrwxr-x 2 tom tom 4096 11-04 08:51 public_html
[tom@slave ~]$ echo "This is Tom's Home" > ~/public_html/index.html


    3、修改用户目录的权限
    chmod 711 /home/tom

    4、service httpd reload

    测试:http://10.1.1.92/~tom/

========================================================================

实例7:虚拟空间  <---- 一台服务器跑多个网站


实验环境:
10.1.1.20  <---浏览器测试的客户端
10.1.1.67  <---DNS服务器
10.1.1.92 10.1.1.93  httpd服务器

以下是10.1.1.67的DNS区域文件配置,忘记了可以参考ule_12_dns.txt
$TTL 86400
@       IN      SOA     upl.com.        root.upl.com. (
                                        2009110303
                                        1M
                                        10M
                                        1D
                                        1H)
@       IN      NS      mail.upl.com.
        IN      MX 0    mail.upl.com.
mail    IN      A       10.1.1.67
web     IN      A       10.1.1.92
bbs     IN      A       10.1.1.93
www     IN      CNAME   web

-----------------------------------------
    @基于IP的虚拟空间

    1、服务器应该有多个IP
    原来eth0已经有一个IP:10.1.1.92
    ifconfig eth0:1 10.1.1.93 netmask 255.255.255.0

    2、配置httpd.conf 启用虚拟机功能


<VirtualHost 10.1.1.92:80>  <--当使用http://10.1.1.92或者http://web.upl.com的时候匹配
    ServerAdmin [email protected]        <---管理员的邮件地址
    DocumentRoot /web            <---这个虚拟空间的网站根目录
    ServerName web.upl.com        <---这个虚拟空间绑定的域名
    ErrorLog logs/web.upl.com-error_log    <---这个虚拟空间的错误日志
    CustomLog logs/web.upl.com-access_log common <---这个虚拟空间的访问日志
    <Directory "/web">
        Order deny,allow
        Allow from all  
    </Directory>

</VirtualHost>

<VirtualHost 10.1.1.93:80> <--当使用http://10.1.1.93或者http://bbs.upl.com的时候匹配
    ServerAdmin [email protected]
    DocumentRoot /bbs
    ServerName bbs.upl.com
    ErrorLog logs/bbs.upl.com-error_log
    CustomLog logs/bbs.upl.com-access_log common
    <Directory "/web">
        Order deny,allow
        Deny from 10.1.1.21  
    </Directory>
</VirtualHost>

    重新加载配置文件
    service httpd reload


    3、建立对应的目录和测试文件
[root@slave www]# mkdir /web
[root@slave www]# mkdir /bbs
[root@slave www]# echo "This is  /web" > /web/index.html
[root@slave www]# echo "This is  /bbs" > /bbs/index.html

    
    4、测试
必须修改作为测试的客户端的resolv.conf文件,指向使用自己的DNS服务器
vim /etc/resolv.conf
nameserver 10.1.1.67

[root@dns 10]# nslookup web.upl.com
Server:         10.1.1.67
Address:        10.1.1.67#53

Name:   web.upl.com
Address: 10.1.1.92

[root@dns 10]# nslookup bbs.upl.com
Server:         10.1.1.67
Address:        10.1.1.67#53

Name:   bbs.upl.com
Address: 10.1.1.93


真正的测试:
    http://10.1.1.92  或者 http://web.upl.com
    http://10.1.1.93  或者 http://bbs.upl.com



这种方案缺点:需要多个IP。 IP资源很珍贵!!!
    
----------------------------------------
    @基于端口的虚拟空间

    1、修改配置文件
Listen  80
Listen  8080        《---添加8080监听

<VirtualHost 10.1.1.92:8080>    《---8080端口
    ServerAdmin [email protected]
    DocumentRoot /ftp
    ServerName ftp.upl.com
    ErrorLog logs/ftp.upl.com-error_log
    CustomLog logs/ftp.upl.com-access_log common
</VirtualHost>


    2、建立目录和测试文件
[root@slave /]# mkdir /ftp
[root@slave /]# echo "This is /ftp"  > /ftp/index.html

    重启服务: service httpd restart


    3、客户端测试

    http://10.1.1.92:8080

方案缺点:访问的时候要指定端口,否则无法访问,而且不是所有人都知道端口

--------------------------------------

    @基于域名的虚拟空间,实现同一IP上绑定多个网站

实验环境:
$TTL 86400
@       IN      SOA     upl.com.        root.upl.com. (
                                        2009110303
                                        1M
                                        10M
                                        1D
                                        1H)
@       IN      NS      mail.upl.com.
        IN      MX 0    mail.upl.com.
mail    IN      A       10.1.1.67
web     IN      A       10.1.1.92
bbs     IN      A       10.1.1.92
www     IN      CNAME   web


    1、
NameVirtualHost *:80    <---打开这个表示启用基于域名的虚拟空间技术

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /web
    ServerName web.upl.com
    ErrorLog logs/web.upl.com-error_log
    CustomLog logs/web.upl.com-access_log common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /bbs
    ServerName bbs.upl.com
    ErrorLog logs/bbs.upl.com-error_log
    CustomLog logs/bbs.upl.com-access_log common
    <Directory "/web">
        Order deny,allow
        Deny from 10.1.1.21  
    </Directory>
</VirtualHost>

    2、测试

    service httpd reload
    http://web.upl.com
    http://bbs.upl.com



备忘:alias

<VirtualHost 10.1.1.93:80>
    ServerAdmin [email protected]
    DocumentRoot /web
    ServerName web.upl.com
    ErrorLog logs/web.upl.com-error_log
    CustomLog logs/web.upl.com-access_log common

<Directory "/web">
    Options FollowSymLinks   <---允许跟踪软连接
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

建立软连接的好处: 轻松扩大容量,文件目录方便灵活


还可以通过Alias实现类似的功能:

<VirtualHost 10.1.1.93:80>
    ServerAdmin [email protected]
    DocumentRoot /web
    ServerName web.upl.com
    ErrorLog logs/web.upl.com-error_log
    CustomLog logs/web.upl.com-access_log common
    Alias /lntobbs  "/bbs"    <---定义别名,前面的访问的别名,后面是链接到系统上的绝对路径
<Directory "/web">
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

访问的方式:http://web.upl.com/lntobbs/


======================
vim /etc/ntp.conf

server 10.1.1.1  
restrict 10.1.1.0 mask 255.255.255.0 nomodify notrap


service ntpd restart

测试:5分钟找另外一台没有配置ntpd服务的电脑
ntpdate 10.1.1.20

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章