190 likes | 361 Views
第 7 讲 Apache 服务器配置与管理. 于张红. Apache 的启动、关闭和重启动. 启动 /etc/init.d/httpd start /usr/sbin/httpd apachectl start /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf # 手动调入配置文件 关闭 /etc/init.d/httpd stop apachectl stop 重新启动 /etc/init.d/httpd restart apachectl restart. 配置文件 httpd.conf.
E N D
Apache的启动、关闭和重启动 • 启动 • /etc/init.d/httpd start • /usr/sbin/httpd • apachectl start • /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf #手动调入配置文件 • 关闭 • /etc/init.d/httpd stop • apachectl stop • 重新启动 • /etc/init.d/httpd restart • apachectl restart
配置文件httpd.conf • 配置文件路径(RHAS3的默认值): • /etc/httpd/conf/httpd.conf • 全局环境设置 • 主要服务器设置 • 虚拟主机设置
配置文件httpd.conf • 主要服务器设置 • 地址和端口的绑定 • Apache启动时,会绑定本机上的某些地址和端口,并等待请求进入。缺省情况下,它会监听本机的所有地址。但是,要监听指定的地址和端口或者某种组合,尤其是在使用虚拟主机,对不同的IP、主机名和端口作出不同响应时,则必须明确指出。 • Listen指令告诉服务器接受来自指定端口或者地址+端口的请求。如果Listen指令仅指定了端口,服务器会监听所有的地址;如果指定了地址+端口,则服务器只监听来自此地址和端口的请求。多个Listen指令,可以指定多个地址和端口。 • 例如:使服务器接受来自端口80和8000的请求,可以这样写: Listen 80 Listen 8000 • 接受来自两个指定的地址+端口: Listen 192.170.2.1:80 Listen 192.170.2.5:8000
配置文件httpd.conf • User apache • 指定匿名用户访问时使用的系统内用户身份 • Group apache • 指定匿名用户访问时使用的系统内用户组身份 • ServerAdmin root@localhost • 指定管理员邮件地址 • ServerName new.host.name:80 • 制定服务器名称,将在http头里替代主机名称
配置文件httpd.conf • DocumentRoot “/var/www/html” • 存放网页的根目录。默认情况下,所有的请求从这个目录进行应答。 • DirectoryIndex index.php index.html index.html.var • 定义请求是一个目录时,Apache向用户提供服务的文件名。排在前面的文件优先。 • UserDir disable • 指定在得到一个~user请求时将会添加到用户home目录后的目录名。默认值为disable,关闭用户目录的功能。要起用可以将值设为“public_html” • Alias /icons/ "/var/www/icons/" • Alias指令使文档可以被存储在DocumentRoot以外的本地文件系统中。在这时添加你需要的别名,格式为“Alias 别名 真实名”。注意,如果你在别名的未尾包含了“/”,那么在URL中也需要包含“/”。
配置文件httpd.conf • ServerRoot “/etc/httpd” • 指出服务器保存其配置、出错和日志文件等的根目录。路径的结尾不要添加斜线 。 • PidFile logs/httpd.pid • 记录服务器启动进程号的文件。 • Timeout 300 • 接收和发送前超时秒数 • KeepAlive On • 是否允许保持连接(每个连接有多个请求) • MaxKeepAliveRequests 100 • 在保持连接期间允许的最大请求数,设为0表示无限制接入。 • KeepAliveTimeout 15 • 在同一个连接上从同一台客户上接收请求的秒数
配置文件httpd.conf • MPM(Multi-Processing Modules)多道处理模块 • Apache HTTP服务器被设计为一个强大、灵活的能够在多种平台上及不同的环境下工作的服务器。 不同的平台和不同的环境经常产生不同的需求,或是会为了达到同样的最佳效果而采用不同的方法。Apache凭借它的模块设计很好的适应了大量不同的环境。这一设计使得网站管理员能够在编译时和运行时凭借载入不同的模块来决定服务器的不同附加功能。 • 不论何时,有且仅有一个MPM必须被载入到服务器中。 MPM必须在编译配置时进行选择,并编译到服务器中。 • 在RHAS3中有以下3个“多重处理模块”选项: • Prefork MPM • Worker MPM • PerChild MPM
配置文件httpd.conf • Prefork MPM • 即1.3版本模式。由单独的父进程生成子进程,处理提交的请求。其余子进程被闲置起来,等候调用。额外的子进程在规定的一定时间之后将会被系统关闭。 • 工作原理:控制进程在最初建立“StartServers”个子进程后,为了满足MinSpareServers设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个......如此按指数级增加创建的进程数,最多达到每秒32个,直到满足MinSpareServers设置的值为止。这就是预派生(prefork)的由来。这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能。 • MaxSpareServers设置了最大的空闲进程数,如果空闲进程数大于这个值,Apache会自动kill掉一些多余进程。这个值不要设得过大。如果站点负载较大,可同时加大MinSpareServers和MaxSpareServers。 • MaxRequestsPerChild设置的是每个子进程可处理的请求数。每个子进程在处理了"MaxRequestsPerChild"个请求后将自动销毁。0意味着无限,即子进程永不销毁。
配置文件httpd.conf • Worker MPM • 即混合的多进程和多线程模式。每个进程拥有固定的线程数量,Apache服务器能够调整系统的进程数量以满足应用需求。由于使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器。 • 工作原理:由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的ThreadsPerChild线程数,各个线程独立地处理请求。同样,为了不在请求到来时再生成线程,MinSpareThreads和MaxSpareThreads设置了最少和最多的空闲线程数;MaxClients设置了所有子进程中的线程总数。如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程。 Worker模式下所能同时处理的请求总数是由子进程总数乘以ThreadsPerChild值决定的,应该大于等于MaxClients。 • 如果负载很大,现有的子进程数不能满足时,控制进程会派生新的子进程。默认最大的子进程总数(ServerLimit)是16 ,加大时也需要显式声明ServerLimit = num。需要注意的是,如果显式声明了ServerLimit,那么它乘以ThreadsPerChild的值必须大于等于MaxClients,而且MaxClients必须是ThreadsPerChild的整数倍,
配置文件httpd.conf # prefork MPM # StartServers:启动时服务器启动的进程数 # MinSpareServers:保有的备用进程的最小数目 # MaxSpareServers:保有的备用进程的最大数目 # MaxClients:服务器允许启动的最大用户连接数 # MaxRequestsPerChild:一个服务进程允许的最大请求数 # worker MPM # StartServers:服务器启动时的服务进程数目 # MaxClients:允许同时连接的最大用户数目 # MinSpareThreads:保有的最小工作线程数目 # MaxSpareThreads:允许保有的最大工作线程数目 # ThreadsPerChild:每个服务进程中的工作线程常数 # MaxRequestsPerChild:服务进程中允许的最大请求数目
配置文件httpd.conf • MPM的选择 • 需要更好缩扩性的站点可以选择象worker这样线程化的MPM, 而需要更好的稳定性和兼容性以适应一些旧的软件的站点可以用prefork。 • Linux2.4.20或2.5.x版本的内核对线程支持不好,worker最好是在2.6.x内核上使用。 • 不论何时,有且仅有一个MPM必须被载入到服务器中。可以用“httpd –l”命令来查看当前系统上用的是哪一个MPM,另外,MPM必须在编译配置时进行选择,并编译到服务器中。
配置文件httpd.conf • AccessFileName .htaccess • 在每个目录中查询为目录提供附加配置指令的文件的文件名。会大大降低系统效率,建议不使用。 • ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" • 指定包含服务脚本的目录并为目录设置别名。服务器会认为此目录中的文件可执行。 • DefaultLanguage zh-CN • 指定默认的语言,这意味着所有没有指定语言的包都将使用该语言。 • AddLanguage zh-CN .zh-cn • 指令在文件扩展名与特定的内容语言间建立映射。
配置文件httpd.conf • LanguagePriority en da nl et fr de …… • LanguagePriority允许你在会话过程中优先使用一些语言。 • AddDefaultCharset ISO-8859-1 • 当为发送出的所有页指定默认的字符集 。简体中文使用的字符集为GB2312,所以可以设为 :AddDefaultCharse GB2312 • AddCharset GB2312 .gb2312 .gb • AddCharset 指令为给定的文件扩展名与特定的内容字符集建立映射。 • AddType image/x-icon .ico • 在给定的文件扩展名与特定的内容类型间建立映射 • ErrorDocument 网页访问错误应答。
配置虚拟主机 • 虚拟主机是在一台Web服务器上为多个单独的域名提供Web服务,每个域名具有特定的目录和配置,相当于将一台主机分为多台主机,虚拟主机技术对于主机数量不足,但又想为不同的用户提供独立的Web服务的需求非常有效。 • Apache有两种方式支持虚拟主机: • 基于IP的虚拟主机 • 基于名字的虚拟主机。
1. 基于IP的虚拟主机 • 基于IP虚拟主机的DNS配置 <VirtualHost 192.168.0.2 > DocumentRoot /var/www/html/web1 ServerName www.test.com </VirtualHost> <VirtualHost 192.168.0.2 > DocumentRoot /var/www/html/web2 ServerName web.test.com </VirtualHost>
2. 基于名字的虚拟主机 • 假设某一学院按照系部或者职能部门组建基于名字的虚拟主机。有一台Apache服务器和一个IP地址:192.168.0.2,假设有两个单位需要建立网站,一个为办公室网站,域名为www.test.com ,另一个为计算机系网站,域名为web.test.com
基于名称的虚拟主机的DNS配置 • 现在想要创建一个名为 www.test.com和web.test.com的虚拟主机,并使用同一个 Apache服务器www.test.com。所需要进行的工作仅仅是在提交的 DNS配置文件中,为test.com创建如下的别名: • www IN A 192.168.0.2 • web IN CNAME www.test.com.
修改配置文件 NameVirtualHost 192.168.0.2:80 <VirtualHost 192.168.0.2> ServerName www.test.com DocumentRoot /var/www/html/web1 </VirtualHost> <VirtualHost 192.168.0.2> ServerName web.test.com DocumentRoot /var/www/html/web2 </VirtualHost>