叶子的小屋
CentOS下Apache配置全过程 .
2013-12-28 admin


⒈ 源码包安装httpd。



⑴、静态默认安装,命令如下:






完成后,先查询安装了那些模块命令如下:






再看模块是否激活,如下图:






可见模块没有被激活,若想添加模块了,可用如下命令加载:






接着可看到模块被加载激活了,如下:






⑵、动态安装且加载所有模块,命令如下:






完成后可以看到模块安装加载情况如下:






通过对比,推荐安装时采取动态完全安装。



⒉ apache配置文件参数详解。



这整个解释都是针对系统Cent OS
5.0安装时自带的apache所进行的。



⑴、先了解一下apache的相对结构。



/etc/httpd/conf/httpd.conf:主配置文件,其主要设定以它为主;



/etc/httpd/conf.d/*.conf:额外参数配置,如果你不想修改原始配置文件httpd.conf的话,可以将你自己的设置独立出来,如创建为/etc/httpd/conf.d/child.conf,apache启动时就被载入;



/usr/lib/httpd/modules/:apache支持很多模块,你所想要的模块都放在其中;



/var/www/html/:默认‘首页’所在目录,当你输入http://localhost时所显示资料所在目录;



/var/www/error/:配置错误或浏览器要求资料错误时,浏览器上出现的错误讯息以这个目录预设为主;



/var/www/icons/:它提供
Apache默认给予的一些小图示,你可以随意使用,当你输入http://localhost/icons/时所显示的资料所在;



/var/www/cgi-bin/:默认给一些可执行的CGI(网页程序)程序放置的目录;



/var/log/httpd/:默认的apache登录信息都放在这里,对流量较大的网站,这个目录要小心设置;



/usr/sbin/apachectl:apache的主要启动文件,其实是shell
script;



/usr/sbin/httpd:apache的二进制启动文件。



⑵、主配置文件httpd.conf详解。



其基本设定格式如下,如例子对目录/var/www/html/的设定:






①、httpd.conf设置分三部分,首先针对全局环境参数(Global Environment):



ServerTokens
OS
告知用户端WWW服务器的版本与操作系统



ServerRoot
"/etc/httpd"
Apache安装路径



PidFile
run/httpd.pid
放置PID的目录,方便软件管理,是相对路径



Timeout
120
持续连接如果等待超过120秒则连接断开



KeepAlive
Off
是否允许持续性的连接,预设为否



MaxKeepAliveRequests
100
保持的连接的人数,改成0就是说没有人数的限制



KeepAliveTimeout
15
在允许KeepAlive条件下,保持连接的超出时间






上面是两组与服务器连接资源有关的设置,分为worker与prefork,两组的设定都是相似的,httpd启动时只采用一组设定,/usr/sbin/httpd执行的是prefork组、/usr/sbin/httpd.worker执行的是worker组,预设为prefork组,可在/etc/sysconfig/httpd中查询使用那个组。



Listen
80
监听的端口号



LoadModule
access_module modules/mod_access.so



……(下面省略)显示载入的模块组



Include
conf.d/*.conf
使得目录/etc/httpd/conf.d/下的配置文件*.conf都会被读入



User apache



Group
apache
由谁启动Apache服务器



②、接着是针对“主”服务配置(’Main’ server
configuration):



ServerAdmin
root@localhost
网页出错给谁发信通知



UseCanonicalName
Off
是否使用标准主机名称,预设为否



DocumentRoot
"/var/www/html"
网页存放的路径,文档的根目录






<Directory>是针对目录权限的设定。上面前一组是针对httpd的预设环境而来的,是“/”的设定,设置很严格;后一组是针对根目录/var/www/html的设定。几个设置的解释如下:



Options表示目录内能进行的动作,设置有None、All或Indexes、FollowSymLinks、ExecCGI、Includes、MultiViews选项的任意组合。None表示只能浏览;All则可以做任何事,但不包括MultiViews;Indexes表示在无首页档案时,显示整个目录下的档案名称;FollowSymLinks让此目录下的链接文件可链接出此目录外;ExecCGI让次目录具有执行CGI程序的权限;Includes让一些Server-Side Include程序可以执行;MultiViews与语系资料(language
priority)有关。



AllowOverride表示是否允许额外配置文件.htaccess的权限启用,覆盖httpd.conf相关的设置,设置有ALL、AuthConfig、Indexes、Limits、None。ALL表示完全启用;AuthConfig仅有网页认证时启用;Indexes允许index方面的启用;Limits允许使用者利用Allow、Deny与Order管理可浏览的权限;None表示文件.htaccess失效。



Order决定是否可被浏览的权限设定,分deny,allow与allow,
deny,deny,allow以deny优先处理,无写入规则时预设为allow;allow, deny则相反。Allow from
all则开放所有浏览权限。






这是配置个人用户主目录的设定,预设关闭






把所有以.ht开头的文件做限制,阻止Web客户查看



TypeConfig
conf/mime.types
定义在哪里查询mime.types文件



DefaultType
text/plain
定义当不能确定MIME类型时服务器提供的默认MIME类型,当服务主要包含text或HTML文档,“text/plain”是一个好的选择,如果大多是二进制文档,诸如软件或图像,应使用
“application/octer-stream”






模块mod_mime_magic允许服务器从自己定义类型的文件中使用不同的线索(hints),这个MIMEMagicFile指令定义hints定义所在的文件



HostnameLookups
Off
指定记录用户端是名字还是IP地址,默认值为off,记录IP地址



ErrorLog
logs/error_log
记录错误的日志文件位置



LogLevel
warn
控制记录在错误日志文件中的日志信息数量,可能值有debug、info、notice、warn、error、crit、alert、emerg



定义日志格式






CustomLog
logs/access_log common
指定接入日志文件的定位和格式,如果没有在<VirtualHost>内定义这个指令,传输信息将记录在这里,若定义了这个指令,则记录在你指定的位置



ServerSignature
On
随意的添加包含服务器版本和虚拟主机名字一行信息到server-generated输出页中



Alias /icons/
"/ var/www/icons/"
使用别名






    设置目录/var/www/icons权限



ScriptAlias
/cgi-bin/ "/var/www/cgi-bin/"
本质上与Aliases一样,除了这里的文档在请求时做为程序处理处理以外






IndexOptions
FancyIndexing VersionSort NameWidth=*
HTMLTable
控制server-generated目录列表显示特征






 AddIcon*
指令告诉服务器不同扩展名的图象文件如何显示,只适用于FancyIndexed指令



DefaultIcon
/icons/unknown.gif
为那些没有显式定义图标的文件提供处理



ReadmeName
README.html
指定服务器默认查找的README文件的名字,并添加到目录列表中



HeaderName
HEADER.html
指定目录列表前缀文件的文件名



IndexIgnore
.??* *~ *# HEADER* README* RCS CVS *,v *,t
指定目录索引忽略的和不包含在列表中的文件名集合,支持shell类型的通配符






指定文档的语言



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
以优先次序递减的方式排列语言



ForceLanguagePriority Prefer
Fallback
在通讯的情况下或没有可接受的语言匹配的情况下提供一个结果页



AddDefaultCharset
UTF-8
为发送出的所有页指定默认的字符集






 AddType允许你为指定的文件类型添加或覆盖mime.types文件中配置的MIME,AddHandler允许你映射确定的文件扩展名到“handlers”,与文件类型无关的行为,这既能编译到服务器中也可以添加到Action指令中。



AddHandler
type-map var
这是默认的设定以允许Apache的“It Worked”页能多种语言分发






使得能在在服务器端分析包含(SSI)的.shtml文档






这是一个国际化的出错应答设置






更改标准的HTTP应答行为以处理己知的浏览器问题



③、虚拟机配置(Virtual Hosts):






这是一个虚拟机设置实例配置,没启用。



3、apache的应用。



⑴、apache的启动。



启动httpd有两种方式,如下图所示,可以查询日志看到是否成功启动:






启动后,在浏览器中输入本机地址显示如图:






这是一个apache的欢迎界面,因为根目录/var/www/html为空,当我在根目录里创建一个html文件后,如下图:






此时网页内容变了,如下:






⑵、配置个人用户主页。



 



先修改配置文件找到配置改为。



 



记得重启,如图:




接着创建个人用户目录,添加测试内容,注意权限修改(很重要),如图:




连接测试,发现打不开,如图:






原来SELinux没开启对httpd的支持,作如下改变:






此时测试成功,如图:






由于首页的Options内有FollowSymLinks参数,因此也可以直接使用链接文件连接到其他目录,如图所示:






测试如图:






⑶、启动某个目录的CGI程序执行权限。



Apache默认目录/var/www/cgi-bin放置要执行的CGI程序,其目录权限配置如下:



将其改为:,再找到#AddHandler
cgi-script .cgi
一行,修改为:AddHandler cgi-script .cgi
.pl,配置完成,重启httpd。



接着创建测试CGI程序test.cgi且修改权限,如图:






输入地址成http://218.108.235.78/cgi-bin/test.cgi功测试如图:






⑷、.htaccess与网页认证设置。



Apache提供有认证功能,使得能轻松设定要保护的网页。



①、先创建要保护的目录及资料,如图:






②、修改配置文件,确保存在如下配置:






这是把所有以.ht开头的文件做限制,阻止Web客户查看,然后添加配置如下:






③、接着在受保护目录下建立.htaccess文件,如图:






这些红线参数解释为:AuthName显示提示字样;AuthType是认证类型,选择默认的‘Basic’;AuthUserFile确定所要使用的账号密码文件;require接可用的账号。



④、建立密码文件apache.passwd,如图:






注意文件名称要与.htaccess文件里的AuthUserFile一致。



⑤、测试,成功如图:









⑸、设置虚拟主机



这里的虚拟主机,指的是在一部主机上有多个‘主网页’存在,实际这些网址都指向同一个IP。



①、先创建所需要的目录,如图:






②、配置虚拟主机,直接在目录/etc/httpd/conf.d下建立单独的配置文件virtual.conf,如图:






注意,使用虚拟主机后,原本主机名称也要写入,图上红线标示的就是原本主机。记得重启apache。



③、测试,修改C:\WINDOWS\system32\drivers\etc\hosts文件,添加内容如下:



使得域名能解析成IP地址。配置成功如下: