apache参数详解 Linux Apache Web 服务器终极教程

 Apache的主要特征是:

.  可以运行上所有计算机平台;

.  支持最新的HTTP 1.1协议;

.  简单而强有力的基于文件的配置;

.  支持通用网关接口CGI;

.  支持虚拟主机;

.  支持HTTP认证;

.  集成Perl脚本编程语言;

.  集成的代理服务器;

.  具有可定制的服务器日志;

.  支持服务器端包含命令(SSI)

.  支持安全Socket层(SSL)

.  用户会话过程的跟踪能力;

.  支持FastCGI;

.  支持Java Servlets。

安装Apache

  下面我们就开始漫漫征服Apache之旅,通过循序渐进的需求实例,一步步
地学习使用Apache,从入门到精通。

系统需求

  运行Apache不需要太多的计算资源。它在有6-10MB硬盘空间和8MB RAM的
Linux系统上运行得很好。然而,只运行Apache可能不是你想做的事情。更可能
的是,你想运行Apache来提供WWW服务、启动CGI进程以及充分利用所有WWW能够
提供的令人惊奇的功能。在这种情况下,你需要提供反映负载要求的额外的磁
盘空间和内存空间。也就是说,如果仅仅是启动WWW服务并不需要太多的系统资
源,但是想要能为大量的客户提供服务就需要更多的系统资源。

获取软件

  你可以在http://www.apache.org中获得Apache的最新版。而几乎所有的
Linux发行版中均包含有Apache软件包,你也可以直接使用它。

需要注意的是,Apache软件包有两种:一种是源代码,下载后需要自己重新编
译;另一种是可执行文件,下载后只需解压就可以使用。

安装软件

  你可以通过以下三种方法安装Apache服务器。

  1.如果你安装的Linux版本中带用Apache的话,就在选择所要安装的服务
器的时候,将httpd这个服务选上,Linux安装程序将自动完成Apache的安装工
作,并做好基本的配置。

  2.使用可执行文件软件包,这比较适合那些对编译工作不是太熟悉的初级
用户,因为它相对比较简单。

  下载软件包apache_1.2.4.e.tar.gz

  tar xvzf apache_1.2.4.e.tar.gz

  这就完成了安装工作,简单吧!

  如果你使用的是RedHat Linux的话,你也可以下载apache_1.2.4.rpm软件
安装包,然后使用rpm -ivh   apache_1.2.4.rpm命令安装。

  3.如果你想把Apache服务器充分利用起来的话,就一定要自己编译
Apache定制其功能。

下载包含Apache源代码的软件包apache_1.2.4.tar.gz; 然后用tar命令将它解
开; 将当前目录改变为Apache源代码发行版的src目录; 将配置样本文件
(Configuration.tmpl)复制为Configuration文件;

编辑Configuration文件中的配置选项:

Makefile配置选项:一些编译选项:

. “CC=”一行指定用什么编译软件编译,一般为”CC=gcc”;

. 如果需要将额外的标志(参数)指定给C编译软件,可以使用:

EXTRA_CFLAGS=

EXTRA_LFLAGS=

. 如果系统需要特殊的库和包含文件,可以在这里指定它们:

EXTRA_LIBS=

EXTRA_INCLUDES=

. 如果你要改变代码优化设置的话,你须将下面一句去掉注释,然

后改成你所需要的值:

#OPTIM=-O2

Rule配置选项:用来决定需要什么功能,一般情况下无需改变。

模块配置:模块是Apache的组成部分,它为Apache内核增加新功能。通过使用
模块配置,可以自定义在Apache服务器中需要什么功能,这个部分也是Apache
灵活性的表现。模块配置行如下所示:

AddModule modules/standard/mod_env.o

如果你需要Apache服务器具备什么功能,就将那个模块用AddModule语句加到配
置文件Configuration中去。

下表列出了Apache的模块功能:

模块名 功能 缺省

mod_access 提供基于主机的访问控制命令 y

mod_actions 能够运行基于MIME类型的CGI脚本或HTTP请求方法 y

mod_alias 能执行URL重定向服务 y

mod_asis 使文档能在没有HTTP头标的情况下被发送到客户端 y

mod_auth 支持使用存储在文本文件中的用户名、口令实现认证 y

mod_auth_dbm 支持使用DBM文件存储基本HTTP认证 n

mod_auth_mysql 支持使用MySQL数据库实现基本HTTP认证 n

mod_auth_anon 允许以匿名方式访问需要认证的区域 y

mod_auth_external支持使用第三方认证 n

mod_autoindex 当缺少索引文件时,自动生成动态目录列表 y

mod_cern_meta 提供对元信息的支持 n

mod_cgi 支持CGI y

mod_dir 能够重定向任何对不包括尾部斜杠字符命令的请求 y

mod_env 使你能够将环境变量传递给CGI或SSI脚本 n

mod_expires 让你确定Apache在服务器响应请求时如何处理Expires y

mod_headers 能够操作HTTP应答头标 y

mod_imap 提供图形映射支持 n

mod_include 使支持SSI n

mod_info 对服务器配置提供了全面的描述 y

mod_log_agent 允许在单独的日志文件中存储用户代理的信息 n

mod_log_config 支持记录日志 y

mod_log_referer 提供了将请求中的Referer头标写入日志的功能 n

mod_mime 用来向客户端提供有关文档的元信息 y

mod_negotiation 提供了对内容协商的支持 y

mod_setenvif 使你能够创建定制环境变量 y

mod_speling 使你能够处理含有拼写错误或大小写错误的URL请求 n

mod_status 允许管理员通过WEB管理Apache y

mod_unique_id 为每个请求提供在非常特殊的条件下保证是唯一的标识 n

在src目录下执行:”. /configure”;

编译Apache:执行命令”make”;

根据机器性能的不同,经历一段5-30分钟的编译,就大功告成了。

将编译好的可执行文件httpd复制到/etc/httpd/bin目录下;

将Apache发行版的配置文件:access.conf、httpd.conf、mime.types、
srm.conf文件复制到/etc/httpd/conf目录下。到此为止,安装完成。

一些说明

在Red Hat Linux 6.0中,Apache将自己的所有配置文件和日志文件放在了
“/etc/httpd”目录下,其中”/etc/httpd/conf”下为配置文
件,”/etc/httpd/log”下为日志文件。

同时,它将建立”/home/httpd”目录,并在其下建立三个子目录:”html/”:在
这个目录下存放HTML(主页)文件;”cgi-bin/”:在这个目录下可以存放一些
CGI程序;”icons/”:在这个目录下是服务器自带的一些图标。

配置Apache基础篇,让WWW服务器跑起来

Apache 服务器软件的配置文件主要有:”access.conf”:用于设置系统中的存
取方式和环境;”httpd.conf”:用于设置服务器启动的基本环境;
“srm.conf”:主要用于做文件资源上的设定;”mime.type”:记录Apache服务器
所能识别的MIME格式。

在具体讲解之前,我们必须告诉大家,Apache已经在安装时就采用了一系列的
缺省值,已经让WWW服务器跑起来了。你只需要将装上Linux+Apache的主机联入
Internet,然后将主页存放到”/home/httpd”目录下即可。

下面介绍一些最主要的配置选项的含义,以便大家用最小的精力、最小的配置
准备好服务器。

httpd.conf

tpd.conf是主配置文件。它告诉服务器将如何运行。

一、最重要的配置选项ServerType standalone | inetd

  这个配置选项指定如何运行WEB服务器。Apache可以使用两种方法来运行服
务器:standalone(独立的)和inetd(由inetd运行的)。standalone参数表示
WEB服务进程以一个单独的守候进程的方式在后台侦听是否有客户端的请求,如
果有就生成一个子进程来为其服务。 inetd参数表示WEB服务不是以一个单独的
守候进程的形式支持。而是由Inetd这个超级服务器守候进程进行代劳,当它收
到一个客户端的WEB服务请求的时候,再启动一个WEB服务进程为其服务。从功
能的角度看,这两种方法几乎是相同的。但它们之间实际有很大区别,区别在
于服务器的性能。一个由 inted运行的服务器进程在它结束对请求服务的同时
立刻退出。而在standalone模式下,子WWW服务器进程在退出之前要挂起一段时
间,这就给它们提供了机会,可以重新用来服务新的请求。

在standalone模式下,不存在对每个请求启动新进程的开销,所以它的效率更
高;而inetd模式被认为比standalone模式更具安全性。

standalone模式:

此种模式下,WWW服务器侦听特定端口的连接请求。当客户机发出到特定端口地
址的连接请求时,主服务器进程启动子WWW服务进程来服务该请求。另外还需要
告诉主服务器进程侦听的特定端口地址,使用命令:

Port [number] (缺省值为80)

inetd模式

inetd 是侦听有小于1024的端口连接请求的Internet守护进程(一个服务器进
程)。与前面的方法不同,当客户系统发出到WWW服务器的连接请求时, inetd
启动一个WWW服务器进程,由此进程服务此请求,完成服务后即退出。如果选择
通过inetd服务器来运行Apache,需要编辑 /etc/inetd.conf文件为Apache添加
一条新的记录:

httpd stream tcp nowait httpd /etc/httpd/bin/httpd -f
/etc/httpd/conf/httpd.conf

修改了/etc/inetd.conf文件后,就需要修改/etc/services中添加一行

httpd 80/tcp httpd

做完以上修改后,需要重新启动inetd进程。首先,使用以下命令取得inetd的
进程ID:

ps auxw |grep inetd

然后执行命令:kill -HUP

在RedHat Linux中,默认是采用inetd服务器来运行Apache,所以只要你在安装
时选择了httpd,以上工作在安装时就已经代你完成了。

二、其它配置选项

  Server Admin命令,用来设置WEB管理员的E-Mail地址。这个地址会出现在
系统连接出错的时候,以便访问者能够将情况及时地告知WEB管理员。

命令格式: Server Admin [you E-Mail address]

例:Server Admin admin@xxx.com

ErrorLog命令,用来指定错误记录文件名称和路径。

命令格式: ErrorLog [log filename]

例:ErrorLog /var/httpd/error.log

Timeout命令,只要客户端超过这里设定的秒数还没有完成一个请求的话,服务
端将终止这次请求服务。如果网络速度较慢的话,建议在此设置较大的数值。
以给客户端更多机会。

命令格式: Timeout [second]

例:Timeout 120

ServerRoot命令,它指定在何处保存服务器的配置、错误及日志文件。

命令格式: ServerRoot [fully qualified path name]

例:ServerRoot /etc/httpd

ServerName命令,它配置服务器的Internet主机名

命令格式: ServerName [host name]

例:ServerName www.xxx.com

srm.conf

srm.conf是资源配置文件,用它来告诉服务器你想在WWW站点上提供什么资源以
及在哪里和如何提供们。

DocumentRoot命令,用来指定主文档的地址。

命令格式: DocumentRoot [Path]

例:DocumentRoot /home/httpd/html

UserDir 命令,用来指定个人主页的位置。如果你有一个用户test,那么它主
目录是”/home/test”,当客户端输入”http: //yourdomain/~test”;;,系统就
会到对应的目录”/home/test/UserDir/”中去寻找。其中”UserDir”就是在
UserDir命令中设置的指定目录。

命令格式: UserDir [Path]

例: UserDir Public_html

DirectoryIndex 命令,用来声明首页文件名称。一般地,我们使用
“index.html”或”index.htm”作为首页的文件名。如果这样设置后,那么客户端
发出 WEB服务请求时,将首先调入的主页是在指定目录下文?quot;index.html”或
“index.htm”。

命令格式: DirecotryIndex [filename]

例:DirecotryIndex index.html index.htm

ScriptAlias命令,为脚本程序目录起个别名,具体可见4.7小节。

命令格式: ScriptAlias [/alias/] [fullly qualified path for
cript
directory]

例: ScriptAlias /cgi-bin/ /home/httpd/cgi-bin

access.conf的配置

access.conf文件用来设置WWW站点上诸如文件、目录和脚本项目的访问权限。
该文件的第一段非注释部分如下:

Option Indexes Includes ExecCGI FollowSymLink

AllowOverride None

Order allow , deny

allow from all

大家应该注意到,这一个部分是以开始,以
结束的。这表示在其中间的部分都是针对指定目录
��”/home/httpd/html”而言的。

1.Option命令有很多的参数,各个参数的意义如下所示:

All 准许以下所有功能(MultiViews除外);

MultiViews 准许内容协商的Multiviews;

Indexes 若该目录下无index文件,则准许显示该目录下的文件以供选择;

IncludesNOEXEC 准许SSI(Server-side Includes),但不可使用#exec和
#include功能;

Includes 准许SSI;

FollowSymLinks 准许符号链接到其他目录;

ExecCGI 准许该目录下可以使用CGI。

2.而AllowOverride命令则是用来决定是否准许在”access.conf”文件中设定的
权限是否可以被在文件”.htaccess”中设定的权限覆盖。它有两个参数:

All 准许覆盖;

None 不准许覆盖。

3.Order命令:用来设定谁能从这个服务器取得控制。它也有两个参数:

allow 可以取得控制;

deny 禁止取得控制。

现在我们一起来看看关于目录”/home/httpd/html”的设置的含义:它使得这个
目录,如果不存在index.htm文件时,列出目录信息以供选择,准许SSI,允许
执行CGI程序,开启了动态连接。它不允许再使用在文件”.htaccess”中设定来
覆盖这里所设置的权限。使所有的人都可以取得控制。

该文件的第二段非注释部分如下:

Option ExecCGI

AllowOverride None

这个表示目录”/home/httpd/cgi”的设置为,当前目录下可以执行CGI程序。不
允许再使用在文件”.htaccess”中设定来覆盖这里所设置的权限。

需要说明的是,不同的LINUX系统中,可以在这个文件中看到的信息不完全相
同,但是根据这里给出的信息,大家可以参照命令的解释自行理解文件中的设
置,以及根据自己的需要进行相应的修改。

4.4 使新的配置生效

在上面,我们可能已经根据新的需求更改了相应的配置选项,如果我们要使得
这个新的配置立即生效。我们就必须重新启动WEB服务进程。在LINUX中,我们
可以十分方便地使用命令行来使得WEB服务进程重启。

/etc/rc.d/init.d/httpd restart

五、为用户开辟个人主页空间

如果我们利用了LINUX系统架设了一台WEB服务器,我们不仅可以存放公司的主
页,而且还可以为公司的每一个员工提供一块个人主页的空间。

首先,为需要个人主页空间的员工在LINUX上开设一个帐号。这样,它就拥有了
一个用户主目录”/home/用户帐号名”。

addusr 用户帐号名

passwd 用户帐号名

在用户主目录下建立一个目录”public_html”,然后为其设置相应的权限。

cd ~用户帐号名

mkdir public_html

chmod 755 public_html

确认在srm.conf文件中的UserDir命令设置的是public_html目录。让员工将自
己的个人主页上传到自己用户主目录下的public_html目录中。

现在就可以使用”http://www.company.com/~用户帐号名”来访问员工的个人主
页了。

用Apache实现虚拟主机服务

  什么是虚拟主机服务

  所谓的虚拟主机服务就是指将一台机器虚拟成多台WEB服务器。举个例子来
说,一家公司想从事提供主机代管服务,它为其它企业提供WEB服务。那么它肯
定不是为每一家企业都各准备一台物理上的服务器,而是用一台功能较强大的
大型服务器,然后用虚拟主机的形式,提供多个企业的WEB服务,虽然所有的
WEB服务就是这台服务器提供的,但是让访问者看起来却是在不同的服务器上获
得WEB服务一样。

  具体地说,就是,我们可以利用虚拟主机服务将两个不同
www.company1.comwww.company2.com的主页内容都存放在同一台主机上。而访
问者只需输入公司的域名就可以访问到它想得到的主页内容。 用Apache设置虚
拟主机服务通常可以采用两种方案:基于IP地址的虚拟主机和基于名字的虚拟
主机,下面我们分别介绍一下它们的实现方法。以便大家在具体的应用中能够
选择最合适的实现方法。

设置实现基于IP地址的虚拟主机服务实现前提

  这种方式需要在机器上设置IP别名,也就是在一台机器的网卡上绑定多个
IP地址去为多个虚拟主机服务。而且要使用这项功能还要确定在你的LINUX内核
中必须支持IP别名的设置,否则你还必须重新编译内核。

  下面举一个拥有两个虚拟主机的服务设置,以供参考。

2.配置步骤

假设,我们用来实现虚拟主机服务的机器,首先已经为自己提供了WEB服务,现
在将为新的一家www.company1.com提供虚拟主机服务。

规划IP地址:为虚拟主机申请新的IP地址。(假设本机IP地址为202.101.2.1)

www.company1.com 202.101.2.2

2) 让ISP作好相应的域名解析工作。

3) 为网卡设置IP别名:

/sbin/ifconfig eth0:0 202.101.2.2 netmask 255.255.255.0

4) 重新设置”/etc/httpd/conf/httpd.conf”,在文件中加入:

ServerAdmin webmaster@yourdomain.com

DocumentRoot /home/httpd/www.company1.com

ServerName www.company1.com

ErrorLog /var/log/httpd/www.company1.com/error.log

5)建立相应的目录。

mkdir /home/httpd/www.company1.com

mkdir /var/log/httpd/www.company1.com/error.log

6)将相应的主页内容存放在相应的目录中即可。

3.不利因素

这种虚拟主机的实现方法有一个严重的不足,那就是,每增加一个虚拟主机,
就必须增加一个IP地址。而由于IP地址空间已经十分紧张,所以通常情况下是
无法取得这么多的IP地址的。而且从某种意义上说,这也是一种IP地址浪费。
设置实现基于名字的虚拟主机服务而基于名字的虚拟主机服务,是比较适合使
用的一种方案。因为它不需要更多的IP地址,而且配置简单,无须什么特殊的
软硬件支持。现代的浏览器大都支持这种虚拟主机的实现方法。当然,这也就
是指一些早期的客户端浏览器也许不支持这种虚拟主机的实现方法。

  正是以上原因,我们没有理由不使用基于名字的虚拟主机服务而使用基于
IP地址的虚拟主机服务。配置基于名字的虚拟主机服务需要修改配置文
件?quot;/etc/httpd/conf/httpd.conf”,在这个配置文件中增加以下内容。

NameVirtualHost 202.101.2.1

ServerAdmin webmaster@yourdomain.com

DocumentRoot /home/httpd/www.company1.com

ServerName www.company1.com

ErrorLog /var/log/httpd/www.company1.com/error.log

ServerAdmin webmaster@yourdomain.com

DocumentRoot /home/httpd/www.company2.com

ServerName www.company2.com

ErrorLog /var/log/httpd/www.company2.com/error.log

  也就是在基于IP地址的配置基础上增加一句:NameVirtualHost
202.101.2.1而已。在本例中,为了体现只需要增加一次,所以特别地设置了两
个虚拟主机服务。

最后也是建立相应的目录,将主页内容放到相应的目录中去就可以了。

配置CGI

1. 什么是CGI

CGI是独立于语言的网关接口规范,它实际上可以用任何广泛流行的应用程序开
发语言来实现,包括C、C++、Perl、Shell脚本甚至Java。

WEB服务器从客户端得到某个URL,它告诉WEB服务器,必须运行一个CGI外部应
用程序。那么WEB服务器启动这一应用程序,等待它完成并返回输出结果。最
后,它将此应用程序的输出结果传输给另一端的WEB客户。

2. 为CGI配置Apache

那么如何使Apache能处理CGI请求呢?我们必须通过相应的配置过程告知
Apache在哪里存储CGI程序,指明CGI程序的扩展等,以下我们逐一介绍一下设
置的内容与步骤。

创建存储CGI程序的目录

创建集中的CGI程序目录只是建立CGI环境的开始。如果要考虑提高安全

性的话,应将集中的CGI程序目录保存在DocumnetRoot目录外,使得访问者不能
直接访问CGI程序。 第一步:在DocumentRoot目录外创建一个目录,然后将所
有的CGI程序都集中存放在这个目录下。例如,你可创建一个
/home/httpd/public/apps的目录作为CGI程序的大本营。

第二步:为CGI程序目录创建别名,也就是编辑配置文件httpd.conf,加入:

ScriptAlias /cgi-bin/ /home/httpd/public/apps

这样做后,当客户www.xxx.com/cgi-bin/li.cgi时,WEB服务器就会自动执行
WEB服务器上的/home/httpd/public/apps/li.cgi文件。

第三步:为CGI目录设置合适的权限,一般是只允许Apache有读取和执行的权限
但没有写的权限。

允许用户访问cgi-bin

我们已经在4.5小节中介绍了如何给用户开辟个人主页空间,但如果你的

用户需要使他的主页更具有活力,往往会向你申请cgi-bin访问服务。下面我们
就介绍一个Apache服务器为用户提供的两种cgi-bin访问方法。

1)使用Directory或DirectoryMatch容器

当在配置文件srm.conf中用UserDir命令被赋值为目录名称时,Apache就

把它作为用户WWW站点的顶层目录。例如:

UserDir Public_html

Apachewww.xxx.com/~user的请求,就到/home/user/Public_html取出主页发
送给客户。

如果要为每个用户添加CGI支持就在Apache的配置文件access.conf中添加下列
配置:

Options ExecCGI

AddHandler cgi-script .cgi .pl

注:将DirectoryMatch换成Directory亦可

在这种方法中,Apache服务www.xxx.com/~user/cgi-bin请求翻译成为了
/home/user/Public_html/cgi-bin/,并允许执行任何带有正确扩展名(.cgi
或.pl)的CGI程序。

使用ScriptAliasMatch命令

通过使用ScriptAliasMatch命令,也可以为每个用户添加CGI支持。例如:

ScriptAliasMatch ~([a-z]+)/cgi-bin/(.*)
/home/$1/public_html/cgi-bin/$2

这个命令将用户名与$1相匹配,其中$1与~([a-z]+)相等。将/cgi-bin/后面的
任何内容与$2相匹配,其中$2与(.*)相等。

这个设置也就实现www.xxx.com/~user/cgi-bin/xxx.cgi请求解释为:

/home/user/Public_html/cgi-bin/xxx.cgi

那么大家想一想,如果你想将这个请求解释为:

/home/httpd/public/apps/xxx.cgi

该如何设置呢?对,应该是:

ScriptAliasMatch ~([a-z]+)/cgi-bin/(.*)
home/httpd/public /apps/$2

3. Apache为CGI提供的环境变量

Apache服务器提供了许多环境变量可以用于CGI程序的编写,了解它们也一定有
助于写出充分利用Apache的CGI程序,所以在此也对此作一简单介绍。

服务器变量

服务器变量由Apache设置用来通知CGI程序有关Apache的情况。通过使

用这些变量,CGI程序能确定有关服务器的不同信息:Apache的版本,管理员的
E-Mail地址等。

SERVER_SOFTWARE

这个变量是WWW服务器Apache的版本号,它的值形如:Apache/Version,如
Apache/1.3;

GATEWAY_INTERFACE

这个变量的值是当前CGI规范的版本号,其值形如:CGI/1.1;

SERVER_ADMIN

如果在httpd.conf文件中有设置站点管理员的e-mail地址的话,这个变量就会
存放着这个e-mail地址;

DOCUMENT_ROOT

这个变量存放在是被访问的WWW站点的DocumentRoot命令指定的值。

客户请求变量

Apache提供的有关客户请求方的环境变量有许多,以下只是有选择性地介绍一
些最常见的。

SERVER_NAME

此变量可以告诉CGI程序它访问的是哪一个主机。这个值可以是IP地址也可以是
完整的主机名;

HTTP_ACCEPT

此变量被赋值为客户所能接受的MIME类型的列表,如:HTTP_ACCEPT=image/gif;

HTTP_ACCEPT_CHARSET

此变量被赋值为客户所能接受的字符集,如:

HTTP_ACCEPT_CHARASET=iso-8859-1.,*,utf-8;

HTTP_ACCEPT_LANGUAGE

此变量被赋值为客户所能接受的语言,如:HTTP_ACCEPT_LANGUAGE=en;

HTTP_ACCEPT_AGENT

这个变量指定发出请求的系统正在运行的浏览器类型和操作系统;

HTTP_PORT:服务端口;

REMOTE_HOST:客户端的IP地址或IP名称信息;

REMOTE_PORT:客户端的端口号;

4. 一点提示

若干年来,通过网关接口(CGI)已成为服务器端应用程序开发的事实标准。但
随着时间的推移,发现在沉重的CGI负担下许多WWW服务器系统的表现不尽人意。
这是因为CGI规范存在瓶颈问题:每当客户系统请求CGI应用程序时,WWW服务器
就必须启动新的CGI进程,直到完成任务后结束进程。这在负载不高时,会工作
正常。但是,在高负载时,繁多的进程将成为性能的瓶颈问题。

所以现在开始出现新的标准来弥补这一不足,其中FastCGI是很有前途的一种新
的开放式标准。

你可以在Apache中通过添加mod_fastcgi.c模块来支持FastCGI。

解读Apache日志

  当你一步步地看到这里的时候,相信你的WWW站点已经建好,并且已经在
Internet上展现出来了。这时你可能就会关心谁造访过你的站点,或者想知道
你的Apache服务器现在的运行状态与性能如何。下面我们一起通过解读Apache
的日志来实现这个伟大的愿望。

一、盯着Apache服务器

Apache允许通过WWW监视服务器的配置信息与运行状态。

1.观看配置信息

如果你的Apache象缺省配置一样加入了mod_info模块的话,你就可以通过访问
http://localhost/server-info查看服务器信息。

2.使用状态页

如果你的Apache象缺省配置一样加入了mod_status模块的话,你就可以

通过访问http://localhost/apache-status查看服务器的运行状态信息,其中
包括:

¨ 服务器系统的当前时间;

¨ 服务器最近一次重启时间;

¨ 服务器启动后的运行时间;

¨ 到目前为止服务的访问总数;

¨ 到目前为止传输的字节总数;

¨ 服务请求的子进程数;

¨ 空闲子进程数;

¨ 每个进程状态、子进程服务的请求数以及该子进程传输的字节总数;

¨ 每秒平均请求数、每秒传输的字节数、每次请求平均传输字节数;

¨ 目前每个子进程CPU占用及Apache的总的CPU占用率;

¨ 当前主机及处理的请求。

二、什么是日志文件

日志文件是Apache工作的记录,Apache包括了mod_log_config模块,它用来记
录日志。在缺省情况下,它用通用日志格式CLF规范来写。CLF日志文件内对每
个请求均有一个单独行,形如:host ident anthuser date request status
bytes

其含义如下:

¨ host��客户端主机的全称域名或IP地址;

¨ ident��存放客户端报告的识别信息;

¨ authuser��如果是基于用户名认证的话,值为用户名;

¨ date��请求的日期与时间;

¨ request��客户端的请求行;

¨ status��返回到客户端的三们数字的HTTP状态码;

¨ bytes��除去HTTP头标外,返回给客户端的字节数。

三、分析日志文件

有了日志文件后,我们可以利用UNIX的一些工具和一此专门的日志分析工具对
日志文件进行分析。

实例一:列出访问过本网站的主机名或IP:

对于这个需求,我们可以通过一个Unix的一个脚本语句来完成:

cat /var/log/httpd/access_log | awk ‘{print $1}’

用上面的方法虽然可以得到访问过本网站的主机名或IP,但是由于有些是多次
访问的,我们希望在上面得到的结果的基础上做一些优化,使得列出的表中,
每个主机只出现一次。我们可以使用:

cat /var/log/httpd/access_log | awk ‘{print $1}’ | wc
l

3. 当然,我们可以根据需要选择第三方提供日志分析工具甚至自己开发一些日
3. 志分析工具来满足我们的需求。常见的第三方日志分析工具有:WebTrends、
3. Wusage、wwwstat、http-analyze、pwebstats、WebStat
xplorer、
3. AccessWatch。

四、一些提示

日志一方面是我们分析网站的第一手资料,一方面却是吞噬大量磁盘空间的罪
魁祸首。所以别忘了定期转储或删除一些老的日志文件。

Apache与代理服务器

  代理服务器是位于客户和客户要访问的服务器之间的系统。当客户机使用
URL请求访问远程资源时,代理服务器接受该请求并取得该资源以满足客户机的
请求。在通常情况下,代理服务器是客户机的服务器,同时也是远程服务器的
客户。

  代理服务器可以在自己的缓冲区中存储被请求的内容,当这些信息再次被
请求的时候,代理服务器就无需再从远程服务器上取了,这样代理服务器就减
轻了网络的瓶颈问题。

Apache可以配置成为代理服务器。

一、前向代理服务器和逆向代理服务器

1.前向代理服务器

前向代理服务器通常位于用户主机和要访问的远程网络之间。它从远程服务器
取得所要求的资源,然后返回给用户,同时存在磁盘上,以供下次使用。

在这种情况下,客户端的主机知道它们正在使用代理服务器,因为每个主机都
必须配置为使用代理服务器。

例如,必须告诉WWW浏览器使用代理服务器,它才能使用代理服务器。所有的远
程请求都通过代理服务器传输。

这类代理服务器也称为缓冲代理服务器。逆向服务器也可以缓冲数据,但它的
作用愉好与前向服务器相反。

2.逆向代理服务器

逆向代理服务器位于互联网资源前面,逆向服务器从原始服务器找到被请求的
资源,并反它返回给用户主机。

与前向代理服务器不同的是,逆向代理服务器的用户并不知道它们连接的是代
理服务器而不是资源服务器本身。其结构如下图所示:

二、配置代理服务器

  为了允许Apache作为代理服务器,需要将ProxyRequests设为On,然后根据
你希望代理服务器做什么而增加什么附加配置。无论你希望做什么,你所选的
代理配置都应该放入一个特殊?lt;Directory>容器中。

实例一:将私有IP网连到互联网

假设私有网上只有一台计算机被分配了互联网上合法的IP地址,这台计算

机运行Apache代理服务器,ProxyRequest设置为On,并且不需要附加其他配
置,所有请求均可由这台代理服务器代理服务。

实例二:让Apache允当远程WWW站点的缓冲

第一步:将ProxyRequest设置为On

第二步:创建配置如下:

CacheRoot /www/cache

CacheSize 1024

CacheMaxExpire 24

这里的意思是设置Cache目录为/www/cache;大小为1024KB,即1MB;缓冲中的
内容在24小时后失效。

实例三:建立镜像站点(其实这也就是所谓的逆向代理服务器)

第一步:将ProxyRequest设置为On

第二步:创建配置如下:

ProxyPass / www.mot.com /

CacheRoot /www/cache

CacheDefaultExpire 24

10.3 一些提示

代理服务器,我们将会在后面的章节中详细介绍,这里只是针对Apache的功能
介绍的。用Apache作代理服务器的性能并不高,效果并不好。不建议使用。

安裝 Apache+PHP+MySQL+imap+GD+Ldap+opens

注意事项:

1.如果妳是用 Redhat based 的 Linux 的话,请执行 ntsysv 将 httpd 和
1.Mysql 不要执行

2.将 DOWNLOAD 的档案放到相同的目录,再用 tar zxvf xxxxxxxx.tar.gz 来
2.解压缩,请依照要安装的软件进入适当的目录。

3.可以到 http://linuxnews.idv.tw/download/ 来下载所需的程序。

MySQL:

————————————————————–

./configure –prefix=/usr/local/mysql
-with-charset=big5

make

make install

cd scripts

./mysql_install_db

cd /usr/local/mysql/share/mysql/

chmod 611 mysql.server

./mysql.server start

#编辑 /etc/rc.d/rc.local 加入底下这行以便开机时自动执行 mysql

/usr/local/mysql/share/mysql/mysql.server start

imap:

————————————————————–

make slx

cp ipopd/ipop*.* /usr/sbin

cp imapd/imapd /usr/sbin

cp c-client/c-client.a /usr/local/lib

#请确定你有 /usr/local/include 这个目录

cp c-client/rfc822.h /usr/local/include

cp c-client/mail.h /usr/local/include

cp c-client/linkage.h /usr/local/include

GD:

————————————————————–

make

make install

Ldap:

————————————————————–

./configure –prefix=/usr/local/ldap

make

make depend

cd tests

make

cd ..

make install

Apache:

————————————————————–

./configure –prefix=/usr/local/apache

openssl:

————————————————————–

./config

make

make test

make install

mod_ssl:

————————————————————–

./configure –with-apache=../apache_1.3.19
–with-ssl=../openssl-0.9.6 –prefix=../apache_1.3.19

php:

————————————————————–

./configure –with-mysql=/usr/local/mysql
–with-apache=../apache_1.3.19 –enable-track-vars
–with-gd=../gd-1.8.4 –with-imap=../imap-4.7c
-enable-ftp
–with-ldap=/usr/local/ldap

make

make install

Apache:

————————————————————–

./configure –prefix=/usr/local/apache
–activate-module=src/modules/php4/libphp4.a
-enable-module=ssl

make

make certificate

#这时会问你一些问题,就是有关于加密的问题,最后要要求输入启动的密码,
如果输入密码的话以后启动 httpd 的时候会询问密码,若不输

#入密码的话启动就不会问了

#PS.启动http

#要加密:apachectl startssl

#不加密:apachectl start

make install

修改 /etc/rc.d/rc.local 加入
usr/local/apache/bin/apachectl start 来
开机时自动启动 Apache

再来就是修改 /usr/local/apache/conf/httpd.conf 的设定档,将 php 的支
持加入

建立Apache站点的基本安全机制

对于WWW服务来说,在WWW服务器和WWW浏览器之间并不始终维持对话过程。办要
WWW服务器完成对一个URL请求的服务,连接就断开了。

在这种情况下,在WWW上保证可以使用的唯一认证机制是由HTTP本身提供 的。
在标准的Apache服务器实现了这样的认证,它能控制哪些主机可能访问特定的
站点或特点的站点的一部分。

这种认证可以分为两种,一种是基于主机的的认证,另一种是基于用户名/口令
的认证。由于互联网上的决大多数用户的IP地址是动态获得的,所以基于主机
的认证方式并不总适用。所以在大多数情况下,传统的基于用户名/口令的认证
方式更为现实。下面我们就对这两种认证的实现做一简要的介绍。

1. 基于主机的认证方式

在种认证模式顾名思义,访问是用主机名或主机IP地址来控制的。支持这种认
证方式的是Apache的mod_access模块,这个模块缺省状态下是被安装了的。该
模块用以下几种Apache命令来提供访问控制功能。

allow命令

语法:allow from host1 host2 host3 …

这个命令定义了允许访问站点或目录的主机清单。主机清单可以用以下几

种形式表示:

ALL:代表所有主机;

主机的全域名,www.mot.com;

主机的部分域名,如:.mot.com;

完整的IP地址,如:202.98.2.32;

部分IP地址,如:202.98

网络地址/网络掩码对,如:202.98.0.0/255.255.0.0

网络地址/nn(CIDR定义),如:202.98.0.1/16

deny命令

语法:deny from host1 host2 host3 …

这个命令定义了禁止访问站点或目录的主机清单,其他与allow命令相似。

order命令

语法:order deny,allow | allow,deny

这个命令定义评价allow和deny命令的先后顺序。

例如:

order deny,allow

deny from www.mot.com

allow all

这组命令设置了www.mot.com访问/home/httpd/html目录下的文件。

请大家注意,顺序是先deny后allow,如果是:order allow,deny 那么,先允
许所有的主机访问,然后再禁止,这样是无效的,所有主机仍然能够访问。

2. 基于用户名/口令的认证方式

这种认证方式其实相当简单,当WWW浏览器请求经此认证模式保护的URL

时,将会出现一个对话框,要求用户键入用户名和口令。用户输入后,传给
WWW服务器,WWW服务器验证它的正确性,如果正确,返回页面,否则返回401错
误。要说明的一点是,这种认证模式是基本的,并不能用于安全性要求极高的
场合。

Apache 中有许多模块可以支持这种认证方式,下面我们就介绍一下最基本、最
标准的mod_auth模块。正如前面提到的一样,mod_auth模块使用存储在文本文
件中的用户名、组名和口令来实现认证。这种方法非常适合处理少量用户,它
能工作得很好。如果你需要对大量的用户,如数以千计的用户做认证时,这种
方法的性能将急剧下降到不可忍受,所以当这种情况下,就需要考虑使用
mod_dbm模块或mod_mysql模块来获得更好的性能。

实例一:需要用户名和口令的访问控制

下面我们就一起来看一下如何建立需要用户名/口令才能进行访问的目录。

基本情况: www.xxx.com

的站点有设置为:

DocumentRoot /home/httpd/html

AccessFileName .htaccess

AllowOverride All

需求:限制/home/httpd/html/backup/目录的访问,只允许用户”super”以口令
“fill-06″访问此目录。

实现步骤:

使用htpasswd建立用户文件

htpasswd -c /home/httpd/secr/.htpasswd super

此程序会询问用户”super”的口令,你输入”fill-06″,两次生效。

建立.htaccess文件

用vi在/home/httpd/html/backup/目录下建立一个文件.htaccess,写入

以下几行:

AuthName My Friend Only (注:这个名字是任取的)

AuthType Basic

AuthUserFile /home/httpd/secr/.htpasswd

require user super

设置文件权限,确保Apache用户有读的权限

这样就完成了设置工作,你可以试一试效果了。

实例二:允许一组用户访问一个目录

假设,www.xxx.com想让myfriend组中的mf1与mf2两个用户分别能

使用口令”mf001-1″”mf002-2″访问/home/httpd/html/backup/目录。

实现步骤:

使用htpasswd建立用户文件

htpasswd -c /home/httpd/secr/.htpasswd mf1

htpasswd -c /home/httpd/secr/.htpasswd mf2

建立组文件

用vi/home/httpd/secr/目录下建立一个文件.htgroup,写入:

myfriend:mf1 mf2

建立.htaccess文件

用vi在/home/httpd/html/backup/目录下建立一个文件.htaccess,写入

以下几行:

AuthName My Friend Only

AuthType Basic

AuthUserFile /home/httpd/secr/.htpasswd

AuthGroupFile /home/httpd/secr/.htgroup

require group myfriend

配置工作到此结束,试一试吧!

实例三:混合使用基于主机与基于用户名/口令的认证方式

如果你除了只允许让mf1与mf2两个用户访问外,还想禁www.mot.com

外的主机访问这个目录的话,就将/home/httpd/html/backup/.htaccess修改成
为:

AuthName My Friend Only

AuthType Basic

AuthUserFile /home/httpd/secr/.htpasswd

AuthGroupFile /home/httpd/secr/.htgroup

require group myfriend

order deny,allow

deny from all

allow from www.mot.com

不行,这不是我想要找的,我要再搜一搜声明:本站部分文章收集于网络,仅
供个人学习之用,绝无任何商业目的;

本节将针对Apache中有关安全方面的设置做出详细的叙述,涉及到Apache的配置文件、Apache的目录访问控制、在Apache上运行CGI等安全方面的设置。
4.5.1 Apache的配置文件

对于RedHat Linux系统,Apache的配置文件放在/etc/httpd/conf/目录下。如果是自行编译安装的Apache,则视编译时指定的目录路径而定,默认是/usr/local/apache/conf。

在conf目录下有3个Apache的配置文件:

httpd.conf

access.conf

srm.conf

Apache启动时先调用httpd.conf,然后调用srm.conf,最后调用access.conf。但现代版本的Apache为避免管理和维护的混乱,已经改为将所有Apache的相关配置命令放在httpd.conf文件中,不再使用srm.conf和access.conf文件。虽然这两个文件仍然存在,但内容中没有任何配置命令,形同虚设。

httpd.conf文件分为以下3部分:

Global Environment

‘Main’ server configuration

Virtual Hosts

下面将讲述这3部分的用法和与安全相关的注意点。
4.5.1.1 Global Environment

ServerType standalone

用来指定Apache的启动方式:standalone和inetd。standalone模式是Apache独立运行,也是默认的启动方式。inetd模式是守护进程监听http的连接请求才启动httpd进程,请求完毕后就结束httpd进程,这样服务器负担很重。

ServerRoot “/etc/httpd”

Apache的目录,此处是存放配置、出错记录、日志文件的根目录。目录后面不要加“/”字符。

LockFile /var/lock/httpd.lock

保留默认值,不要更改。

PidFile /var/run/httpd.pid

指定记录Apache的父进程id的文件名及路径。

ScoreBoard /var/run/httpd.scoreboard

指定用于储存服务器进程处理信息的文件名和路径。

#ResourceConfig conf/srm.conf

#AccessConfig conf/access.conf

在标准的配置中,服务器启动时会处理这两个文件。因为现在的Apache只使用httpd.conf文件,摒弃了srm.conf和access.conf文件,所以这两行用“#”注释掉。

Timeout 300

设置超时时间。如果远程客户端超过300秒还没连上Apache Server,或者Apache Server超过300秒没有传送字节给客户端,就立即断开连接。

KeepAlive On

KeepAlive允许客户端的每个连接有多个请求,设为Off时此项无效。

MaxKeepAliveRequests 100

设置每次连接期间所允许的最大请求数目。设为0时表示允许无限制数目。设置数字越大,则服务器性能越高。

KeepAliveTimeout 15

设置等待同一个客户端的同一个连接发出下一个连接请求超过一定的时间就断线。

MinSpareServers 5

MaxSpareServers 20

设置最小的闲置服务处理程序的数目和最大的闲置服务处理程序的数目。如果实际数目少于MinSpareServers,则将增加处理程序;反之,如果实际数目超过MaxSpareServers,一些多余的处理程序将被杀掉。

StartServers 8

设置启动并初始化后启动服务进程的数目。

MaxClient 150

设置服务运行的总数量。一旦达到此数目,新来的客户端就被拒绝,所以该限制数目不能设得太小。

MaxRequestsPerChild 100

设置每个子程序处理结果前的要求数目,设为0表示不限制。

#Listen 3000

#Listen 12.34.56.78:80

Listen 80

设置Apache监听的连接端口或IP地址及端口,默认是80。

#BindAddress *

该选项用来支持虚拟主机,并告知服务器监听哪个IP地址。可以使用“*”,或具体的IP地址和完整的域名。

#LoadModule foo_module libexec/mod_foo.so

DSO(Dynamic Shared Object)支持。DSO模块的概念和作用与Windows的DLL文件极其相似。

#ExtendedStatus On

当“server-status”管理程序被执行时,检查Apache的运行状态信息。默认是Off。
4.5.1.2 ‘Main’ Server Configuration

如果在第一部分“Global Environment”中的ServerType命令设为inetd的话,那么这部分就没有任何效果,直接跳到ServerAdmin命令。

Port 80

设置Standalone服务器监听的连接端口,也可以设为其他端口,必须小于1 023。必须以root身份才能更改端口。

User apache

Group apache

指定运行httpd的用户和用户组。必须首先以root身份指派。

ServerAdmin root@localhost

设置管理员的电子邮件地址,当Apache有问题时会自动发E-mail通知管理员。

#ServerName localhost

设置主机名称,可以用域名和IP地址。

DocumentRoot “/var/www/html”

设置Apache放置网页的目录路径。

Options FollowSymLinks

AllowOverride None

设置Apache能够访问的每一个目录被访问时所执行的动作。本章后面将详细叙述Apache的目录存取方法。

Options Indexes Include FollowSymLinks

AllowOverride None

Order allow, deny

Allow from all

此处设置Apache的网页目录的执行动作。本章节后面将详细叙述目录的存取方法。

AllowOverride None

Options None

Allow from all

此处可以防止用户创建自己的.htaccess文件。在这个文件中可以改变全局参数,以致会影响到整个系统的安全。可以在httpd.conf文件中加入的命令中都加上上面的代码。

UserDir public_html

设置用户在自己的目录下建立public_html放置网页,即/home/*/public_html/。这样在浏览器地址栏输入“http://Apache服务器/用户名/”就能显示网页。设置的目录必须告知用户,否则他们不知道网页放在什么地方。

DirectoryIndex index.html index.htm index.shtml index.php index.php4 index.php3 index.cgi

设置Apache的默认首页文档。

AccessFileName .htacess

指定控制存取的文件名称。Apache默认的是.htaccess。本章将在后面详细叙述该文件的用法。

Order allow,deny

Deny from all

防止用户端看到ht开头的文件内容。因为.htaccess记载了相关信息,.htpasswd记载了密码信息,不允许其他人访问这些文件。

#CacheNegotiatedDocs

指定Proxy服务器是否将交互产生的文件存在Cache中。将该命令注释掉则是不指定。

UseCanonicalName On

设置是否使用标准的名称,默认是On。

TypeConfig /etc/mime.types

指定存放MIME文件类型的文件。

Default Type text/plain

如果Apache不能识别此文件类型时,则按照预设的格式显示,一般以文本文件显示。

MIMEMagicFile conf/magic

mod_mime_magic模块可以让Apache由文件内容决定其MIME类型。如果存在该模块,才会处理MIMEMagicFile这一段。上面3行是当没有该模块时就处理这一段。

HostnameLookups off

设置Apache是否向名称服务器解析该IP地址,记录此链接的名称(如Hacker.com.cn)。因为DNS解析要花一定时间,所以默认设为off,仅记录IP。

ErrorLog /var/log/httpd/error_log

指定Apache发生错误时记录文件的位置。如果在中没有指定记录文件,则用/var/log/httpd/error_log,否则使用指定的文件。

LogLevel warn

指定记录的详细等级,有8个等级:debug、info、notice、warn、error、crit、alert和emerg。按从详细到简略排列。

LogFormat “%h %l %u %t\”%r”\”%>s%b\”{Referer}I”\”%{UserAgent}I\”"combind

Logformat”%h%l%u%t\”%r”\”%>s%b”common

Logformat “%{Referer}I->%U”referer

LogFormat”%{User-agent}I”agint

定义4种格式的别名:combind、commen、referer和agint。

#CustomLog /var/log/httpd/access_log common

CustomLog /var/log.httpd/access_log combind

指定记录文件使用哪种自定义的格式。其他不使用的自定义格式将被注释掉。

以上是关于日志文件的,将在后面的Apache日志文件中详细叙述。

ServerSignature On

设为On,当Apache产生错误时,就在网页上显示Apache的版本信息、主机名称、端口等一行信息。设为Off,就不显示相关的信息。设为E-mail时,就有“mailto:”给管理员的超链接。

Alias/icons /”var/www/icons/”

使用较短的别名,其格式为:Alias 别名 原名。可以无限制地建立别名。注意别名的后面如果有“/”,那么在使用URL时也得有“/”。

ScriptAlias /cgi-bin/ “/var/www/cgi-bin/”

和Alias类似,设置服务器脚本目录。

应该强制性地使用ScriptAlias命令来限定CGI程序位于某个或者某几个特定的位置。一般可以设置多个ScriptAlias。必须保证cgi-bin目录不在html目录下,这一点非常重要,这样可以防止黑客通过浏览它们而查看CGI程序。

IndexOptions FancyIndexing

以特定的图形显示文件清单。

AddIconByEncoding (CMP, /icons/compressed.gif) x-compress x-gzip

……

DefaultIcon /icons/unknown.gif

指定显示文件清单时各种文件类型的对应图形。
4.5.1.3 Virtual Hosts

这部分是设置虚拟主机的。所谓虚拟主机,就是指一台服务器作为多域名的Web服务器。ISP经常通过一台服务器为其客户提供Web服务。而客户通常希望主页以自己的名字出现,而不是在该ISP的名字后面,因为使用单独的域名和根网址可以看起来更正式一些。传统上,用户必须自己设立一台服务器才能达到拥有单独域名的目的,然而这需要维护一个单独的服务器。很多小单位缺乏足够的维护能力,更为合适的方式是租用别人维护的服务器。ISP也没有必要为一个机构提供一个单独的服务器,完全可以使用虚拟主机的能力,使服务器为多个域名提供Web服务,而且不同的服务互不干扰,对外就表现为多个不同的服务器。虚拟主机就是解决这种问题的方案,使客户的域名实际指向ISP的同一台服务器。
1.Apache支持虚拟主机的方式

Apache有两种支持虚拟主机的方式。一是为每一个虚拟主机设置单独的httpd进程,二是为所有的主机设置一个单独的httpd进程。

为每一个虚拟机设置单独的httpd进程

在httpd.conf文件的第一部分Global Environment中的BindAddress命令或Listen命令就是用来指定虚拟主机的地址和端口的。

BindAddress命令用来指定单一的地址,可以使用域名或IP地址。该命令在httpd.conf文件中只能出现一次。

Listen命令可以让httpd进程监听多个地址或端口。反复使用Listen命令就能实现这个要求。

为所有的主机设置一个单独的httpd进程

这是一个常用的方法。用户只要维护一个httpd.conf文件。在此文件的第三部分Virtual Host中,用命令来为所有的虚拟主机进行配置。有多个虚拟主机就有多个段。在不同的虚拟主机的段中可以指定不同的ServerAdmin、ServerName、DocumentRoot、ErrorLog和TransferLog。
2.虚拟主机的实现方式

虚拟主机有三种实现方式:以主机名称的方式虚拟、以IP的方式虚拟、以端口的方式虚拟。下面就举一个在httpd.conf的第三部分Virtual Host中实现上面提及的方式的例子。

以主机名称的方式虚拟

如果用户的一台服务器有多个域名,Virtual Host文件举例如下:

NameVirtualHost 210.12.195.6

ServerAdmin bright@hacker.com.cn

DocumentRoot /var/www/html/hacker

ServerName hacker.com.cn

ServerAdmin admin@pcfrient.com.cn

DocumentRoot /var/www/html/pcfrient

Servername pcfrient.com.cn

以IP的方式虚拟

注册域名是要花一笔费用的。解决方案是可以用IP的方式来虚拟。在Linux中可以为一个网卡捆绑两个IP地址。如服务器的地址是210.12.195.6,现在有一个IP地址210.12.195.9没有使用。将210.12.195.9捆绑到服务器的网卡中,执行下列命令:

#ifconfig eth0:0 210.12.195.9

这样,服务器就有两个IP地址了。以IP的方式虚拟和以主机名称的方式虚拟类似,请看下面的例子:

NameVirtualHost 210.12.195.6

ServerAdmin bright@hacker.com.cn

DocumentRoot /var/www/html/hacker

ServerAdmin bright@hacker.com.cn

DocumentRoot /var/www/html/pcfrient

以IP的方式虚拟不用NameVirtualHost命令。

以主机名称和IP的方式虚拟

就是上面的两个方式的结合。看下面的例子:

NameVirtualHost 210.12.195.6

ServerAdmin bright@hacker.com.cn

DocumentRoot /var/www/html/hacker

ServerName hacker.com.cn

ServerAdmin bright@hacker.com.cn

DocumentRoot /var/www/html/pcfrient

以端口的方式虚拟

http默认的端口是80,如果用户要开设另一个端口443作为另一个虚拟主机,举例如下:

Listen 80

Listen 443

ServerAdmin bright@hacker.com.cn

DocumentRoot /var/www/html/hacker

ServerAdmin suying@hacker.com.cn

DocumentRoot /var/www/html/pcfrient

以不同的IP和端口的方式虚拟

该方式是以IP的方式虚拟和以端口的方式虚拟的结合。假设服务器捆绑了两个IP地址,210.12.192.6和210.12.195.9,后面的IP地址用端口443。举例如下:

Listen 210.12.192.6:80

Listen 210.12.195.9:443

ServerAdmin bright@hacker.com.cn

DocumentRoot /var/www/html/hacker

ServerAdmin suying@hacker.com.cn

DocumentRoot /var/www/html/pcfrient


删除已不存在的隐藏设备

删除已不存在的隐藏设备
现在:在2000或XP中安装网卡设置IP时,经常会碰到这样的情况:以前安装的网卡已经拔下了,但在安装新网卡后设置IP时出错错误提示,说输入的IP已经分配给旧的那个网卡使用了,需要设定另一个IP,有时在给旧网卡重装驱动后,设备名称会多一个“#2”符号,无法删除。

解决方法:
出现这样的问题,是因为在“设备管理器”中还依然保存了旧网卡设备,可以用以下方法解决。
方法一:在注册表中搜索那个IP地址,把找到的信息删除即可。
方法二:右击“我的电脑”->属性-高级->环境变量,在“系统变量”区域,单击“新建”,变量名为“DEVMGR_SHOW_NONPRESENT_DEVICES”,变量值为1,设置完毕确认。这样设定后,打开设备管理器,点击“查看”->显示隐藏设备,这样就能看到所有曾经安装的网卡设备。

postfix常用命令

service postfix restart

删除RPM包命令: rpm -e xxx.rpm

安装 rpm -ivh xxx.rpm

应答安装 rpm -U xxx.rpm

查看postfix发送列队 postqueue -p

查找文件 find / -name my* -print

查找文件内的参数:grep queue main.cf.default

postfix堵死了,邮局发不出去

昨天傍晚,我部门的人员向我反映,没有接受到系统发出来的mail,我立马上服务器上去查看,执行postqueue -p|wc -l,查看邮件队列中的mail,非常久都没有反映,估计是堵塞了。跟踪日导:less /home/domain/varlog/maillog,显示

May 20 21:40:59 cp postfix/nqmgr[13879]: D962D22C868: from=, size=457, nrcpt=1 (queue active)
May 20 21:40:59 cp postfix/nqmgr[13879]: D6E0222C845: from=, size=449, nrcpt=1 (queue active)
May 20 21:40:59 cp postfix/nqmgr[13879]: D8CEF22C85C: from=, size=556, nrcpt=1 (queue active)
May 20 21:40:59 cp postfix/nqmgr[13879]: D7B8922C6A1: from=<>, size=1964, nrcpt=1 (queue active)
May 20 21:40:59 cp postfix/nqmgr[13879]: D787922C64D: from=<>, size=1992, nrcpt=1 (queue active)
May 20 21:40:59 cp postfix/nqmgr[13879]: D7E3D22C871: from=, size=565, nrcpt=1 (queue active)
May 20 21:40:59 cp postfix/nqmgr[13879]: DB89A22C878: from=, size=557, nrcpt=1 (queue active)
May 20 21:40:59 cp postfix/nqmgr[13879]: D09A122C804: from=<>, size=1956, nrcpt=1 (queue active)
May 20 21:40:59 cp postfix/nqmgr[13879]: D2DFE22C533: from=, size=4077, nrcpt=1 (queue active
)
May 20 21:40:59 cp postfix/nqmgr[13879]: DD1E722C6EF: from=<>, size=1968, nrcpt=1 (queue active)
May 20 21:40:59 cp postfix/nqmgr[13879]: DD52B22C8A7: from=, size=555, nrcpt=1 (queue active)
May 20 21:40:59 cp postfix/nqmgr[13879]: D5A6722C867: from=, size=443, nrcpt=1 (queue active)
May 20 21:40:59 cp postfix/nqmgr[13879]: DF4F522C5BC: from=<>, size=1976, nrcpt=1 (queue active)
May 20 21:40:59 cp postfix/nqmgr[13879]: DFB9F22C681: from=<>, size=1952, nrcpt=1 (queue active)
May 20 21:40:59 cp postfix/nqmgr[13879]: 58CC622C899: from=, size=460, nrcpt=1 (queue active)
May 20 21:40:59 cp postfix/nqmgr[13879]: 5216A22C423: from=<>, size=1956, nrcpt=1 (queue active)
May 20 21:40:59 cp postfix/nqmgr[13879]: 53B3F22C844: from=<>, size=1964, nrcpt=1 (queue active)

从日志上看,这也是放到队列中处理,也看不出什么问题啦。
转到mail目录,cd /var/spool/postfix/ 进入几个相应的目录查看,cd incoming,之后 find|wc,晕,这个目录总共有1万多封mail,统计了一下相应的几个目录,总共有20多万封mail,完全堵死掉了。还是想想办法怎么让这个mail恢复正常使用吧,之后再查出相应的原因。 find -name 53B3F22C844,查看出mail的内容,通过随机跟踪了几封mail,发现是退信的占了大部分,决定删除队列中退信的邮件:find /var/spool/postfix/active/ -type f -exec grep -l ‘Subject: Undelivered Mail Returned to Sender’ {} \; -exec rm -f {} \;
呵呵,find 命令是非常好用的,以后还要好好普及一下。 删除完成之后,队列中还有近1万封mail;启动mail,让mail系统自动发送,mail服务器恢复正常使用;接下来分析一下产生这个问题的原因,经过分析,原来是由于早上的时候,系统服务器把转发服务器的IP封了,mail没办法转发投递出去。奶奶的,都是科技网网络,科技网的网络之间没办法互联,只好通过转发来做。

 

 

转自:http://www.luohz.cn 做个备份!呵呵!写的不错的文章

Centos最快的YUM站点

CentOS USTC mirror

http://centos.ustc.edu.cn/centos/

安装后请按照以下步骤修改CenOS-Base.repo,以后就可以便的用yum安装软件了.

 

cd /etc/yum.repos.d
mv CentOS-Base.repo  CentOS-Base.repo.save
wget http://centos.ustc.edu.cn/CentOS-Base.repo
#yum upgrade

打造安全的CENTOS服务器—php安全

1、开启安全模式(做为商业应用的服务器不建议开启)

复制内容到剪贴板

代码:

#vi /usr/local/Zend/etc/php.ini          (没装ZO时php.ini文件位置为:/etc/php.ini)
safe_mode = On

2、锁定PHP程序应用目录

复制内容到剪贴板

代码:

#vi /etc/httpd/conf.d/virtualhost.conf
加入
php_admin_value open_basedir /home/*** (***为站点目录)

3、千万不要给不必要的目录给写权限,也就是777权限,根目录保持为711权限,如果不能运行PHP请改为755

4、屏蔽PHP不安全的参数(webshell)

复制内容到剪贴板

代码:

#vi /usr/local/Zend/etc/php.ini           (没装ZO时php.ini文件位置为:/etc/php.ini)
disable_functions = system,exec,shell_exec,passthru,popen

以下为我的服务器屏蔽参数:

复制内容到剪贴板

代码:

disable_functions = passthru,exec,shell_exec,system,set_time_limit,ini_alter,dl,
pfsockopen,openlog,syslog,readlink,symlink,link,leak,fsockopen,popen,escapeshell
cmd,error_log

小白兔大全

小白兔蹦蹦跳跳到面包房,问:“老板,你们有没有一百个小面包啊?”

  老板:“啊,真抱歉,没有那么多”

  “这样啊。。。”小白兔垂头丧气地走了。

  第二天,小白兔蹦蹦跳跳到面包房,“老板,有没有一百个小面包啊?”

  老板:“对不起,还是没有啊”

  “这样啊。。。”小白兔又垂头丧气地走了。     

  第三天,小白兔蹦蹦跳跳到面包房,“老板,有没有一百个小面包 啊?”

  老板高兴的说:“有了,有了,今天我们有一百个小面包了!!”

  小白兔掏出钱:“太好了,我买两个!”

  

  

有一只小白兔快乐地奔跑在森林中,

  在路上牠碰到一只正在卷大麻的长颈鹿,

  小白兔对长颈鹿说: “长颈鹿长颈鹿,你为什么要做伤害自己的事呢?

  看看这片森林多么美好,让我们一起在大自然中奔跑吧!”

  长颈鹿看看大麻烟,看看小白兔,于是把大麻烟向身后一扔,

  跟着小白兔在森林中奔跑.

  

  后来牠们遇到一只正在准备吸古柯碱的大象,

  小白兔对大象说: “大象大象,你为什么要做伤害自己的事呢?

  看看这片森林多么美好,让我们一起在大自然中奔跑吧!”

  大象看看古柯碱,看看小白兔,于是把古柯碱向身后一扔,

  跟着小白兔和长颈鹿在森林中奔跑.

  

  后来牠们遇到一只正在准备打viper的狮子,

  小白兔对狮子说: “狮子狮子,你为什么要做伤害自己的事呢?

  看看这片森林多么美好,让我们一起在大自然中奔跑吧!”

  狮子看看针筒,看看小白兔,于是把针筒向身后一扔,

  冲过去把小白兔狠揍了一顿.

  大象和长颈鹿吓得直发抖:”你为什么要打小白兔呢?

  牠这么好心,关心我们的健康又叫我们接近大自然.”

  狮子生气地说:”这个混蛋兔子,每次嗑了摇头丸就拉着我

  像白痴一样在森林里乱跑.”

  

  

  第一天,小白兔去河边钓鱼,什么也没钓到,回家了。

  第二天,小白兔又去河边钓鱼,还是什么也没钓到,回家了。

  第三天,小白兔刚到河边,一条大鱼从河里跳出来,冲着小白兔大叫:

  你他妈的要是再敢用胡箩卜当鱼饵,我就扁死你!

  

  

  为了测试美国, 香港, 中国大陆三地pol.ice的实力, 联合国将三只兔子放在三个森林中, 看三地pol.ice谁先找出兔子.

  第一个森林前是美国pol.ice, 他们先花整整半天时间开会制定作战计划, 严格分工, 然后派特种部队快速进入森林进行地毯式搜索, 结果开会耽搁了时间, 兔子跑了, 任务失败!

  然后轮到香港pol.ice, 他们派了一百多号人和几十辆警车在森林外一字排开, 由带头人用喇叭喊话:”兔子,兔子,你已经被包围了, 快出来投降……” 半天过去了, 没动静. 飞虎队进入森林, 搜索一遍, 没结果, 任务失败!

  最后是中国pol.ice, 只有四个, 先打了一天麻将, 黄昏时一人拿一警棍进入森林,没五分钟, 听到森林里传来一阵动物的惨叫, 中国pol.ice一人抽着一根烟有说有笑的出来, 后面拖着一 只鼻青脸肿的熊, 熊奄奄一息的说到:”不要再打了, 我就是兔子…….”

  

  

  小白兔在森林里散步,遇到大灰狼迎面走过来,上来“啪啪”给了小白兔两个大耳贴子,说“我让你不戴帽子”。小白兔很委屈的撤了。

  第二天,她戴着帽子蹦蹦跳跳的走出家门,又遇到大灰狼,他走上来“啪啪”又给了小白兔两个大嘴巴,说“我让你戴帽子。”

  兔兔郁闷了。思量了许久,最终决定去找森林之王老虎投诉。

  说明了情况后,老虎说“好了,我知道了,这件事我会处理的,要相信组织哦”。当天,老虎就找来自己的哥们儿大灰狼。“你这样做不妥啊,让老子我很难办嘛。”说罢抹了抹桌上飘落的烟灰:“你看这样行不行哈?你可以说,兔兔过来,给我找块儿肉去!她找来肥的,你说你要瘦的。她找来瘦的,你说你要肥的。这样不就可以揍她了嘛。当然,你也可以这样说。兔兔过来,给我找个女人去。她找来丰满的,你说你喜欢苗条的。她找来苗条的,你说你喜欢丰满的。可以揍她揍的有理有力有节”。大灰狼频频点头,拍手称快,对老虎的崇敬再次冲向新的颠峰。不料以上指导工作,被正在窗外给老虎家除草的小白兔听到了。心里这个恨啊。  

  次日,小白兔又出门了,怎么那么巧,迎面走来的还是大灰狼。大灰狼说:“兔兔,过来,给我找块儿肉去。”兔兔说:“那,你是要肥的,还是要瘦的呢?”大灰狼听罢,心里一沉,又一喜,心说,幸好还有B方案。他又说:“兔兔,麻利儿给我找个女人来。”兔兔问:“那,你是喜欢丰满的,还是喜欢苗条的呢?”大灰狼沉默了2秒钟,抬手更狠的给了兔兔两个大耳帖子。“靠,我让你不戴帽子。”

  

  

  熊和兔子在森林里便便,完了熊问兔子“你掉毛吗?” 兔子说“不掉~”

  于是熊就拿起兔子擦屁股。

  

  

  

  有一只兔子非礼了一只狼(这只兔子很强吧),

  然后就跑了,狼愤而追之,

  兔子眼看狼快要追上了,

  便在一棵树下坐下来,

  戴起墨镜,拿张报纸看,

  假装什么事也没有发生过,

  这时狼跑来了,看见坐在树下的兔子,

  问道:”有没有看见一只跑过去的兔子!”

  兔子答道:”是不是一只非礼了狼的兔子?”

  狼大呼:”不会吧!这么快就上报纸了!!!”

  

  

  一天一只小白兔来到一家商店问老板:“老板,有胡萝卜吗?”

  老板摇摇头:“没有。”

  小白兔听完就“嗖”的跑了。

  第二天小白兔又来到这家商店问:“老板,有胡萝卜吗?”

  老板生气的摇摇头:“没有。”

  小白兔听完就“嗖”的跑了。

  第三天小白兔又来到这家商店问:“老板,有胡萝卜吗?”

  老板愤怒的大喊:“没有没有!再问我就用钳子把你的牙齿拔掉!”

  小白兔听完就“嗖”的跑了。

  第四天小白兔又来到这家商店,怯生生的问:“老板,有钳子吗?”

  老板说:“没有。”

  小白兔于是问:“有胡萝卜吗?”

  

  不知道过了多少天,一只小黑兔来到这家商店问老板:“老板,有胡萝卜吗?”

  老板生气的摇摇头:“没有。”

  小黑兔听完就“嗖”的跑了。

  第二天小黑兔又来到这家商店问:“老板,有胡萝卜吗?”

  老板非常生气:“没有没有!再问我就用钳子把你的牙齿拔掉!”

  小黑兔听完就“嗖”的跑了。

  第三天小黑兔又来到这家商店,怯生生的问:“老板,有钳子吗?”

  老板生气的说:“没有。”

  小黑兔于是问:“有胡萝卜吗?”

  老板愤怒了,捉住小黑兔,拿出一把小锤子,把小黑兔的牙齿敲掉了。

  第四天小黑兔又来到这家商店,含糊不清的问:“老板,有胡萝卜汁吗?”

  

  

  长颈鹿说:”小兔子,真希望你能知道有一个长脖子是多么的好。无论什么好吃的东西,我吃的时候都会慢慢的通过我的长脖子,那美味可以长时间的享受。”

  兔子毫无表情的看着他。

  ”并且,在夏天,兔子,那凉水慢慢的流过我的长脖子,是那么的可口。有个长脖子真是太好了!兔子,你能想象吗?”

  兔子慢悠悠的说:”你吐过吗?”

  

  

  一天,袋鼠开着车在乡村小路上转悠,突然看到小白兔在路中央,耳朵及身体几乎完全趴在地上似乎在听什么…

  于是..袋鼠停下车很好奇地问:“小白兔,请问一下你在听什么?”

  “半小时前这里有一辆大货车经过…”

  “哇靠..这么神!..你是怎么知道的?..”

  “他XX的!我的脖子和腿就是这么断的..”

  

  

  蚂蚁在森林里走,突然遇到一只大象,蚂蚁连忙一头钻进土里,伸出一只腿。

  小白兔见了很好奇,问: 你在干什么?

  蚂蚁悄悄对它说:

  嘘……别出声,看我绊丫一跟头……

  

  

  有一天兔子在一个山洞前写东西,一只狼走过来问:“兔子你在写些什么? ”

  兔子答曰:“我在写论文。”

  狼又问:“什么题目?”

  兔子答曰:“我在写兔子是怎样把狼吃掉的。”

  狼听后哈哈大笑,表示不相信。

  兔子说:“你跟我来。”然后把它带进了山洞之后,兔子又继续在山洞前写着。这时又来了一只狐狸问:“兔子,你在写些什么?”

  兔子答曰:“我在写论文。”

  狐狸问:“什么题目?”

  兔子答曰:“兔子是如何把一只狐狸吃掉的。”

  狐狸听完后哈哈大笑的,表示不信。

  兔子说:“你跟我来。”之后把它带进了山洞,过了一会儿兔子又独自一个人走出了山洞,继续写它的论文。

  此时在山洞的里面一只狮子正坐在一堆白骨上剔着牙,还一边看着兔子的论文:一个动物的能力大小,不是看它的力量有多大,而是看它的幕后老板是谁!

  

  

  在一个精神病院里,有一天院长想看看三个精神病人的恢复情况如何,于是在他们每人面前放了一只小白兔,第一个精神病人坐在小白兔的上面,揪着小白兔的两只耳朵,嘴里嚷着“驾”,院长摇了摇头;第二个人背对着小白兔,拍着它的屁股,嘴里说着“给我追”,院长叹了口气;第三个蹲在那里一个劲儿的摸着小白兔,院长看后,满意地点点头,只听他说了一句:“小样的,放你300米,等我擦好车再追你!”院长倒地晕倒……

  

  

  小白兔和大狗熊两个蹲在树底下拉屎。

  大狗熊对小白兔说:你们小白兔虽然好看,可就是麻烦!沾上点脏东西就能看出来,挺恶心的!

  小白兔说:瞧你说的!是不是啊!

  大狗熊说:可不是么!大狗熊边说边随手抄起小白兔给自己擦了擦屁股扬长而去

  

  

  

  小白兔和大狗熊走在森林里,不小心踢翻一只壶。

  壶里出来一精灵,说可以满足它们各三个愿望。

  狗熊说,把它变成世界上最强壮的狗熊。它的愿望实现了。

  小白兔说,给它一顶小头盔。它的愿望也实现了。

  狗熊说,把它变成世界上最漂亮的狗熊。它的愿望又实现了。

  小白兔说,给它一辆自行车。它的愿望又实现了。

  狗熊说,把世界上其它的狗熊全变成母狗熊!

  小白兔骑上自行车,一边跑一边说,把这只狗熊变成同性恋……

  

  

  

  三个小白兔采到一个蘑菇

  两个大的让小的去弄一些野菜一起来吃

  小的说 我不去 我走了 你们就吃了我的蘑菇了

  两个大的说 不会的 放心去把 于是小白兔就去了~~~   

  半年过去了 小白兔还没回来 一个大的说 它不回来了 我门吃把

  另一个大的说 再等等吧~~~   

  一年过去了 小白兔还没回来 两个大的商量 不必等了 我们吃了吧  

  就在这时 那个小的白兔突然从旁边丛林中跳出来 生气的说 看!我就知道你们要吃我的蘑菇

一只兔子在公司的遭遇

第一家公司

老板:兔兔,今天工作忙不忙?

兔兔:不忙。

下班时老板对兔兔说:你明天不用来了。

兔兔:为什么?

老板:因为你不能多为公司干事,所以才会不忙,公司要你何用?

*第二家公司

老板:兔兔,今天工作忙不忙?

兔兔:很忙。

下班时老板对兔兔说:你明天不用来了。

兔兔:为什么?

老板:因为你做事没有条理性,所以才会整天忙,公司要你何用?

*第三家公司

老板:兔兔,今天工作忙不忙?

兔兔:还行。

下班时老板对兔兔说:你明天不用来了。

兔兔:为什么?

老板:因为你做事不理性,所以才会有什么”还行”不”还行”的,公司要你何用?

*第四家公司

老板:兔兔,今天工作忙不忙?

兔兔:刚忙完。

下班时老板对兔兔说:你明天不用来了。

兔兔:为什么?

老板:因为你做事效率太低,做完就不能检查一下么?公司要你何用?

*第五家公司

老板:兔兔,今天工作忙不忙?

兔兔:有些做完了,也检查过了,现在在做其他事。下班时老板对兔兔说:你明天不用来了。

兔兔:为什么?

老板:因为你做事缺乏系统性,有些事不会一起做么?公司要你何用?

*第六家公司

老板:兔兔,今天工作忙不忙?

兔兔:我的工作都做完了,正在帮别人做。下班时老板对兔兔说:你明天不用来了。

兔兔:为什么?

老板:因为你做事没有打算,你不会自己规划一下明天要做的事么?公司要你何用?

*第七家公司

老板:兔兔,今天工作忙不忙?

兔兔:今天的工作做完了,明天的工作也了。下班时老板对兔兔说:你明天不用来了。

兔兔:为什么?

老板:因为你做事不考虑整体,你不会帮同事分忧解劳吗?公司要你何用 ?

*第八家公司

老板:兔兔,今天工作忙不忙?

兔兔:今天的和明天的工作都做完了,现在在帮同事的忙。

下班时老板对兔兔说:你明天不用来了。

兔兔:为什么?

老板:因为你太爱出风头,你的帮忙很可能造成其他人的懒惰或 压力,公司要你何用?

*第九家公司

老板:兔兔,今天工作忙不忙?

兔兔:等一下,我思考一下再回答你。

下班时老板对兔兔说:你明天不用来了。

兔兔:为什么?

老板:你目中无人,我问你话竟然一再搪塞我, 公司要你何用?

*第十家公司

老板:兔兔,今天工作忙不忙?

兔兔:我……我……不、不知道……该、该怎么、回答你。

下班时老板对兔兔说:你明天不用来了。

兔兔:为什么?

老板:因为你连做事忙不忙都不知道,公司要你 何用?

*第十一家公司

老板:兔兔,今天工作忙不忙?

兔兔:去你的,老子辞职了~~~~~~~~~~

老板:嘿!有个性,我们公司就不放你走!

两只兔子被关进牢房,有一次,好不容易从牢房院逃了出来。但出了门还要翻过100道墙,才能到达公路。他们一起翻了60道墙,公兔问母兔:“老婆你累不累?”母兔回答说不累。公兔就说那好不累我们接着翻。当翻到第99道墙的时候,公兔又问母兔说:“老婆你累不累?”母兔回答道:“我累啦!我们回去吧!” 于是他们又翻回去了

王*的女儿叫王冰冰。

一天,王*回到家里,王冰冰跑过来说:”爸爸,爸爸,我给你讲个故事吧。”

王*说:”好吧。”

王冰冰就讲:

一天,有一只非常可爱的小白兔跑在大森林里,结果迷路了。这时它看到一只小黑兔,便跑去问:”小黑兔哥哥,小黑兔哥哥,我在大森林里迷路了,怎样才能走出大森林呀?”小黑兔问:”你想知道吗?”小白兔说:”想。”小黑兔说:”你想知道的话,就得先让我舒服舒服。”小白兔没法子,只好让小黑兔舒服舒服。小黑兔于是就告诉小白兔怎么走,小白兔知道了,就继续蹦蹦跳跳地往前跑。

跑着跑着,小白兔又迷路了,结果碰上一只小灰兔。小白兔便跑去问: “小灰兔哥哥,小灰兔哥哥,我在大森林里迷路了,怎样才能走出大森林呀?”小灰兔问:”你想知道吗?”小白兔说:”想。”小灰兔说:”你想知道的话,就得先让我舒服舒服。”小白兔没法子,只好让小灰兔也舒服舒服。小灰兔于是就告诉小白兔怎么走,小白兔知道了,就又继续蹦蹦跳跳地往前跑。

于是,小白兔终于走出了大森林。这时,小白兔发现自己怀孕了。

这时候,王冰冰问王朔:”爸爸,你猜猜,小白兔生了一窝什么颜色的小兔兔?”

王*说:”什么颜色呀?”

王冰冰说:”你想知道吗?”

王*说:”想。”

王冰冰说:”你想知道的话,就得先让我舒服舒服。”

王*后来说:”哥们一听,登时就晕了。”

小白兔跑在大森林里,结果又迷路了,这时,它碰上一只小花兔,这回小白兔可学乖了,跑过去说:”小花兔哥哥,小花兔哥哥,你要是告诉我怎样才能走出大森林,我就让你舒服舒服。”

小花兔一听,登时抡圆了给小白兔一个大嘴巴,说:”xx,你丫是问路呐,还是找办呐?”

公共汽车上有小白,小红和小蓝,问谁会晕车?

答案:是小白,因为小白”兔”

小白加小白等于什么?

答:小白“兔(two)”

小白兔·大灰狼

小白兔:快问我。快问我。“你是小白兔么?”

大灰狼:“你是小白兔么?”

小白兔:“对啊对啊。我就是小白兔”

小白兔:快问我。快问我。“你是长颈鹿么?”

大灰狼:“你是长颈鹿么?”

小白兔:“你TM傻啊。我不告诉你我是小白兔了么?!”

大灰狼:“。。。”

postfix常用main.cf参数

说明:设定特殊的发信人地址参数限制。
  可以选择的参数有:

  【check_relay_domains】 检测转发域。

  【permit_auth_destination】 允许经过认证的目的地。

  【reject_unauth_destination】 拒绝为经过认证的目的地。

  【permit_mx_backup】 允许反查询MX主机名称。

  【check_recipient_access maptype:mapname】 根据mapname文件中设定的规则限制。

  【reject_unknown_recipient_domain】 拒绝转发到没有DNS A或MX纪录的域名。

  【reject_non_fqdn_recipient】 拒绝不符合规则的转发目标。

  【reject_unknown_sender_domain】 拒绝没有IP反解析纪录的发件人域名。

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

  ETRN命令限定过滤

  系统保留,不开放。

  反垃圾邮件组织过滤

  参数:

  【maps_rbl_domains 】

  说明:  这是一个非常有特色的反垃圾邮件功能。这个参数通常设定为

  maps_rbl_domains = blackholes.mail-abuse.org

  如果RBL lookup打开,系统回自动与全球著名的反垃圾邮件组织mail-abuse进行同步。组织来自mail-abuse所列举的不安全的电子邮件服务器。

在缺省状态下这个功能是关闭的。

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

  ===SMTP对话行长度限定过滤===

  参数:

  【line_length_limit】

  说明:  设定SMTP所接受的最长字符行的长度。 缺省为2048字节。邮件头部长度限定过滤

  参数:

  【header_size_limit】

  说明:  设定SMTP所接受的最长邮件头部信息的长度。

缺省为102400字节

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

 ===收件人数量限定过滤===

  参数:

  【extract_recipient_limit 】

  说明: 限制扩展的收件人数量限制。这通常用于防止采用”sendmail -t”的方式来进行的攻击行为。

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

 ===邮件长度限定过滤===

  参数:

 【message_size_limit 】

  说明: 这个参数很重要。用于限定系统所接受的最大的单封邮件长度。

  缺省为10240000 字节。

  例如:

  message_size_limit = 20480000

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

  弹回邮件长度过滤

  参数:

  【bounce_size_limit】

  说明: 这个参数非常重要,用于设定弹回的最大邮件尺寸。

  缺省为50000 字节。

linux常用命令(备份)

Apache重新启动命令
/etc/init.d/httpd restart 重启
/etc/init.d/httpd start 启动
/etc/init.d/httpd stop 停止

Linux 系统常用命令格式:
command [option] [argument1] [argument2] …
其中option以“-”开始,多个option可用一个“-”连起来,如“ls -l -a” 与“ls -la”的效果是一样的。根据命令的不同,参数分为可选的或必须的;所有的命令从标准输入接受输入,输出结果显示在标准输出,而错误信息则显示在标准错误输出设备。可使用重定向功能对这些设备进行重定向。

命令在正常执行结果后返回一个0值,如果命令出错可未完全完成,则返回一个非零值(在shell中可用变量$?查看)。 在shell script中可用此返回值作为控制逻辑的一部分。

帮助命令:
man 获取相关命令的帮助信息
例如:man dir 可以获取关于dir的使用信息。

info 获取相关命令的详细使用方法
例如:info info 可以获取如何使用info的详细信息。

文件操作:
cat 显示文件内容和合并多个文件
clear 清屏
chattr 改变文件属性
chgrp 改变文件组权
chmod 改变文件或目录的权限
chown 改变文件的属权
comm 比较两个已排过序的文件
cp 将文件拷贝至另一文件
dd 从指定文件读取数据写到指定文件
df 报告磁盘空间使用情况
diff 比较两个文本文件,列出行不同之处
du 统计目录/文件所占磁盘空间的大小
file 辨识文件类型
emacs 功能强大的编辑环境
find 搜索文件并执行指定操作(find2)
grep 按给定模式搜索文件内容
head 显示指定文件的前若干行
less 按页显示文件
ln 创建文件链接
locate 查找符合条件的文件
more 在终端屏幕按帧显示文本文件
mv 文件或目录的移动或更名
rm/rmdir 删除文件/目录
sed 利用script来处理文本文件
sort 对指定文件按行进行排序
tail 显示指定文件的最后部分
touch 创建文件
tr 转换字符
vi 全屏编辑器
wc 显示指定文件中的行数,词数或字符数
which 在环境变量 $PATH 设置的目录里查找符合条件的文件

压缩与备份:
bzip2/bunzip2 .bz2文件的压缩/解压缩程序
cpio 备份文件
dump 备份文件系统
gzip/gunzip .gz文件的压缩/解压缩程序
gzexe 压缩可执行文件
restore 还原由倾倒(Dump)操作所备份下来的文件或整个文件系统(一个分区)
tar 将若干文件存档或读取存档文件
unarj 解压缩.arj文件
zip/unzip 压缩/解压缩 zip文件
zipinfo 列出zip压缩文件的详细信息

磁盘操作:
cd/pwd 切换目录/显示当前工作目录
df 显示磁盘的相关信息
du 显示目录或文件的大小
e2fsck 检查ext2/ext3文件系统的正确性
fdisk 对硬盘进行分区
fsck 检查文件系统并尝试修复错误
losetup 设置循环设备
ls 列出目录内容
mkdir 创建目录
mformat 对MS-DOS文件系统的磁盘进行格式化
mkbootdisk 建立目前系统的启动盘
mke2fs 建立ext2文件系统
mkisofs 制作iso光盘映像文件
mount/umount 加载文件系统/卸载文件系统
quota 显示磁盘已使用的空间与限制
sync 将内存缓冲区内的数据写入磁盘
tree 以树状图列出目录的内容

系统操作:
alias 设置指令的别名
chkconfig 检查,设置系统的各种服务
clock 调整 RTC 时间
date 显示或设置系统时间与日期
dmesg 显示开机信息
eval 重新运算求出参数的内容
exit 退出目前的shell
export 设置或显示环境变量
finger 查找并显示用户信息
free 显示内存状态
hostid 显示主机标识
hostname 显示主机名
id 显示用户标识
kill 删除执行中的程序或工作
last 列出目前与过去登入系统的用户相关信息
logout 退出系统
lsmod 显示已载入系统的模块
modprobe 自动处理可载入模块
passwd 设置用户密码
ps process status 报告程序状况
reboot 重启计算机
rhwo 查看系统用户
rlogin 远程登入
rpm 管理Linux各项套件的程序
shutdown 关机
su switch user 变更用户身份
top 显示,管理执行中的程序
uname 显示系统信息
useradd/userdel 添加用户 / 删除用户
userinfo 图形界面的修改工具
usermod 修改用户属性,包括用户的shell类型,用户组等,甚至还能改登录名
w 显示目前注册的用户及用户正运行的命令
whereis 确定一个命令的二进制执行码,源码及帮助所在的位置
who 列出正在使用系统的用户
whois 查找并显示用户信息

网络通信:
arp 网地址的显示及控制
ftp 文件传输
lftp 文件传输
mail 发送/接收电子邮件
mesg 允许或拒绝其他用户向自己所用的终端发送信息
mutt E-mail管理程序
ncftp 文件传输
netstat 显示网络连接、路由表和网络接口信息
pine 收发电子邮件,浏览新闻组
ping 向网络上的主机发送 icmp echo request 包
ssh 安全模式下的远程登录
telnet 远程登录
talk 与另一用户对话
traceroute 显示到达某一主机所经由的路径及所使用的时间
wget 从网络上自动下载文件
write 向其他用户的终端写信息