apache服务器常用精简.docx_第1页
apache服务器常用精简.docx_第2页
apache服务器常用精简.docx_第3页
apache服务器常用精简.docx_第4页
apache服务器常用精简.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

apache服务器2004-04-23 15:18 pm作者:linux知识宝库 ()来自:linux知识宝库 ()联系:linuxhero#6.3 WWW服务器现在要开始我们的重点内容了:www server。目前能做www server的程序很多,在UNIX下较常见的免费服务器就有很多种,例如NSCA,Apache等等。我们讨论的将是世界上最常用的一种,即Apache Server。6.3.1 Apache服务器按照apache开发组的说法,Apache代表“A patched Server”,因为它是在更古老的一些服务程序上通过一连串的补丁开发出来的。除非你买的是sun那样的系统,否则几乎每个UNIX发行商都可以免费提供apache的源代码或者是可以安装的软件包。几乎所有的Linux发行版本都会附带apache的软件包或者源代码,当然你也可以到任何能够提供UNIX系统应用的ftp站点去下载这个东西,所以我不想告诉你如何去下载它的代码了。可以取得的apache软件包可以是目标代码形式或者源代码方式,我们这里假定你用的是rpm包,例如redhat或者turbo Linux附带的apache rpm包。以下说明的内容将适用于这种rpm的缺省设置,特别是缺省目录设置,在后面我们将解释apache的编译,在那里我们将讨论目录设置和模块设置等功能。Apache的缺省配置文件放在/etc/httpd/conf下面,在较早的版本中,配置被分成几个文件,如/etc/httpd/conf/httpd.conf,/etc/httpd/conf/srm.conf和/etc/httpd/conf/access.conf。在较新的apache版本中,建议你只使用一个配置文件,即/etc/httpd/conf/httpd.conf。我们将主要的讨论比较新的这种配置方式。我的版本是apache-1.3.9。特别需要注意的是,如果你的系统配置目录中除了httpd.conf之外还有srm.conf和access.conf的话,那么系统缺省要去察看这两个文件。因此,建议你将这两个文件从系统上删除。/etc/httpd/conf/httpd.conf文件相当长,我们首先介绍基本的内容,在设置apache的工作中,第一个任务是设置html文档的位置。新的httpd.conf一般被分成几个段落,第一部分是全局变量的位置,按照我们习惯的方式,将在缺省的httpd.conf上进行必要的修改,下面列出一些我们比较感兴趣的选择:ServerType这个选项用来设置你的apache如何启动,它有两个选择,即standalone和inetd。standalone表示你的服务器程序是直接作为服务器守护进程启动,而inetd表示apache服务器将在inetd程序中启动。一般我们总是建议用standalone方式,因为inetd在请求较多的时候会出现一些问题。即使用ServerType standalone子句。ServerRoot /home/httpd设置Apache的缺声运行路径。不过,除非你在某些配置选项中使用相对路径,否则它从来不会影响什么。ErrorLogCustomLog 这两行设置缺省的记账文件的位置,errorlog和customlog分别是出错信息和正常工作信息的记录地点,例如ErrorLog /var/log/httpd/error_logCustomLog /var/log/httpd/access_log commonPort这个参数指明http服务器使用的端口,缺省值是80,当然你也可以选择其他的端口,但是这意味着你在连接的时候必须明确地指出使用的端口。范例:Port 80UserGroup设置服务器运行时使用的身份,通常我们为了安全,总是要把它设置成nobody,如:User nobodyGroup nobodyServerAdmin这个选项用来设置当服务器出现问题时,用来反馈问题的邮件地址,例如ServerAdmin ServerName通常apache服务器会从域名服务信息中得到服务器的域名,但是你也可以使用这个选项来避免域名服务器出错时apache失效。例如ServerName DocumentRoot 这个选项设置缺省的服务器使用的html文件的位置,例如:下面的一行DocumentRoot /home/httpd/html意味着 /xxx.html 被解释为/home/httpd/html/xxx.html。ScriptAlias 定义CGI脚本目录,例如ScriptAlias /cgi-bin/ “/home/httpd/cgi-bin”定义CGI脚本应该放在/home/httpd/cgi-bin/目录下,而反映在浏览器中的目录是/cgi-bin/。DirectoryIndex 这个选项定义缺省的主页文件,例如,DirectoryIndex index.html意味着/将显示/home/httpd/html/index.html。index.htmlAlias建立目录别名,例如Alias /ftp/ “/home/httpd/html/ftp/”UserDir用宿主目录作为html目录。参考6.3.2节。AccessFileName定义身份控制的文件名,通常总是设置成为AccessFileName .htaccessAddTypeAddHandler这两个选项用来加入各种文件映射,或者说MIME类型。通常AddType设定某种特定的文件类型对应某个特定的扩展名字,而AddHandler则为这种类型定义一个处理程序。例如,AddHandler cgi-script .cgi表示无论在什么地方,凡是看上去是一个.cgi的扩展名的程序就作为CGI脚本执行(应该避免,对吗?不过对于那些user的目录你可能只能用这个办法了。好在还有一个options ExecCGI也对可以执行cgi的目录进行限制)另外的一个常用的设定是AddType text/html .shtmlAddHandler server-parsed .shtml这两行允许服务器处理那些.shtml并且将它翻译成html送出。显然,我们现在的任务主要是修改DocumentRoot和ScriptAlias,DirectoryIndex,写一个简单的html文件,放到缺省的主页目录里,例如/home/httpd/html/index.html,设置其属性为755,然后就可以启动apache了:/usr/sbin/apachectl start或者/usr/sbin/httpd如果是重新启动apache,执行/usr/sbin/apachectl restart或者killall HUP httpd。然后在浏览器中就可以实验页面服务是否可以使用了。如果apache抱怨找不到httpd.conf,可以执行httpd f /etc/httpd/httpd.conf6.3.1 目录管理如同其他所有的网络服务一样,Apache同样使用各种安全性控制,例如存取地址控制和身份控制。这里我们先讲地址和目录控制。Apache将目录作为单元来进行存取控制,每个目录在/etc/httpd/conf/httpd.conf中使用一个段落,首先的是/目录,这实际是设置缺省值:Options FollowSymLinksAllowOverride None每个段落都是由这样的两组尖括号构成的行夹起来的,其中最主要的句子是Options,AllowOverride,Allow/Deny,Order等。Options这个子句用来说明一些主要的设置,目前可以使用的设置有Indexes,Includes,FollowSymLinks,ExecCGI,MultiView,当然还有两个最简单的选择就是None和All。None是禁止所有选择,而All允许上面的所有Options。一般我们主要关心的是Indexes和FollowSymLinks。Indexes是设定是否允许在目录下面没有index.html的时候显示目录,而FollowSymLinks决定是否可以通过符号连接跨越DocumentRoot。例如,尽管/ftp不在/home/httpd/html下面,但是我们仍然可以使用符号连接建立一个/home/httpd/html/ftp使得可以直接输入/ftp来访问这个目录。使用FollowSymLinks的办法很简单,就是首先在合适的目录段落里面Options FollowSymLinks,(符号连接的上层就可以)然后建立一个别名:Alias /ftp/ “home/httpd/html/ftp/”后面的是你建立的到/ftp的符号连接。注意这一行应该位于所有目录段落之外。AllowOverrideAllowOverride定义是否允许各个目录用目录中的.htaccess(后面解释)覆盖这里设定的Options。它的选择有Options,FileInfo,AuthConfig,Limit或者它们的组合,当然还有None和All。由于/是缺省设置,所以这里没有设置太多的内容,相反,我们应该在/之后独立设置各个目录的控制,例如:Options Indexes FollowSymLinksAllowOverride NoneOrder allow,denyAllow from all出现了两个新的选项:Order和Allow。Order它有两种用法,即Order allow,deny或者Order deny,allow。简单地说,它用来设置是先执行deny还是先执行allow,例如,Order deny,allow意味着先看deny行,再看allow行,这样如果deny from all再allow from /24后来的allow子句就会超越deny而对202.112.58.x打开访问。Allow/Deny from这两个选项和Order一起使用,Allow允许某个地址来的连接请求,Deny则禁止这个请求,例如在Order deny,allow的情况下,Deny from all,Allow from /24表示只有192.168.12.x的用户可以访问这个目录。现在我们来看看下面的一个设定:UserDir public_htmlAllowOverride FileInfo AuthConfig LimitOptions MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExecOrder allow,denyAllow from allOrder deny,allowDeny from all这个有什么用处?UserDir是一个特殊的选项,用来在用户的宿主目录下设置主页,比如,有一个名字叫wanghy的用户,其宿主目录是/home/wanghy,而且UserDir象我们刚才那样设定,那么,你可以在浏览器中输入/wanghy,它将对应的是宿主目录+UserDir,也就是/home/wanghy/public_html。当然,为了使这个功能生效,你得将这个目录设置为大家都可以读。(现在知道/yourname是怎么回事了吧,:PP)下面的行就是对这个功能的限制,注意要使得某人的这个功能生效,必须有这个段落,这个段落里别的东西都是熟知的,唯一新的东西是Limit段,它用来提供存取限制,例如对应的段落设置GET和POST权限,诸如此类。上面的段落表示所有人都可以通过www进行GET和POST,而任何人都不能PUT和DELETE、MOVE等等。Limit对某个路径进行存取限制。6.3.3 虚拟主机随着Apache的流行,虚拟主机已经变得没有那么神秘了。流行的虚拟主机有几种,例如,对每个虚拟主机分配一个IP,或者是一个主机端口,当然更好的方法是分配一个IP对应多个域名,然后根据域名来提供正确的相应。做一个基于IP的虚拟主机是最简单的。按照我们在前面提出的办法,给你的Apache服务器提供几个IP,例如,,。,然后对每一个IP使用一个这样的段落:DocumentRoot /home/httpd/html/www1/docServerName ScriptAlias /cgi-bin/ /home/httpd/html/www1/cgi-bin以后浏览的内容就是/home/httpd/html/www1/doc/index.html的内容了。有几个虚拟主机,就写上几个VirtualHost段落,注意这时候主机也必须是一个VirtualHost。在VirtualHost段落中,ErrorLog,CustomLog,DocumentRoot,ServerName,ScriptAlias和ServerAdmin选项仍然可以使用,而User和Group选项必须SuEXEC附加模块的支持。然后要明确地启动Listen,例如:Listen :80Listen :80每个地址Listen一次,这样就可以使用虚拟主机了。也可以使用端口虚拟主机,不过我认为这意义不大,因为客户必须明确地给出服务器的运行端口。IP虚拟主机实际并不是一个特别好的功能,因为它需要为每一个虚拟主机提供一个IP别名,对于IP地址比较紧张的商业单位,名字虚拟主机通常更有意义。名字虚拟主机是为一个IP地址分配若干个域名记录,例如可以同时设置为,,等等,也就是在域名解析记录中写上:www1 IN A www2 IN A 而在域名的反向查询文件中加上对应的PTR记录:2 IN PTR .2 IN PTR 然后,根据对不同名字的请求,服务器将发回不同的页面。要实现这个功能,假定你已经完成了DNS记录的设置,然后只要在httpd.conf中加入这样的一行:NameVirtualHost :80这一行告诉服务器把当成一个名字虚拟主机。然后,可以类似地设置虚拟主机目录,只是这个时候需要使用的是名字来标示虚拟主机:DocumentRoot /home/httpd/html/www1/docServerName ScriptAlias /cgi-bin/ /home/httpd/html/www1/cgi-bin这样就定义了一个名字虚拟主机。其他的虚拟主机入口可以同样地设置。注意:如果你要使用名字虚拟主机,那么请记住:你需要用A记录定义多个主机名字,而不是用CNAME来建立别名。CNAME建立的名字实际访问的时候仍然是原来的名字。6.3.4 身份控制现在我们来看看身份控制功能。身份控制功能其实很简单,就是对某个目录的存取权限加上限制,最常用的功能是加上密码,要求用户必须输入正确的用户名和密码才能进入。作用上,它和前面的地址控制类似,只是这一次限制的是用户的身份。要设置某个目录的存取权限,首先必须允许身份认证,这是在对应的directory段落里面设置的,例如,有个目录/home/public,要使用身份认证,需要使用AuthType进行定义:AuthType BasicAuthName Give Your Name and PasswdRequire valid-userorder allow,denyallow from allAuthGroupFile /etc/httpd/conf/groupsAuthUserFile /etc/httpd/conf/users这里面涉及到了几个新的命令:AuthType使用的身份认证形式,就我所知道的,实际上只能使用Basic和Digest两个选项,而且通常总是使用Basic。AuthName当进入一个需要身份认证的目录的时候,将弹出一个对话框让你输入用户名和口令,AuthName是对话框的提示信息。AuthGroupFileAuthUserFile这两个选项用来设置身份认证的用户名文件。注意Apache并不使用机器的真实账号,相反你必须用htpasswd命令来建立WWW用户,格式是:htpasswd -c 文件名 用户名-c选项创建一个新的www用户名字文件,文件名是容纳www用户名和口令的文件名字,例如htpasswd c /etc/httpd/conf/users user1将创建/etc/httpd/conf/users文件,并且加入user1用户,htpasswd程序还同时提示你输入用户口令。htpasswd /etc/httpd/conf/users user2将继续加入user2。以此类推。至于www的group文件就是一个普通的文本文件,每行格式是:组名:用户1 用户2,.例如:group1:user1 user2至于两个Auth命令的用法则可以看看刚才的那个例子,就是直接给出文件名。Require这个选项设定允许哪些用户进入,Require user 用户列表将允许某些用户进入,例如Require user user1 user2 将允许user1和user2访问,而Require group 组列表将允许某些组访问。另外有两个特殊的选项就是Require valid-user和Require valid-g

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论