Chinaunix首页 | 论坛 | 博客
  • 博客访问: 124386
  • 博文数量: 37
  • 博客积分: 2094
  • 博客等级: 大尉
  • 技术积分: 380
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-14 08:39
文章分类
文章存档

2010年(37)

分类: 系统运维

2010-03-17 18:35:21

Web服务又称环球信息网WWW(World Wide Web)服务,是Internet上最热门的服务之一。Web服务是一种交互式图形界面的Internet服务,具有强大的信息连接功能
APACHE是一款非常优秀的Web服务器端软件,全球的Apache Web服务器的数量占57%,比所有其他的Web服务器加起来的和还要多
Apache 的特性:
几乎可以运行在所有的计算机平台上
支持最新的HTTP/1.1 协议
支持虚拟主机
支持HTTP认证
支持安全SOCKET层(SSL)
可以被配置成代理服务器(#./configure --enable-proxy=shared)
APACHE的编译安装:
APACHE软件httpd-2.3.xx.tar.gz可以去官方网站下载httpd.apache.org
APACHE的安装
#tar zxvf httpd-2.3.xx.tar.gz -C /src(指定解压缩的目录)
#cd到解压的目录下,进行配置,生成make所需要的配置文件
#./configure --enable-mods-shared=all
#make :把源码程序编译成可执行的二进制程序
#make install把编译生成的二进制程序放到相应的地方,如/bin、/sbin里
APACHE指令:分为核心指令、附加指令、容器指令
容器指令只能在所包含的容器定义范围下应用,包括,,,
例如:

      Order  allow,deny
      Deny from 192.168.1.0 不允许这个网段里的机器访问上面的目录
      Allow from all 允许所有主机来访问上面的目录
httpd.conf是apache的配置文件,主要字段含义
Listen 80 服务器的监听端口,如:
Listen 192.168.1.123:80只监听特定ip地址的80端口
DocumentRoot “/usr/local/apache2/hdocs”设置根文档路径,即网页文件存放的位置
Options Indexes此项功能:如果没有缺省主页时显示文件列表
Options FollowSymLinks 允许符号链接跟随,访问不在本目录下的文件
AllowOverride None/All禁止/允许读取.htaccess文件
DirectoryIndex index.html定义缺省主页的
AccessFileName .htaccess:指定保护目录配置文件的名称
UserDir public_html定义个人主页目录
系统用户的个人主页设置:
首先来修改apache的主配置文件:
355 #UserDir disable
362 UserDir public_html
将第355行加上#,而将第362行的注释去掉
其目的就是让apache支持个人主页。
添加用户,并修改个人主页的内容:
[root@uplooking ~]# useradd cisco
[root@uplooking ~]# passwd cisco
Changing password for user cisco.
New UNIX password:
BAD PASSWORD: it is too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@uplooking ~]# su - cisco
[cisco@uplooking ~]$ chmod o+x .
[cisco@uplooking ~]$ ll -d .
drwx-----x 4 cisco cisco 4096 01-22 16:45 .
[cisco@uplooking ~]$ mkdir public_html
[cisco@uplooking ~]$ cd public_html/
[cisco@uplooking public_html]$ vim index.html
[cisco@uplooking public_html]$ cat index.html
hello cisco!
 
访问测试:

密码保护目录设置
这种认证方式的基本思想是:Apache 启动认证功能后,即启用AllowOverride功能,就可以在需要限制访问的目录下建立一个名为.htaccess 的文件,指定认证的配置命令,则Apache就会在每一个目录中查找.htaccess文件。当用户第一次访问该目录的文件时,浏览器会显示一个对话框,要求输入用户名和密码,进行用户身份的确认。若是合法用户,则显示所访问的页面内容,此后访问该目录的每个页面,浏览器自动送出用户名和密码,不用再输入了,直到关闭浏览器为止。
步骤:
添加用户:
[root@uplooking ~]# useradd cisco

[root@uplooking ~]# passwd cisco

Changing password for user cisco.

New UNIX passwd:

BAD PASSWORD: it is too short

Retype new UNIX passwd:

passwd: all authentication tokens updated successfully.

[root@uplooking ~]#

建立要保护的目录private,在此目录中建立网页文件:

[root@uplooking ~]# su - cisco

[cisco@uplooking ~]$ chmod o+x .

[cisco@uplooking ~]$ ll -d .

drwx-----x 4 cisco cisco 4096 01-22 16:36 .

[cisco@uplooking ~]$ mkdir -p public_html/private

[cisco@uplooking ~]$ ls

public_html

[cisco@uplooking ~]$ cd public_html/

[cisco@uplooking public_html]$ ls

private

建立网页文件:

[cisco@uplooking private]$ pwd

/home/cisco/public_html/private

[cisco@uplooking private]$ vim index.html

[cisco@uplooking private]$ cat index.html

hello everybody!

[cisco@uplooking private]$ ll

总计 4

-rw-rw-r-- 1 cisco cisco 17 01-22 16:41 index.html

新增加密文件,并添加一个访问账号:

[root@uplooking ~]# cd /home/cisco/

[root@uplooking cisco]# htpasswd -c .htpasswd ibm

New password:

Re-type new password:

Adding password for user ibm

增加一个帐号使用-c选项,建立第二帐号不用-c选项,-m选项是修改用户密码

[root@uplooking cisco]# cat .htpasswd

ibm:umQ09aNxjg2K

建立.htaccess文件:

[root@uplooking private]# pwd

/home/cisco/public_html/private

[root@uplooking private]# vim .htaccess

[root@uplooking private]# cat .htaccess

AuthName "cisco"

AuthType Basic

AuthUserFile /home/cisco/.htpasswd

require valid-user

•AuthName “private passwd”//在密码框里显示文字
•AuthType Basic //身份验证时的编码方式
•AuthUserFile /home/test/.htpasswd //密码文件存放的地方,一定是绝对路径。
•require valid-user /允许.htpasswd文件里的用户能访问网页目录

修改APACHE的主配置文件/etc/httpd/conf/http.conf:
993

994       AllowOverride All

995

[root@uplooking ~]# service httpd restart

停止 httpd:                       [确定]

启动 httpd:                       [确定]

************得支持个人主页**************

测试:

在URL中输入:

将会出现如下画面:

输入用户名:ibm

密码:*****

就可以正确访问了:

设置apache的虚拟主机:
虚拟主机是指在同一台服务器实现多个Web站点,对于小企业来说不需要有专门的Web服务器来搭建自己的Web站点
虚拟主机分为:
1:基于IP的虚拟主机
2:基于名字的虚拟主机

基于IP的虚拟主机:每个虚拟主机都有自己的IP地址
基于名字的虚拟主机:每个虚拟主机IP地址相同,主机名不同
虚拟主机指令属于容器指令
#ifconfig eth0:0 192.168.1.2 up临时增加IP地址
[root@uplooking ~]# ifconfig eth0:0 202.100.1.88 up

[root@uplooking ~]# ifconfig eth0:0

eth0:0 link encap:Ethernet HWaddr 00:0C:29:9C:B2:EA

       inet addr:202.100.1.88 Bcast:202.100.1.255 Mask 255.255.255.0

       UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

       Interrupt:67 Base address:0x2000

#cp ifcfg-eth0 ifcfg-eth0:0永久增加IP地址,再对ifcfg-eth0:0进行编辑
#service network restart

基于IP的虚拟主机:
一个虚拟主机的所有配置指令都包含在段中了,每个虚拟主机一段。需要一个具备多IP地址的服务器,再配置DNS服务器,给每个IP地址以不同的域名

编辑httpd.conf文件,增加如下内容


ServerName vhost1.abc.com
DocumentRoot /www/vhost1


ServerName vhost2.abc.com
DocumentRoot /www/vhost2

建立相应的网页文件
#mkdir -p /www/vhost1
#mkdri -p /www/vhost2
在vhost1和vhost2里建立网页文件index.html
注意:vhost1与vhost2必须在DNS里解析
然后进行访问测试:

基于名字的虚拟主机
浏览器和服务器通信时,服务器能够跟踪浏览器请求的是哪个主机名字。因此可以利用这个新特性,使用更轻松的方式设定虚拟主机。这种方式不需要额外的IP地址,但需要新版本的浏览器支持。这种方式已经成为建立虚拟主机的标准方式。要建立非IP基础的虚拟主机,多个域名是不可少的配置,因为每个域名就对应一个要服务的虚拟主机。因此需要更改DNS服务器的配置
当apache在读取httpd.conf过程中遇到NameVirtuaHost指令时,它为指定的IP地址建立一个虚拟主机表
当apache分析httpd.conf时,每当它遇见一个指令,该指令指定的IP地址与前面分配给虚拟主机驻留的IP地址相同时,它都在虚拟主机列表上为该IP地址添加虚拟主机
当它找到一个虚拟主机,其ServerName指令与输入请求的Host头部匹配时,apache就使用该虚拟主机容器中的配置来响应该请求,即使用多个名字指向同一个ip地址

配置基于名字的虚拟主机,修改httpd.conf
NameVirtualHost 192.168.2.1

ServerName

DocumentRoot /www/sohu


ServerName

DocumentRoot /www/yahoo

配置文件的一些说明:
配置文件:/etc/httpd/conf/httpd.conf
ServerType standalone //定义服务器启动方式
ServerRoot "/etc/httpd" //指定守护进程httpd的运行目录
PidFile run/httpd.pid此文件记录httpd守护进程的进程号
Timeout 120//定义客户程序和服务器连接的超时间隔(秒),超时则服务器将断开与客户机的连接
KeepAlive On// KeepAlive 配置指令决定当处理完用户发起的HTTP 请求后是否立即关闭 TCP 连接,如果 KeepAlive 设置为On,那么用户完成一次访问后,不会立即断开连接,如果还有请求,那么会继续在这一次 TCP 连接中完成,而不用重复建立新的 TCP 连接和关闭TCP 连接,可以提高用户访问速度。支持HTTP1.1版本的一次连接多次传输功能,但需要较新浏览器支持,最好打开。
MaxKeepAliveRequests 100//一次连接中可以进行的HTTP请求的最大请求次数,0是不限制
KeepAliveTimeout 15//一次连接中的多次请求传输之间的时间,如果服务器已经完成了一次请求,但一直没有接受到客户程序的下一次请求,在间隔超过了这个参数设置后,服务器就断开连接
MinSpareServers 5 //设置最少的空余子进程数量
MaxSpareServers 20 //设置最多的空闲子进程数量
StartServers 5//设置httpd启动时启动的子进程副本数量
MaxClients 256//服务器支持的最多的并发访问的客户数
MaxRequestsPerChild 4000//每个子进程处理服务请求次数,0支持每个副本进行无限次的服务处理
以上这些设置默认,不需要太多更改
ServerAdmin
//web服务器的管理员email地址,HTTP出现错误时返回给浏览器,以便让web使用者和管理员联系
DocumentRoot "/var/www/html"
Options FollowSymLinks:访问根文档目录之外的目录
AllowOverride None:不需要查看目录下的访问控制(.htaccess)
UserDir public_html 默认用户主页存放的目录名称
DirectoryIndex index.html index.html.var 默认支持的网页格式
AccessFileName .htaccess 目录加密所关系的文件名

有关apache的白名单和黑名单:
配置文件中一般对目录设定
 Order Deny,Allow
 Allow from All
先检查禁止设定,没有禁止的全部允许
    Order Allow,Deny
 Deny from All
 无条件禁止访问
    Order Deny,Allow
 Deny from ip1 ip2
 禁止ip1和ip2访问
或者这样设定:
 Order Allow,Deny
 Allow from all
 Deny from ip1 ip2
第二句allow允许了访问,但由于在order中allow不是最后规则,因此还需要看有没有deny规则,于是到了第三句,符合ip1和ip2的访问就被禁止了
注意,order决定的“最后”规则非常重要
例子:
Order配置项,定义控制顺序
 先允许后拒绝,默认拒绝所有:Order allow,deny
 先拒绝后允许,默认允许所有:Order deny,allow
Allow、Deny配置项,设置允许或拒绝的地址
 Deny from address1 address2 …
 Allow from address1 address2

    Order allow,deny
    Allow from 192.168.0.0/24
    Deny from 192.168.0.100

下面是两个错误的例子和改正方式:
 Order Deny,Allow
 Allow from all
 Deny from domain.org
错误:想禁止来自domain.org的访问,但是deny不是最后规则,apache在处理到第二句allow的时候就已经匹配成功,根本就不会去看第三句。
解决方法:Order Allow,Deny,后面两句不动,即可。
    Order Allow,Deny
 Allow from ip1
 Deny from all
错误:想只允许来自ip1的访问,但是,虽然第二句中设定了allow规则,由于order中deny在后,所以会以第三句deny为准,而第三句的范围中又明显包含了ip1(all include ip1),所以所有的访问都被禁止了。
解决方法一:直接去掉第三句。
解决方法二:
 Order Deny,Allow
 Deny from all
 Allow from ip1

阅读(1536) | 评论(0) | 转发(0) |
0

上一篇:DNS服务

下一篇:SENDMAIL服务

给主人留下些什么吧!~~