CentOs下Apache配置全过程

 源码包安装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地址。配置成功如下:

 

posted @ 2012-09-18 15:15  xiaoshi1991  阅读(473)  评论(0编辑  收藏  举报