专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Unix/FreeBsd » apache服务器配置:FreeBSD 配置Apache服务器 »正文

apache服务器配置:FreeBSD 配置Apache服务器

来源: 发布时间:星期一, 2009年1月12日 浏览:13次 评论:0
  Apache服务器设置文件位于/usr/local/etc/apache目录下传统上使用 3个配置文件httpd.conf,access.conf和srm.conf来配置Apache服务器行为httpd. conf提供了最基本服务器配置是对守护httpd如何运行技术描述;srm.conf是服务器资源映射文件告诉服务器各种文件MIME类型以及如何支持这些文件;access.conf用于配置服务器访问权限控制区别用户和计算机访问限制;这 3个配置文件控制着服务器各个方面特性因此为了正常运行服务器便需要设置好这 3个文件  除了这 3个设置文件的外Apache还使用mime.types文件用于标识区别文件对应MIME类型 magic文件设置区别MIME类型文件些特殊标识使得Apache服务器从文档后缀不能判断出文件MIME 类型时能通过文件内容中这些特殊标记来判断文档MIME类型

bash-2.02$ ls -l /usr/local/etc/apache
total 100
-rw-r--r--  1 root wheel  348 Apr 16 16:01 access.conf
-rw-r--r--  1 root wheel  348 Feb 13 13:33 access.conf.default
-rw-r--r--  1 root wheel 30331 May 26 08:55 httpd.conf
-rw-r--r--  1 root wheel 29953 Feb 13 13:33 httpd.conf.default
-rw-r--r--  1 root wheel 12441 Apr 19 15:42 magic
-rw-r--r--  1 root wheel 12441 Feb 13 13:33 magic.default
-rw-r--r--  1 root wheel  7334 Feb 13 13:33 mime.types
-rw-r--r--  1 root wheel  383 May 13 17:01 srm.conf
-rw-r--r--  1 root wheel  357 Feb 13 13:33 srm.conf.default
  事实上当前版本Apache将原来httpd.conf、srm.conf和access.conf中所有配置参数均放在了个配置文件httpd.conf中只是为了和以前版本兼容原因(使用这 3个设置文件方式来源于NCSA-httpd)才使用 3个配置文件而提供access.conf和srm.conf文件中没有具体设置

  新版本Apache使用配置文件为apache.conf它就等价于httpd.conf

  由于在新版本Apache中所有设置都被放在了httpd.conf中因此只需要调整这个文件中设置以下使用缺省提供httpd.conf为例解释Apache服务器各个设置选项然而不必它提供设置参数太多而烦恼基本上这些参数都很明确也可以不加改动运行Apache服务器但如果需要调整Apache服务器性能以及增加对某种特性支持就需要了解这些设置参数含义

  有关Apache服务器性能在Internet上存在很大争议基本上使用过Apache使用者几乎都不怀疑它优秀性能Apache也支撑了很多著名高负载网站WebSite但是在商业机构评测中Apache往往得分不高很多人指出在这些评测中商业Web服务器及其操作系统往往由其专业公司工程师进行过性能调整而Free 操作系统和Web服务器往往就使用其缺省配置或仅仅作很小更改需要指出除了操作系统性能调整的外Apache 服务器本身缺省配置绝不是最优化和最高效而是要适应几乎所有种类操作系统、所有种类硬件下设置多平台软件Software不可能为特定平台和特定硬件提供最优化缺省配置因此要使用Apache时候性能调整是必不可少

  在商业评测中忽略了个事实是评测时往往对区别种类功能进行比较例如使用Apache标准CGI 性能和ISAPINSAPI等服务器端API比较事实上Apache服务器和此可以比较功能为modperl FastCGI和ASP类似功能为PHP3等等只不过由于Apache开放模式这些功能是由独立开发组作为独立模块来实现但是在评测中测试人员没有加入相应模块评测其性能

  • HTTP守护进程运行参数
  httpd.conf中首先定义了些httpd守护进程运行时需要参数来决定其运行方式和运行环境

  ServerType standalone

  ServerType定义服务器启动方式缺省值为独立方式standalonehttp d服务器将由其本身启动并驻留在主机中监视连接请求在FreeBSD下将在启动文件/usr/local/etc /rc.d/apache.sh中自动启动Web服务器这种方式是推荐设置

  启动Apache服务器种方式是inet方式使用超级服务器inetd监视连接请求并启动服务器当需要使用inetd启动方式时便需要更改为这个设置并屏蔽/usr/local/etc/rc.d/apache .sh文件以及更改/etc/inetd.conf并重起inetd那么Apache就能从inetd中启动了

  两种方式区别是独立方式是由服务器自身管理自己启动进程这样在启动时能立即启动服务器多个副本每个副本都驻留在内存中有连接请求不需要生成子进程就可以立即进行处理对于客户浏览器请求反应更快性能较高而 inetd方式要由inetd发现有连接请求后才去启动http服务器由于inetd要监听太多端口因此反应较慢、效率较低但节约了没有连接请求时Web服务器占用资源因此inetd方式只用于偶尔被访问并且不要求访问速度服务器上事实上inetd方式不适合http突发和多连接特性个页面可能包含多个图象而每个图象都会引起个连接请求即使虽然访问人数造成教少但瞬间连接请求并不少这就受到inetd性能限制甚至会影响由inetd启动其他服务器

  ServerRoot "/usr/local"

  ServerRoot用于指定守护进程httpd运行目录httpd在启动的后将自动将进程当前目录改变为这个目录因此如果设置文件中指定文件或目录是相对路径那么真实路径就位于这个ServerR oot定义路径的下

  由于httpd会经常进行并发文件操作就需要使用加锁方式来保证文件操作不冲突由于NFS文件系统在文件加锁方面能力有限因此这个目录应该是本地磁盘文件系统而不应该使用NFS文件系统

  #LockFile /var/run/httpd.lock

  LockFile参数指定了httpd守护进程加锁文件般不需要设置这个参数Apac he服务器将自动在ServerRoot下面路径中进行操作但如果ServerRoot为NFS文件系统便需要使用这个参数指定本地文件系统中路径

  PidFile /var/run/httpd.pid

  PidFile指定文件将记录httpd守护进程进程号由于httpd能自动复制其自身因此系统中有多个httpd进程但只有个进程为最初启动进程它为其他进程父进程对这个进程发送信号将影响所有httpd进程PidFILE定义文件中就记录httpd父进程进程号

  ScoreBoardFile /var/run/httpd.scoreboard

  httpd使用ScoreBoardFile来维护进程内部数据因此通常不需要改变这个参数除非管理员想在台计算机上运行几个Apache服务器这时每个Apache服务器都需要独立设置文件htt pd.conf并使用区别ScoreBoardFile

  #ResourceConfig conf/srm.conf

  #AccessConfig conf/access.conf

  这两个参数ResourceConfig和AccessConfig就用于和使用srm.conf和access.conf设置文件老版本Apache兼容如果没有兼容需要可以将对应设置文件指定为/dev/null这将表示不存在其他设置文件而仅使用httpd.conf个文件来保存所有设置选项

  Timeout 300

  Timeout定义客户和服务器连接超时间隔超过这个时间间隔(秒)后服务器将断开和客户机连接

  KeepAlive On

  在HTTP 1.0中次连接只能作传输次HTTP请求而KeepAlive参数用于支持HTTP 1.1版本次连接、多次传输功能这样就可以在次连接中传递多个HTTP请求虽然只有较新浏览器才支持这个功能但还是打开使用这个选项

  MaxKeepAliveRequests 100

  MaxKeepAliveRequests为次连接可以进行HTTP请求最大请求次数将其值设为0将支持在次连接内进行无限次传输请求事实上没有客户次连接中请求太多页面通常达不到这个上限就完成连接了

  KeepAliveTimeout 15

  KeepAliveTimeout测试次连接中多次请求传输的间时间如果服务器已经完成了次请求直没有接收到客户次请求在间隔超过了这个参数设置值的后服务器就断开连接

  MinSpareServers 5MaxSpareServers 10

  在使用子进程处理HTTP请求Web服务器上由于要首先生成子进程才能处理客户请求因此反应时间就有点延迟但是Apache服务器使用了个特殊技术来摆脱这个问题这就是预先生成多个空余子进程驻留在系统中旦有请求出现就立即使用这些空余子进程进行处理这样就不存在生成子进程造成延迟了在运行中随着客户请求增多启动子进程会随的增多但这些服务器副本在处理完次HTTP请求的后并不立即退出而是停留在计算机中等待下次请求但是空余子进程副本不能光增加不减少太多空余子进程没有处理任务也占用服务器处理能力因此也要限制空余副本数量使其保持个合适数量使得既能及时回应客户请求又能减少不必要进程数量

  因此就可以使用参数MinSpareServers来设置最少空余子进程数量 以及使用参数MaxSpareServers 来限制最多空闲子进程数量多余服务器进程副本就会退出根据服务器实际情况来进行设置如果服务器性能较高并且也被频繁访问就应该增大这两个参数设置对于高负载专业网站WebSite这两个值应该大致相同并且等同于系统支持最多服务器副本数量也减少不必要副本退出

  StartServers 5

  StartServers参数就是用来设置httpd启动时启动子进程副本数量这个参数和上面定义MinSpareServers和MaxSpareServers参数相关都是用于启动空闲子进程以提高服务器反应速度这个参数应该设置为前两个值的间个数值小于MinSpareServers和大于MaxS pareServers都没有意义

  MaxClients 150

  在另方面服务器能力毕竟是有限不可能同时处理无限多连接请求因此参数Maxclient s就用于规定服务器支持最多并发访问客户数如果这个值设置得过大系统在繁忙时不得不在过多进程的间进行切换来为太多客户进行服务这样对每个客户反应就会减慢并降低了整体效率如果这个值设置较小那么系统繁忙时就会拒绝些客户连接请求当服务器性能较高时就可以适当增加这个值设置对于专业网站WebSite应该使用提高服务器效率策略因此这个参数不能超过硬件本身限制如果频繁出现拒绝访问现象就介绍说明需要升级服务器硬件了对于非专业网站WebSite不太在意对客户浏览器反应速度或者认为反应速度较慢也比拒绝连接好就也可以略微超过硬件条件来设置这个参数

  这个参数限制了MinSpareServers和MaxSpareServers设置它们不应该大于这个参数设置

  MaxRequestsPerChild 30

  使用子进程方式提供服务Web服务常用方式是个子进程为次连接服务这样造成问题就是每次连接都需要生成、退出子进程系统操作使得这些额外处理过程占据了计算机大量处理能力因此最好方式是个子进程可以为多次连接请求服务这样就不需要这些生成、退出进程系统消耗Apache就采用了这样方式次连接结束后子进程并不退出而是停留在系统中等待下次服务请求这样就极大提高了性能

  但由于在处理过程中子进程要不断申请和释放内存次数多了就会造成些内存垃圾就会影响系统稳定性并且影响系统资源有效利用因此在个副本处理过定次数请求的后就可以让这个子进程副本退出再从原始htt pd进程中重新复制个干净副本这样就能提高系统稳定性这样每个子进程处理服务请求次数由MaxRe questPerChild定义 缺省设置值为30这个值对于具备高稳定性特点FreeBSD系统来讲是过于保守设置可以设置为1000甚至更高设置为0支持每个副本进行无限次服务处理

  #Listen 3000

  #Listen 12.34.56.78:80

  #BindAddress *

  Listen参数可以指定服务器除了监视标准80端口的外还监视其他端口HTTP请求由于FreeBSD系统可以同时拥有多个IP地址因此也可以指定服务器只听取对某个BindAddress< /B>IP地址HTTP请求如果没有配置这则服务器会回应对所有IP请求  即使使用了BindAddress参数使得服务器只回应对个IP地址请求但是通过使用扩展Listen参数仍然可以让HTTP守护进程回应对其他IP地址请求此时Listen参数使用方法和上面第 2个例子相同这种比较复杂使用方法主要用于设置虚拟主机此后可以用VirtualHost参数定义对区别IP虚拟主机然而这种使用方法是较早HTTP 1.0标准中设置虚拟主机思路方法每针对个虚拟主机就需要个IP地址实际上用处并不大在HTTP 1.1中增加了对单IP地址多域名虚拟主机支持使得虚拟主机设置具备更大意义

LoadModule mime_magic_module libexec/apache/mod_mime_magic.so
LoadModule info_module    libexec/apache/mod_info.so
LoadModule speling_module   libexec/apache/mod_speling.so
LoadModule proxy_module    libexec/apache/libproxy.so
LoadModule rewrite_module   libexec/apache/mod_rewrite.so
LoadModule anon_auth_module  libexec/apache/mod_auth_anon.so
LoadModule db_auth_module   libexec/apache/mod_auth_db.so
LoadModule digest_module   libexec/apache/mod_digest.so
LoadModule cern_meta_module  libexec/apache/mod_cern_meta.so
LoadModule expires_module   libexec/apache/mod_expires.so
LoadModule headers_module   libexec/apache/mod_headers.so
LoadModule usertrack_module  libexec/apache/mod_usertrack.so
LoadModule unique_id_module  libexec/apache/mod_unique_id.so
ClearModuleList
AddModule mod_env.c
AddModule mod_log_config.c
AddModule mod_mime_magic.c
AddModule mod_mime.c
AddModule mod_negotiation.c
AddModule mod_status.c
AddModule mod_info.c
AddModule mod_.c
AddModule mod_autoindex.c
AddModule mod_dir.c
AddModule mod_cgi.c
AddModule mod_asis.c
AddModule mod_imap.c
AddModule mod_actions.c
AddModule mod_speling.c
AddModule mod_userdir.c
AddModule mod_proxy.c
AddModule mod_alias.c
AddModule mod_rewrite.c
AddModule mod_access.c
AddModule mod_auth.c
AddModule mod_auth_anon.c
AddModule mod_auth_db.c
AddModule mod_digest.c
AddModule mod_cern_meta.c
AddModule mod_expires.c
AddModule mod_headers.c
AddModule mod_usertrack.c
AddModule mod_unique_id.c
AddModule mod_so.c
AddModule mod_env.c
  Apache服务器个重要特性就是其模块化结构这不但表现为其能在编译时能通过新模块加入新功能还表现为其模块可以动态加载入http服务而不必载入不需要模块使用Apache动态加载模块只需要设置好LoadModule和AddModule参数就可以了这种特性就是Apache DSO(Dynamic Shared Object)特性然而要想充分使用DSO特性仍然不是个简单事情不适当改动这里设置就可能造成服务器不能正常启动因此如果不是要增加或减少服务器提供功能就不要改动这里设置

  上面这些列表就显示了FreeBSD下缺省Apache服务器支持模块事实上很多模块是没有必要不必要模块不会被载入内存模块可以静态连接到Apache服务器内部也可以这样动态加载将Apache特性都编译成动态可加载模块是该Port做法而不是Apache缺省做法这样就以牺牲很小性能同时带来极大灵活性

  因而动态可加载能力还是对性能有轻微影响因此可以重新编译Apache将自己所需要功能编译进Apache 服务器内部可以让系统显得更为干净效率也有轻微提高通常仅仅为了这个目就重新编译Apache是没有必要如果需要增加其他特性而重新编译Apache不妨在增加其他模块同时将所有模块都静态连接入Apache 服务器使用者更喜欢动态加载模块那么也不妨全部都使用动态加载模块

  这些模块都被Ports Collection放置到/usr/local/libexec/apache目录下每个模块对应Apache服务器个特性详细解释每个模块功能需要相当多篇幅其中比较重要特性将在后面相应地方中进行解释而具体每个模块功能及使用方法就需要查看Apache文档

  #ExtendedStatus On

  Apache服务器可以通过特殊HTTP请求来报告自身运行状态打开这个ExtendedStatus 参数可以让服务器报告更全面运行状态信息

  • 主服务器设置
  Apache服务器需要各种设置以定义自己使用各种参数以提供Web服务对于使用虚拟主机情况除了在虚拟主机定义项中覆盖设置的外(有设置必须重新定义)这里设置也是虚拟主机缺省设置

  Port 80

  Port定义了Standalone模式下httpd守护进程使用端口标准端口是80这个选项只对于以独立方式启动服务器才有效对于以inetd方式启动服务器则在inetd.conf中定义使用哪个端口

  在Unix下使用80端口需要root权限些管理员为了安全原因认为httpd服务器不可能没有安全漏洞因而更愿意使用普通用户权限来启动服务器这样就不能使用80端口及其他小于1024端口而必须使用大于 1024端口来启动httpd般情况下8000或8080也是常用端口而Apache httpd服务器本身可以在以root权限打开80端口后再改变为普通用户身份进行运行这样就减少了危险性因而就不需要考虑这个安全问题但是如果普通用户也想安装配置自己WWW服务器那么就不得不使用大于1024端口当然普通用户不能使用 Ports Collection进行编译安装而必须手工编译安装

  User nobody

  Group nogroup

  User和Group配置是Apache安全保证Apache在打开端口的后就将其本身设置为这两个选项设置用户和组权限进行运行这样就降低了服务器危险性这个选项也只用于 Standalone模式inetd模式在inetd.conf中指定运行Apache用户由于服务器必须执行改变身份uid操作因此进程应该具备root权限如果是使用非root用户来启动Aapche这个配置就不会发挥作用

  缺省设置为nobody和nogroup这个用户和组在系统中不拥有文件保证了服务器本身和由它启动CGI 进程没有权限更改文件系统在某些情况下例如为了运行CGI和Unix交互也需要让服务器来访问服务器上文件如果仍然使用nobody和nogroup那么系统中将会出现属于nobody文件这对于系统安全是不利其他也会以nobody和nogroup权限执行某些操作就有可能访问这些nobody拥有文件造成安全问题般情况下要为Web服务设定个特定用户和组同时在这里更改用户和组设置

  ServerAdmin [email protected]

  配置文件中应该改变也许只有ServerAdmin项用于配置WWW服务器管理员email地址这将在HTTP服务出现条件下返回给浏览器以便让Web使用者和管理员联系报告习惯上使用服务器上webmaster作为WWW服务器管理员通过邮件服务器别名机制将发送到webmaster 电子邮件发送给真正Web管理员

  #ServerName .host.name

  缺省情况下并不需要指定这个ServerName参数服务器将自动通过名字解析过程来获得自己名字但如果服务器名字解析有问题(通常为反向解析不正确)或者没有正式DNS名字也可以在这里指定I P地址当ServerName设置不正确时候服务器不能正常启动

  通常个Web服务器可以具有多个名字客户浏览器可以使用所有这些名字或IP地址来访问这台服务器但在没有定义虚拟主机情况下服务器总是以自己正式名字回应浏览器ServerName就定义了Web服务器自己承认正式名字例如台服务器名字(在DNS中定义了A类型)为freebsd.exmaple.org.cn同时为了方便记忆还定义了个别名(CNAME记录)为www.exmaple.org.cn那么Apache自动解析得到名字就为freebsd.example.org.cn这样不管客户浏览器使用哪个名字发送请求服务器总是告诉客户自己为freebsd.example.org.cn虽然这般并不会造成什么问题但是考虑到某天服务器可能迁移到其他计算机上而只想通过更改DNS中www别名配置就完成迁移任务所以不想让客户在其书签中使用 freebsd记录下这个服务器地址就必须使用ServerName来重新指定服务器正式名字

  DocumentRoot "/usr/local/www/data"

  DocumentRoot定义这个服务器对外发布超文本文档存放路径客户请求UR L就被映射为这个目录下网页文件这个目录下子目录以及使用符号连接指出文件和目录都能被浏览器访问只是要在URL上使用同样相对目录名

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: