Apche Httpd安装与配置
查看系统是否安装了httpd
rpm -qa | grep httpd 或者 yum list |grep httpd
安装需要的tar包有:
httpd-2.2.22.tar.gz,apr-1.4.6.tar.gz,apr-util-1.5.2.tar.gz,pcre-8.32.tar.gz
安装顺序为apr、apr-util、pcre、httpd。
安装httpd后的使用rpm -ql httpd查看基本信息
服务脚本:/etc/rc.d/init.d/httpd
运行目录:/etc/httpd/
配置文件:/etc/httpd/conf
主配置文件:/etc/httpd/conf/httpd.conf
扩展配置:/etc/httpd/conf.d/*.conf
socket:http:80/tcp,https:443/tcp
网页文件目录(DocumentRoot):/var/www/html
CGI:/var/www/cgi-bin/
默认主页面文件:/var/www/html/index.html
操作httpd服务命令
1. 启动 apachectl -k start
2. 停止 apachectl -k stop
3. 状态 apachectl –k graceful
4. 重启 apachectl –k restart
5.service httpd configtest #测试配置文件有没有语法错误
6.httpd -t #同上
7.httpd -l #当前服务器所使用的模型及开启模块
8.httpd -D DUMP_MODULES #当前服务器支持的模块
9.service httpd reload #重新加载配置文件
10.service httpd restart #重启httpd服务
注意:修改配置文件后要重新加载配置文件,修改服务器监听端口后要重启
服务
Httpd主配置文件/etc/httpd/conf/httpd.conf详解
1.ServerRoot "/etc/httpd"
用于指定Apache的运行目录,服务启动之后自动将目录改变为当前目
录,在后面使用到的所有相对路径都是想对这个目录下。服务器配置、出错信息,
日志文件都保存在此目录下。注意:不要在目录末尾加“/”
2.PidFile run/httpd.pid
服务器用于记录启动时进程ID的文件。记录httpd守护进程的pid号码,这是系统
识别一个进程的方法,系统中httpd进程可以有多个,但这个PID对应的进程是其
他的父进程
3.Timeout 60
服务器与客户端断开的时间。如果用户端超过60秒还没连上server,或server超过
60秒还没传送信息给用户端,即断线。
4.KeepAlive Off
是否持续连接(因为每次连接都得三次握手,如果是访问量不大,建议打开此项,
如果网站访问量比较大关闭此项比较好),修改为:KeepAlive On 表示允许程序
性联机
5.MaxKeepAliveRequests 100
表示一个连接的最大请求数,设置为0表示无限制,建议设置较高的值,以获得最
好的性能。
MinSpareServer 5
·MaxSpareServers 10
MinSpareServer 5表示最少会有5个闲置的处理程序,如果实际的数目少于此数目,
则会增加处理程序。MaxSpareServers 10表示最大的闲置处理程序数目,如果你的
网站需求量很大,可以将此数目设大一些,大不要随便将此数目设得太大。
StartServers 5
启动时Server的数目
MaxClients 150
限制同时间最大的连线数目,当然不能设得太小,一旦达到此数目,就无法再增
加用户端
·MaxRequestPerChild 0
限制子处理程序结果前的要求数目,0表示不限制
6.KeepAliveTimeout 15
同一连接同一客户端两个请求之间的等待时间。
7.<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
系统默认的模块,表示为每个访问启动一个进程(即当有多个连接公用一个
进程的时候,在同一时刻只能有一个获得服务)。
StartServer开始服务时启动8个进程,最小空闲5个进程,最多空闲20个进程。
MaxClient限制同一时刻客户端的最大连接请求数量超过的要进入等候队列。
MaxRequestsPerChild每个进程生存期内允许服务的最大请求数量,0表示永不结
束。
8.<IfModule worker.c>
StartServers 4
MaxClients 300
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
为Apache配置线程访问,即每对WEB服务访问启动一个线程,这样对内存占
用率比较小。
ServerLimit服务器允许配置进程数的上限。
ThreadLimit每个子进程可能配置的线程上限
StartServers启动两个httpd进程,
MaxClients同时最多能发起250个访问,超过的要进入队列等待,其大小有
ServerLimit和ThreadsPerChild的乘积决定
ThreadsPerChild每个子进程生存期间常驻执行线程数,子线程建立之后将不再
增加
MaxRequestsPerChild每个进程启动的最大线程数,如达到限制数时进程将结
束,如置为0则子线程永不结束
9.#Listen 12.34.56.78:80
Listen 80
允许将Apche绑定到指定的IP和端口,监听的端口,如有多块网卡,
默认监听所有网卡参见<VirtualHost>
10.150-221行为启动时加载的模块
11.Include conf.d/*.conf 加载的配置文件
12. User apache Group apache 启动服务后转换的身份,在启动服
务时通常以root身份,然后转换身份,这样增加系统安全。
13.ServerAdmin [email protected] 管理员邮箱
14.ServerName www.example.com:80
默认是不需要指定的,服务器通过名字解析过程来获得自己的名字,但如果
解析有问题(如反向解析不正确),或者没有DNS名字,也可以在这里指定
IP地址,当这项不正确的时候服务器不能正常启动。前面启动Apache时候
提示正在启动 httpd:httpd: apr_sockaddr_info_get() failed forjustin httpd: Could
not reliably determine the server‘s fully qualified domain name, using
127.0.0.1forServerName,解决方法就是启动该项把www.example.com:80修改
为自己的域名或者直接修改为localhost。
注: 主机名不能随便指定。必须是你的机器有效的DNS名称。
否则无法正常工作。
如果不能理解,倾向你的网络管理员询问。
如果你的主机没有注册DNS名,可在此输入IP地址。
此时必须用IP地址来访问。(如, http://123.45.67.89/)
这样扔可以完成重新定向的工作。
127.0.0.1 是TCP/IP的本地环路地址, 通常命名为localhost.
机器默认此地置为本身。 如果只是使用Apache来进行本地测试和开发,
可使用127.0.0.1 作为服务器名.
15.UseCanonicalName Off
如果客户端提供了主机名和端口,Apache将会使用客户端提供的这些信息
来构建自引用URL。这些值与用于实现基于域名的虚拟主机的值相同,并
且对于同样的客户端可用。CGI变量SERVER_NAME和SERVER_PORT
也会由客户端提供的值来构建。
16.DocumentRoot "/var/www/html"
网页文件存放的目录
17.<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
对根目录的一个权限的设置
18.<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None #此项控制目录中哪些.htaccess文件可覆盖。
Order allow,deny #控制哪些用户可从此服务器获得资料。
Allow from all
</Directory>
对/var/www/html目录的一个权限的设置,这个地址必须和DcoumentRoot保持一致。options中Indexes表示当网页不存在的时候允许索引显示目录中的文件,FollowSymLinks是否允许访问符号链接文件。有的选项有ExecCGI表是否使用CGI,如Options Includes ExecCGI FollowSymLinks表示允许服务器执行CGI及SSI,禁止列出目录。SymLinksOwnerMatch表示当符号链接的文件和目标文件为同一用户拥有时才允许访问。AllowOverrideNone表示不允许这个目录下的访问控制文件来改变这里的配置,这也意味着不用查看这个目录下的访问控制文件,修改为:AllowOverride All 表示允许.htaccess。Order对页面的访问控制顺序后面的一项是默认选项,如allow,deny则默认是deny,Allowfromall表示允许所有的用户,通过和上一项结合可以控制对网站的访问控制
19.<IfModule mod_userdir.c>
UserDir disabled
</IfModule>
是否允许用户访问其家目录,默认是不允许
20.#<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>
如果允许访问用户的家目录中的网页文件,则取消以上注释,并对其中进
行修改
22.DirectoryIndex index.html index.html.var
指定所要访问的主页的默认主页名字,默认首页文件名为index.html
23.AccessFileName .htaccess
定义每个目录下的访问控制文件名,缺省为.htaccess
24.<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
控制不让web上的用户来查看.htpasswd和.htaccess这两个文件
25.TypesConfig /etc/mime.types
用于设置保存有不同MIME类型数据的文件名
26.DefaultType text/plain
默认的网页的类型
27.<IfModule mod_mime_magic.c>
# MIMEMagicFile /usr/share/magic.mime
MIMEMagicFile conf/magic
</IfModule>
指定判断文件真实MIME类型功能的模块
28.HostnameLookups Off
当打开此项功能时,在记录日志的时候同时记录主机名,这需要服务器来反
向解析域名,增加了服务器的负载,通常不建议开启
29.#EnableMMAP off
是否允许内存映射:如果httpd在传送过程中需要读取一个文件的内容,它
是否可以使用内存映射。如果为on表示如果操作系统支持的话,将使用内
存映射。在一些多核处理器的系统上,这可能会降低性能,如果在挂载了
NFS的DocumentRoot上如果开启此项功能,可能造成因为分段而造成httpd
崩溃
30.#EnableSendfile off
这个指令控制httpd是否可以使用操作系统内核的sendfile支持来将文件发送
到客户端。默认情况下,当处理一个请求并不需要访问文件内部的数据时(比
如发送一个静态的文件内容),如果操作系统支持,Apache将使用sendfile
将文件内容直接发送到客户端而并不读取文件
31.ErrorLog logs/error_log
错误日志存放的位置
32.LogLevel warn
Apache日志的级别
33.LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
定义了日志的格式,并用不同的代号表示
34.#CustomLog logs/referer_log referer
#CustomLog logs/agent_log agent
说明日志记录的位置,这里面使用了相对路径,所以ServerRoot需要指出,日
志位置就存放在/etc/httpd/logs
35.ServerSignature On
定义当客户请求的网页不存在,或者错误的时候是否提示apache的版本的一
些信息
36.Alias /icons/ "/var/www/icons/"
定义一些不在DocumentRoot下的文件,而可以将其映射到网页根目录中,这
也是访问其他目录的一种方法,但在声明的时候切记目录后面加”/”
37.<Directory "/var/www/icons">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
定义对/var/www/icons/的权限,修改为 Options MultiViews FollowSymLinks
表示不在浏览器上显示树状目录结构
38.<IfModule mod_dav_fs.c>
# Location of the WebDAV lock database.
DAVLockDB /var/lib/dav/lockdb
</IfModule>
对mod_dav_fs.c模块儿的管理
39.ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
对CGI模块儿的的别名,与Alias相似。
40.<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
对/var/www/cgi-bin文件夹的管理,方法同上
关于cgi执行脚本的配置,这里有两种设置CGI脚本的方法。第一、CGI的脚本文件以.cgi为扩展名;第二、设置脚本可执行目录。但是这两种方法都需要将要执行的文件设置为711,才可以被执行。
第一种方法,我们需要在access.conf文件种将你要发行的目录设置为Option ExecCGI All,在srm.conf资源配置文件中,加上下列一句:
AddHandle cgi-script .cgi
这样在所有的目录种只要你的文件是.cgi为扩展名的,且文件访问权限为711的,无论给文件在你发行目录的任何一个地方都可以做为CGI被Apache服务器调用。这种方法一般没有第二种方法安全。
第二种方法,是将一个目录作为一个可执行目录,将所有的cgi文件都放在其中,这里就不一定非得是以.cgi为扩展名得文件可以执行,而是只要有711属性的文件就可以被执行,而且其它的非可执行文件都被禁止访问只要在/home/httpd/cgi-bin/目录中的可执行文件都可以被Web服务器调用,而其它的非可执行文件将被拒绝访问。
41.# Redirect old-URI new-URL
Redirect参数是用来重写URL的,当浏览器访问服务器上的一个已经不存在的资源的时候,服务器返回给浏览器新的URL,告诉浏览器从该URL中获取资源。这主要用于原来存在于服务器上的文档改变位置之后,又需要能够使用老URL能访问到原网页
42.IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable
Charset=UTF-8
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
...
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
当一个HTTP请求的URL为一个目录的时候,服务器返回这个目录中的索引文件,如果目录中不存在索引文件,并且服务器有许可显示目录文件列表的时候,就会显示这个目录中的文件列表,为了使得这个文件列表能具有可理解性,而不仅仅是一个简单的列表,就需要前这些参数。如果使用了IndexOptionsFancyIndexing选项,可以让服务器针对不同的文件引用不同的图标。如果没有就使用DefaultIcon定义缺省图标。同样,使用AddDescription可以为不同类型的文档介入描述
43.AddLanguage ca .ca
......
AddLanguage zh-TW .zh-tw
添加语言
44 .LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt
pt-BR ru sv zh-CN zh-TW
Apache支持的语言
45. AddDefaultCharset UTF-8
默认支持的语言
46. #AddType application/x-tar .tgz
支持的应用如果想支持对php的解析添加这样一行
47.#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz
支持对以.Z和.gz.tgz结尾的文件
48.AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
添加对上述两种文件的应用
49.#AddHandler cgi-script .cgi
修改为:AddHandler cgi-script .cgi .pl 表示允许扩展名为.pl的CGI脚本运行
50.AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
添加动态处理类型为server-parsed由服务器预先分析网页内的标记,将标记
改为正确的HTML标识
51#ErrorDocument 404 /missing.html
当服务器出现404错误的时候,返回missing.html页面
52. Alias /error/ "/var/www/error/"
赋值别名
53.<IfModule mod_negotiation.c>
<IfModule mod_include.c>
<Directory "/var/www/error">
AllowOverride None
Options IncludesNoExec
AddOutputFilter Includes html
AddHandler type-map var
Order allow,deny
Allow from all
LanguagePriority en es de fr
ForceLanguagePriority Prefer Fallback
</Directory>
</IfModule>
</IfModule>
对/var/www/error网页的权限及操作
54.BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
设置特殊的参数,以保证对老版本浏览器的兼容,并支持新浏览器的特性
Virtual Hosts
55.#NameVirtualHost *:80
如果启用虚拟主机的话,必须将前面的注释去掉,而且,第二部分的内容都可以
出现在每个虚拟主机部分。
# VirtualHost example:
#<VirtualHost *:80>
# ServerAdmin [email protected]
# DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>