【转】 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地址。配置成功如下: