Apache配置

一、apache简介:

1Apache是最流行的web服务器,它开放源代码,支持挂平台应用(linuxUnixwindows)。

2Apache的优点:

1)功能强大,apache自带了很多功能模块,可根据要求编译所需的模块

2)配置简单,/usr/local/apache/conf/httpd.conf

3)速度快,apache处理静态页面文件效率高

4)性能稳定,apache在高负荷请求下性能表现卓越

3apache的缺点:

1)只支持静态网页,对于jspphp等动态网页不支持

2apache是以进程为基础的结构,进程要比线程消耗更多的系统资源,不适合多处理器环境;因此在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器

 

二、apache安装

tar zxvf httpd-2.2.9.tar.gz

cd http-2.2.9

./configure

--prefix=/usr/local/apache配置apache的安装目录

--enable-so apache核心装载DSO

--enable-modules=all将所有模块编译到httpd文件中

--enable-mods-shared=all动态加载所有模块

--enable-rewrite 使apache支持地址重写

--enable-cgi 启用cgi

--enable-expires添加文件过期限制,缓存在客户端有效时间内不会再去访问服务器

--enable-headers 文件头信息改写,网页压缩功能需要

--enable-deflate网页压缩,可达40%,节省带宽,但对cpu有一定压力

make

make install

 

三、apache的目录结构

 

1binapache服务程序目录(脚本)

2lib:库文件目录

3conf:配置文件目录

4logs:日志文件目录

5htdocs:默认网页根目录

6cgi-bin:默认cgi目录

7modules:动态加载模块目录

8manualapache使用文档目录

9man:帮助文档目录

10error:默认错误应答文件目录

11include:头文件目录

12iconsapache图标文件目录

 

四、apache配置文件

1/usr/local/apache/conf/httpd.conf

Apache主配置文件,配置对整个apache生效

2/usr/local/apache/bin/apachectl  start/restart/stop

Apache管理脚本,它自动检测httpd.conf的设定,配置错误会导致启动错误

3/usr/local/apache/bin/httpd

httpd是一个启动apache的二进制文件

4/usr/local/apache/modules/

Apache是模块化的web服务器,所有编译的模块都会放在此目录,然后在httpd.conf文件中指定加载的模块和模块的位置

5/usr/local/apache/logs/access_log

Apache访问日志

6/usr/local/apache/logs/error_log

Apache错误日志

7/usr/local/apache/logs/httpd.pid

Apache守护进程号文件

 

五、httpd.conf配置

1、全局变量

1ServerRoot  "/usr/local/apache"

ServerRoot用于指定守护进程httpd的运行目录

2PidFile logs/httpd.pid

PidFile指定的文件将记录httpd守护进程的进程号,由于httpd能自动复制,因此apache启动后系统会有多个httpd进程,但只有一个进程为最初的启动进程,它为其他进程的父进程,对父进程发送信号将影响所有的httpd进程。如果不指定PidFile,将把此文件默认放在logs/httpd.pid

3Timeout 300

Timeout用来定义客户端和服务器程序连接的超时间隔,单位为秒;超过这个时间,服务器将断开与客户端的链接

4KeepAlive on

Keepalive用于定义是否允许用户建立永久连接,on允许,off拒绝。当要打开一个含有很多图片页面,完全可以建立一个tcp连接将所有信息从服务器传到客户端,而没必要对每个图片都建立一个tcp连接,Keepalive建议设为on

5MaxKeepAliveRequests  100

MaxKeeoAliveRequests用来定义一个tcp连接可以进行http请求的最大次数,0为无限制。当KeepAlive设定为on时,此项才生效。

6KeepAliveTimeout 5

KeepAliveTimeout用来限定一次连接中最后一次请求完成后延时等待的时间,超过这个时间,服务器就断开连接

7Listen 80

Apache的监听端口,可以更改

2、配置主服务器

1User nobody

Group nobody

定义httpd的用户和组,默认由nobody启动apache

2ServerAdmin you@example.com

ServerAdmin设定网站管理员的邮件地址,当apache出现问题时会发邮件到此地址

3ServerName www.example.com80

ServerName指定系统的主机名,如果没有制定则会以hostname为依据,设定的主机名一定能与ip对应起来(/etc/hosts设定)

4UseCanonicalName off

UseCanonicalName用来设定是否使用标准的主机名,如果设置为on,则以ServerName指定的主机名为主,如果web主机有多个主机名,则应设为off(默认设为off

5DocumentRoot /usr/local/apache/htdocs/

DocumentRoot设置网页的根目录,此目录可以是一个链接

6<Directory />

    Options FollowSymLinks

    AllowOverride None

    Order deny,allow

    Deny from all

</Directory>

上面这段是对DocumentRoot指定目录的权限设定

a<Directory />指定的就是DocumentRoot

bOptions表示在这个目录内能够执行的操作:

l  Indexes:此参数表示如果在DocumentRoot指定的目录下找不到以index大头的文件,就将此目录下所有的文件列出来。这个参数高危,不使用

l  FollowSymLinks:表示在DocumentRoot指定目录下允许符号链接到其他目录

l  ExecCGI:表示允许在DocumentRoot指定的目录下执行CGI操作

l  Includes:准许SSI操作

l  MultiViews:不常用,根据语言的不同显示不同的信息提示

cAllowOverride,通过设定AllowOverride的值决定是否读取目录中的.htaccess文件,来改变原来所设置的权限,参数All:可以读取.htaccess文件来修改原有的的权限;None:表示不可以读取.htaccess文件,权限统一控制

dOrder,用来控制目录和文件的访问授权

l  DenyAllow:表示先检查禁止的设定,再检查允许的设定

l  AllowDeny:表示先检查允许的设定,再检查禁止的设定

Order用来控制访问规则AllowDeny的生效顺序

例:apache.org域中所有主机,除了foo.apache.org子域包含的主机被拒绝以外,其他都允许访问。而所有不在apache.org域中的主机都不允许访问,因为默认状态是拒绝对服务器的访问。

Order Allow,Deny
Allow from apache.org
Deny from foo.apache.org

另一方面,如果上个例子中的Order指令改变为"Deny,Allow",将允许所有主机的访问。这是因为,不管配置文件中指令的实际顺序如何,"Allow from apache.org"指令会最后被评估到并覆盖之前的"Deny from foo.apache.org"。所有不在apache.org域中的主机也允许访问是因为默认状态被改变到了允许

7DirectoryIndex index.html index.htm index.php index.jsp

apache默认首页的设定,参数的先后顺序就是网页打开的先后顺序

8UserDir public_html

UserDir用于设定用户个人主页存放的目录,默认为public_html,例netadmin的个人主页/home/netadmin/ public_html

9AccessFileName .htaccess

定义每个用户目录下的访问控制文件的文件名,默认为.htaccess

10TypesConfig conf/mime.types

TypesConfig定义在哪里查询mime.types文件

11HostnameLookups off

HostnameLookups用来指定apache日志记录访问端地址是ip还是域名,off—ipon—域名,建议设为off

12ErrorLog logs/error_log

指定错误日志的位置

13CustomLog logs/access_log common

指定apache访问日志文件的位置和记录日志的模式

14ServerTokens Full

ServerTokens定义在HTTP回应头中的信息类型,默认为Full,显示所有信息,可设为Full/OS/Minor/Minimal/Major/ProdProd显示的信息最少

15ServerSignature on

ServerSignature有三个参数,on表示在apache的出错页面会显示apache的版本以及加载模块的信息,emailon相同,但还会多出一个邮件地址链接,off则不显示任何信息。

16ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"

<Directory "/usr/local/apache2/cgi-bin">

    AllowOverride None

    Options None

    Order allow,deny

    Allow from all

</Directory>

默认在/usr/local/apache2/cgi-bin目录下具有CGI的脚本执行权限。

3、虚拟主机的设定

(1)NameVirtualHost *

表示启用虚拟主机,如果开启虚拟主机则DocumentRoot指令则失效,以虚拟主机指定的DocumentRoot为主

2<VirtualHost *:80>

   ServerAdmin webmaster@dummy-host.example.com

   DocumentRoot /www/docs/dummy-host.example.com

   ServerName dummy-host.example.com

   ServerAlias www.dummy-host.example.com

   ErrorLog logs/dummy-host.example.com-error_log

   CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

l  ServerAdmin:虚拟主机管理员的email

l  DocumentRoot:指定虚拟主机的网页根目录

l  ServerName:虚拟主机的域名

l  ServerAlias:虚拟主机别名

l  ErrorLog:指定虚拟主机错误日志的位置

l  CustomLog:指定虚拟主机访问日志的位置和格式

 

六、提示

由于apache的版本不同,所以不同版本的apache在安装和配置上会有所不同;旧版本的apache的配置大多在httpd.conf上,而新版本的httpd.conf被简化了,很多的配置都放在了conf/extra相应的文件中