8.3. Apache概述 8.32实例一设置 Apache服务器 命实例85使用GU配置 Apache服务器 在 GNOME桌面面板选择依次选择【系统】/【管理】/【服务器设置】/【HTP】。也 可以在终端窗口执行#system-config-httpd命令。 当配置工具界面(如图8-23所示)启动以后,可以遵循以下8个步骤进行配置。 在【主】选项卡中进行基本设置 在【虚拟主机】选项卡中进行默认的设置 在【服务器】选项卡中进行服务器配置 在【性能】选项卡中进行连接等设置 保存设置 将所有必要的文件复制到 DocumentRoot和cgi-bin目录下 启动 Apache 测试 实例8-6认识 Apache服务器的默认配置文件 Apache服务器的配置文件是httpdconf,位于/etc/httpd/con目录下,对Apache服务器 的配置其实就是对httpd.conf文件的修改,希望读者以后能够使用修改配置文件方法进行 Apache服务器的配置,不要局限于GiUI(图形用户界面)的配置操作。 letc/httpd/conf/httpd.conf文件的原始内容如下 ## Section I: global Environment Server Tokens os 当服务器响应主机头信息时显示 Apache的版本和操作系统的名称 ServerRoot"/etc/httpd/设置服务器的根目录 Pidfilerun/httpdpid∥设置运行Apache时使用的PidFile的路径 # Timeout定义客户程序和服务器连接的超时间隔,超过这个时间间隔(秒)后 #服务器将断开与客户机的连接 #建议设置为On,允许使用保持连接功能,这样就可以在一次连接中传递多个HTTP请求 KeepAlive Off #在使用保持连接功能时, MaxKeepAliveRequests为一次连接可以进行的HTP请求的 #最大请求次数。将其值设为0将支持在一次连接内进行无限次的传输请求
8.3.1 Apache 概述 8.3.2 实例—设置 Apache 服务器 实例 8-5 使用 GUI 配置 Apache 服务器 在 GNOME 桌面面板选择依次选择【系统】/【管理】/【服务器设置】/【HTTP】。也 可以在终端窗口执行#system-config-httpd 命令。 当配置工具界面(如图 8-23 所示)启动以后,可以遵循以下 8 个步骤进行配置。 ➢ 在【主】选项卡中进行基本设置 ➢ 在【虚拟主机】选项卡中进行默认的设置 ➢ 在【服务器】选项卡中进行服务器配置 ➢ 在【性能】选项卡中进行连接等设置 ➢ 保存设置 ➢ 将所有必要的文件复制到 DocumentRoot 和 cgi-bin 目录下 ➢ 启动 Apache ➢ 测试 实例 8-6 认识 Apache 服务器的默认配置文件 Apache 服务器的配置文件是 httpd.conf,位于/etc/httpd/conf/目录下,对 Apache 服务器 的配置其实就是对 httpd.conf 文件的修改,希望读者以后能够使用修改配置文件方法进行 Apache 服务器的配置,不要局限于 GUI(图形用户界面)的配置操作。 /etc/httpd/conf/httpd.conf 文件的原始内容如下: ### Section 1: Global Environment ServerTokens OS //当服务器响应主机头信息时显示Apache的版本和操作系统的名称 ServerRoot "/etc/httpd" //设置服务器的根目录 PidFile run/httpd.pid //设置运行Apache时使用的PidFile的路径 #Timeout定义客户程序和服务器连接的超时间隔,超过这个时间间隔(秒)后 #服务器将断开与客户机的连接 Timeout 120 #建议设置为On,允许使用保持连接功能,这样就可以在一次连接中传递多个HTTP请求 KeepAlive Off #在使用保持连接功能时,MaxKeepAliveRequests为一次连接可以进行的HTTP请求的 #最大请求次数。将其值设为0将支持在一次连接内进行无限次的传输请求
#事实上没有客户程序在一次连接中请求太多的页面,通常达不到这个上限就完成连接了 MaxKeepAliveRequests 100 #在使用保持连接功能时, KeepAliveTimeou测试一次连接中的多次请求传输之间的时间 #如果服务器已经完成了一次请求,但一直没有接收到客户程序的下一次请求 #在时间间隔超过了这个参数设置的值之后,服务器就断开连接 Keep Timeout 15 Server- Pool Size Regulation(MPM specific) #设置使用 prefork. mpm运行方式的参数,此运行方式是 Redhat的默认方式 StartServers 8/设置服务器启动时运行的进程数 MinSpareServers5 APache在运行时会根据负载的轻重自动调整空闲子进程的数目,若存在低于5个 ∥空闲子进程,就创建一个新的子进程准备为客户提供服务 MaxSpareServers20l若存在高于20个空闲子进程,就逐一删除子进程来提高系统性能 ServerLimit Maxclients 256/限制同一时间的连接数不能超过256 MaxRequests PerChild4000。/限制每一个子进程在结束处理请求之前能处理的连接请求为400 </mOdule> #设置使用 worker mPm运行方式的参数 <IfModule worker.c> 2 Maxclients MinSpare Threads MaxSpare Threads Threads PerChild 25 MaxRequests PerChild 0 </mOdule> #设置服务器的监听端口号 # Listen1234.56.78:80 Listen 80 #动态加载模块(DSO) Dynamic Shared Object(DsO)Support Load Module auth basic module modules/mod auth basic.so LoadModule auth digest module modules/mod auth digest.so LoadModule authn file module modules/mod authn file. so Load Module authn alias module modules/mod authn alias. so LoadModule authn anon module modules/mod authn anon.so
#事实上没有客户程序在一次连接中请求太多的页面,通常达不到这个上限就完成连接了 MaxKeepAliveRequests 100 #在使用保持连接功能时,KeepAliveTimeout测试一次连接中的多次请求传输之间的时间, #如果服务器已经完成了一次请求,但一直没有接收到客户程序的下一次请求, #在时间间隔超过了这个参数设置的值之后,服务器就断开连接 KeepAliveTimeout 15 # Server-Pool Size Regulation (MPM specific) #设置使用prefork.mpm运行方式的参数,此运行方式是RedHat的默认方式 <IfModule prefork.c> StartServers 8 //设置服务器启动时运行的进程数 MinSpareServers 5 //Apache在运行时会根据负载的轻重自动调整空闲子进程的数目,若存在低于5个 //空闲子进程,就创建一个新的子进程准备为客户提供服务 MaxSpareServers 20 //若存在高于20个空闲子进程,就逐一删除子进程来提高系统性能 ServerLimit 256 MaxClients 256 //限制同一时间的连接数不能超过256 MaxRequestsPerChild 4000 //限制每一个子进程在结束处理请求之前能处理的连接请求为4000 </IfModule> #设置使用worker MPM运行方式的参数 <IfModule worker.c> StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 </IfModule> #设置服务器的监听端口号 #Listen 12.34.56.78:80 Listen 80 #动态加载模块(DSO) # Dynamic Shared Object (DSO) Support LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule auth_digest_module modules/mod_auth_digest.so LoadModule authn_file_module modules/mod_authn_file.so LoadModule authn_alias_module modules/mod_authn_alias.so LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn dbm module modules/mod authn dbm. so LoadModule authz host module modules/mod authz host.so LoadModule authz user module modules/mod authz user. so LoadModule authz owner module modules/mod authz owner LoadModule authz groupfile module modules/mod authz groupfile.so LoadModule authz dbm module modules/mod authz dbm. so LoadModule authz default module modules/mod authz default. so LoadModule ldap module modules/mod ldap.so LoadModule authnz ldap module modu od authnz ldapso LoadModule include module modules/mod include. so LoadModule log config module modules/mod log config.so LoadModule eny module modules/mod env. so LoadModule ext filter module modules/mod ext filter. so LoadModule mime magic module modules/mod mime magic. so LoadModule expires_ module modules/mod_expires.so LoadModule headers module modules/mod headers.so LoadModule usertrack module modules/mod usertrack so LoadModule setenvif module modules/mod setenvifso Loadmodule day module modules/mod day LoadModule status module modules/mod status.so LoadModule autoindex module modules/mod autoindex. so LoadModule info module modules/mod info. so Load module day fs module modules/mod day fs. so LoadModule dir module modules/mod dir LoadModule actions module modules/mod actions. so LoadModule speling_module modules/mod speling.so Load Module userdir module modules/mod userdir so LoadModule rewrite module modules/mod rewrite. so LoadModule proxy balancer modules/mod proxy balancer.so LoadModule proxy_ ftp module modules/mod_proxy_ftp.so Loadmoduleproxyhttpmodulemodules/mod_proxy_http.so Load Module cache module modules/mod cache. so LoadModule suexec module modules/mod suexec so
LoadModule authn_dbm_module modules/mod_authn_dbm.so LoadModule authn_default_module modules/mod_authn_default.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule authz_user_module modules/mod_authz_user.so LoadModule authz_owner_module modules/mod_authz_owner.so LoadModule authz_groupfile_module modules/mod_authz_groupfile.so LoadModule authz_dbm_module modules/mod_authz_dbm.so LoadModule authz_default_module modules/mod_authz_default.so LoadModule ldap_module modules/mod_ldap.so LoadModule authnz_ldap_module modules/mod_authnz_ldap.so LoadModule include_module modules/mod_include.so LoadModule log_config_module modules/mod_log_config.so LoadModule logio_module modules/mod_logio.so LoadModule env_module modules/mod_env.so LoadModule ext_filter_module modules/mod_ext_filter.so LoadModule mime_magic_module modules/mod_mime_magic.so LoadModule expires_module modules/mod_expires.so LoadModule deflate_module modules/mod_deflate.so LoadModule headers_module modules/mod_headers.so LoadModule usertrack_module modules/mod_usertrack.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule mime_module modules/mod_mime.so LoadModule dav_module modules/mod_dav.so LoadModule status_module modules/mod_status.so LoadModule autoindex_module modules/mod_autoindex.so LoadModule info_module modules/mod_info.so LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule vhost_alias_module modules/mod_vhost_alias.so LoadModule negotiation_module modules/mod_negotiation.so LoadModule dir_module modules/mod_dir.so LoadModule actions_module modules/mod_actions.so LoadModule speling_module modules/mod_speling.so LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule cache_module modules/mod_cache.so LoadModule suexec_module modules/mod_suexec.so
LoadModule disk cache module modules/mod disk cache.so LoadModule mem cache module modules/mod mem cache. so LoadModule cgi module modules/mod cgi.so LoadModule version module modules/mod version. so #Loadconfigfilesfromtheconfigdirectory"/etc/httpd/conf.d Include conf d/%.c # Apache服务器可以通过特殊的HTP请求,来报告自身的运行状态,打开这个 Extendedstatu参数 #可以让服务器报告更全面的运行状态信息 ExtendedStatus On #设置运行 Apache服务器的用户和组 User apache ##f# Section 2: Main server configuration #f The directives in this section set up the values used by the main #f server, which responds to any requests that aren,'t handled by a # <VirtualHost> definition. These values also provide defaults for any <Virtual Host> containers you may define later in the file #f All of these directives may appear inside <VirtualHost> containers, #f in which case these default settings will be overridden for the virtual host being defined Server Admin rootalocalhost ∥设置 Apache服务器管理员的Ema地址 #缺省情况下,并不需要指定这个 Servername参数,服务器将自动通过名字解析过程来获得自己的名字, #但如果服务器的名字解析有问题(通常为反向解析不正确),或者没有正式的DNS名字,也可以在这里 #指定IP地址。如果 ServerName设置不正确,服务器将不能正常启动 If your host doesn't have a registered DNS name, enter its IP address here #f You will have to access it by its address anyway, and this will make #f redirections work in a sensible way #serVernamewww.examplecom80 #若关闭此选项,当 Apache服务器需要指向本身的连接使使用 ServerName port作为主机名,例如
LoadModule disk_cache_module modules/mod_disk_cache.so LoadModule file_cache_module modules/mod_file_cache.so LoadModule mem_cache_module modules/mod_mem_cache.so LoadModule cgi_module modules/mod_cgi.so LoadModule version_module modules/mod_version.so # Load config files from the config directory "/etc/httpd/conf.d". Include conf.d/*.conf # Apache服务器可以通过特殊的HTTP请求,来报告自身的运行状态,打开这个ExtendedStatus 参数 #可以让服务器报告更全面的运行状态信息 #ExtendedStatus On #设置运行Apache服务器的用户和组 User apache Group apache ### Section 2: 'Main' server configuration # # The directives in this section set up the values used by the 'main' # server, which responds to any requests that aren't handled by a # <VirtualHost> definition. These values also provide defaults for # any <VirtualHost> containers you may define later in the file. # # All of these directives may appear inside <VirtualHost> containers, # in which case these default settings will be overridden for the # virtual host being defined. # ServerAdmin root@localhost //设置Apache服务器管理员的E_mail地址 #缺省情况下,并不需要指定这个ServerName参数,服务器将自动通过名字解析过程来获得自己的名字, #但如果服务器的名字解析有问题(通常为反向解析不正确),或者没有正式的DNS名字,也可以在这里 #指定IP地址。如果ServerName设置不正确,服务器将不能正常启动 # If your host doesn't have a registered DNS name, enter its IP address here. # You will have to access it by its address anyway, and this will make # redirections work in a sensible way. # #ServerName www.example.com:80 #若关闭此选项,当Apache服务器需要指向本身的连接使使用ServerName:port作为主机名,例如
#www.edu.cn:80若打开此选项将使用www.edu.cnprot80作为主机名 UseCanonicalName Off # Document?定义这个服务器对外发布的超文本文档存放的路径,客户程序请求的URL就被映射为 #这个目录下的网页文件。这个目录下的子目录,以及使用符号链接指出的文件和目录都能被浏览器 #访问,只是要在URL上使用同样的相对目录名 Document Root"/var/www/html #设置 Apache服务器根的访问权限 #注意: Apache对一个目录的访问权限的设置能够被下一级目录继承 # Apache在目录的访问控制中提供了 FollowSymLinks选项来打开或关闭支持符号链接的特性。 #符号链接虽然逻辑上位于本目录之下,但实际上可以位于计算机上的任意目录中,因此可以 #使客户程序能访问那些根文档目录之外的目录,在增加了灵活性的同时降低了系统的安全性 AllowOverride None 禁止读取 htaccess配置文件的内容 #设置根文档目录的访问权限 <Directory "/var/www/html"> # Indexes:若在目录中找不到 Directorylndex到表中指定的文件就生成当前的文件列表 # FollowSymLinks:允许符号链接,可以访问不在根文档目录下的文件 Options Indexes FollowSymLinks # Apache服务器可以针对目录进行文档的访问控制,然而访问控制可以通过两种方式来实现, 个是在配置文件httpd.con中针对每个目录进行设置,另一个方法是在每个目录下设置 #访问控制文件,通常访问控制文件名字为 htaccess。虽然使用这两个方式都能用于控制浏览器 #的访问,但是使用配置文件的方法要求每次修改后要重启 Apache服务器,因此该方法主要用于 #配置服务器系统的整体安全控制策略,而使用每个目录下的 htaccess文件设置具体目录的 #访问控制更为灵活方便 AllowOverride None/禁止读取 htassess配置文件的内容 Order allow,deny/指定先执行Alow(允许)访问规则,再执行Deny(拒绝)访问规则 Allow from all∥设置Alow(允许)访问规则,允许所有连接 #为每个用户进行服务器的配置 UserDir disable/不允许为每个用户进行服务器的配置 #User Dir public html </IfModule>
# www.edu.cn:80若打开此选项,将使用www.edu.cn prot 80作为主机名 UseCanonicalName Off #DocumentRoot定义这个服务器对外发布的超文本文档存放的路径,客户程序请求的URL就被映射为 #这个目录下的网页文件。这个目录下的子目录,以及使用符号链接指出的文件和目录都能被浏览器 #访问,只是要在URL上使用同样的相对目录名 DocumentRoot "/var/www/html" #设置Apache服务器根的访问权限 #注意:Apache对一个目录的访问权限的设置能够被下一级目录继承 <Directory /> # Apache在目录的访问控制中提供了 FollowSymLinks选项来打开或关闭支持符号链接的特性。 #符号链接虽然逻辑上位于本目录之下,但实际上可以位于计算机上的任意目录中,因此可以 #使客户程序能访问那些根文档目录之外的目录,在增加了灵活性的同时降低了系统的安全性 Options FollowSymLinks AllowOverride None //禁止读取.htaccess配置文件的内容 </Directory> #设置根文档目录的访问权限 <Directory "/var/www/html"> # Indexes:若在目录中找不到DirectoryIndex到表中指定的文件就生成当前的文件列表 # FollowSymLinks:允许符号链接,可以访问不在根文档目录下的文件 Options Indexes FollowSymLinks # Apache服务器可以针对目录进行文档的访问控制,然而访问控制可以通过两种方式来实现, #一个是在配置文件httpd.conf中针对每个目录进行设置,另一个方法是在每个目录下设置 #访问控制文件,通常访问控制文件名字为.htaccess。虽然使用这两个方式都能用于控制浏览器 #的访问,但是使用配置文件的方法要求每次修改后要重启Apache服务器,因此该方法主要用于 #配置服务器系统的整体安全控制策略,而使用每个目录下的.htaccess文件设置具体目录的 #访问控制更为灵活方便 AllowOverride None //禁止读取.htassess配置文件的内容 Order allow,deny //指定先执行Allow(允许)访问规则,再执行Deny(拒绝)访问规则 Allow from all //设置Allow (允许) 访问规则,允许所有连接 </Directory> #为每个用户进行服务器的配置 <IfModule mod_userdir.c> UserDir disable //不允许为每个用户进行服务器的配置 #UserDir public_html </IfModule>