Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29419750
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: 系统运维

2010-08-26 18:02:50

Apache学习笔记02

时间:2010-8-26

| 本篇译者:() | 本页最后更新:2006年10月20日

1.启动apache

注意在WIN平台它是以服务方式运行。而在UNIX环境中它是以守护进程运行。

如果配置文件中定义的是默认的80端口(1024以下),那么启动Apache将需要root权限以将它绑定在特权端口上。一旦服务器开始启动并完成了一些诸如打开日志文件之类的准备操作,它将创建很多子进程来完成一些诸如侦听和回应客户端请求的工作。httpd主进程仍然以root用户的权限运行,而它的子进程将以一个较低权限的用户运行。这将由你选择的进行控制。

PSApache的主进程打开日志之类的准备操作之后 -à 创建许多子进程(所以经常会看到许多个apache的进程在那跑着这些子进程的主要工作是用来完成一些侦听和回应客户端请求工作。其中httpd主进程是以root权限运行的,子进程是以较低权限的用户运行!)

启动命令(可以指定配置文件目录):

/usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf

 

2.随系统启动时一块启动

可以把apachectl 的调用加入到系统启动文件(通常为rc.local文件或rc.N目录下面的某一文件)。这样的话将会以root权限启动哦!

 

3.停止与重启

你可以对父进程发送三种信号:TERMHUPUSR1

示例:kill –TERM `cat /usr/local/apache2/logs/http.pid`

 

7.优雅停止

信号:WINCH

示例:apachectl –k graceful –stop

使得父进程建议子进程在完成它们现在的请求后退出。然后父进程删除pidfile并停止在所有端口上的监听。父进程仍然继续运行并监视正在处理请求的子进程,一旦所有子进程完成任务并退出或则超过

gracefulshutdowntimeout指令规定的时间,父进程将会退出。在超时的情况下所有子进程都将收到TERM信号并被强制退出。

 

 

4.立即停止

信号:TERM

示例:apachectl –k stop

发送TERMstop信号到父进程可以使它立刻杀死所有的子进程。杀完之后父进程再退出来!

 

5.优雅重启

信号:USR1

示例:apachectl –k graceful

USR1graceful信号使得父进程建议子进程在完成它们现在的请求后退出(如果他们没有进行服务,将会立刻退出)。父进程重新读入配置文件并重新打开日志文件。每当一个子进程死掉,父进程立刻用新的配置文件产生一个新的子进程并立刻开始伺服新的请求。

6.立即重启

信号:HUP

示例:apachectl –k restart

向父进程发送HUPrestart信号能够让它像收到TERM信号一样杀掉全部的子进程。不同的地方是父进程本身是不退出。它负责重新读入配置文件、重新打开日志然后再产生一系列的子进程来继续服务。

 

结论:建议多使用优雅重启,偶尔使用硬重启

 

 

 

二、地址和端口的绑定

配置Apache监听指定的地址和端口

相关模块           相关指令

Core              

Mpm common         listen

Apache启动时,会绑定本机上的地址和端口,然后等待请求的进入。默认情况下,它会监听本机的所有地址。但是,当需要监听特定的地址或端口或地址与端口的组合,或者需要对不同的IP地址、主机名、端口作出不同的响应(如使用虚拟主机)时,就必须明确指定。

指令告诉服务器接只受来自特定端口(地址+端口的组合)的请求。如果指令仅指定了端口,则服务器会监听所有的IP地址;如果指定了地址+端口的组合,则服务器只监听来自此特定地址上特定端口的请求。使用多个指令,可以指定在多个地址和端口上进行监听。

例如:使服务器在所有地址上同时接受来自端口808000的请求,可以这样写:

Listen 80
Listen 8000

接受来自两个指定的地址+端口的组合:

Listen 192.170.2.1:80
Listen 192.170.2.5:8000

 

指令并不实现虚拟主机,它只是告诉主服务器(main server)去监听哪些地址和端口。如果没有指令,服务器将对所有请求一视同仁;但是如果有指令,则服务器会对不同的地址或端口作出不同的响应。要实现虚拟主机,首先必须告诉服务器需要监听哪些地址和端口,然后为每个特定的地址和端口建立一个段来执行特定的相应。注意,如果将段设置为服务器没有监听的地址和端口,则此段无效。

 

PS:我的理解

虚拟主机对应了一个IP加端口。试想下一台机(一个固定IP)能够同时解析多个域名即多个虚拟主机靠什么来区别呢?就是不同的端口。在IIS上面也可以这样来配置的包括nginx也是一样的。依据虚拟主机与IP、端口之间的关系实现的!

 

 

 

 

三、主配置文件

相关模块               相关指令

Mod_mime              

                      

                      

Apache 的配置文件是包含了若干指令的纯文本文件(其实nginx何尝又不是)。主配置文件通常叫httpd.conf其位置的一般是prefix/conf了。当然也可以通过-f 来改变掉。只有重新启动apache主配置文件的更改才会生效。

服务器还会读取一个包含MIME文件类型的文件,其文件名由Typeconfig指令确定,默认值是mime.types

 

配置文件的语法

它的配置文件是每一行包含一个指令,在行尾可以使用”\”可以表示续行。

其中指令是不区分大小写的,但是指令的参数通常是大小写敏感。

可以使用apachectl configtest或者命令行选项-t 检查配置文件中的错误。不需要重启apache

 

模块

相关模块               相关指令

Mod_so                

                       LoadModule

Apache是模块化的服务器,这意味着核心中只包含实现最基本功能的模块。扩展功能可以作为动态加载。默认情况下,只有组的模块被编译进了服务器。如果服务器在编译时包含了,那么各模块可以独立编译,并可随时用指令加载;否则,要增加或删除模块必须重新编译整个Apache。用于特定模块的指令可以用指令包含起来,使之有条件地生效。

 

说明:apache是有许多模块的,如果我们在编译的时候能够指定DSO模块的话那每个单独的模块能够单独编译然后通过LoadModule指令加载进来。要不然就得重新再编译APACHE然后用包含进来不划算。

 

说明:用命令行参数-l 能够查看已经编译到服务器中的模块。

 

相关模块

相关指令

 

Apache还具备同时支持多个站点的能力,称为配置段中的指令仅对该段中的特定站点(虚拟主机)有效。

.htaccess文件

相关指令

Accessfilename

Allowoverride

Apache可以使用分布在整个网站文件目录树结构中的特殊文件来进行分散配置,这些特殊的文件通常叫.htaccess ,但是也可以用指令来改变它的名字。.htaccess文件中指令的作用域是存放它的那个目录及其所有子目录。.htaccess文件的语法与主配置文件相同。由于对每次请求都会读取.htaccess文件,所以对这些文件的修改会立即生效。

 

阅读(877) | 评论(0) | 转发(0) |
0

上一篇:Apache学习笔记01

下一篇:今日新闻2010-08-26

给主人留下些什么吧!~~