《apache2 官方文档》 笔记

近期系统整理和积累以前用过学过的知识,apache2是其中的一个部分

一、关于apache2的安装配置

  • 1.关于Perl5模块,有些用Perl5写的支持脚本,(比如apxs)需要Perl5解释器,当然如果apache2的configure过程中没有找到Perl5 (configure的时候需要加上  –with-perl 选项),也没关系,这不影响apache httpd 的编译和安装,知识相关的支持脚本不能使用而已
  • 2.关于升级,升级前阅读发布公告(release announcement),考虑升级会对站点的影响;不过小幅度的版本升级很容易,make install 的过程不会改写任何已经存在的文档、日志、配置文件,但是开发者也尽量两兼容上一版本的configure的选项、运行时配置、模块

二、启动apache

  • 1.apache是怎么启动的,如果配置文件中的Listen定义的默认端口80(1024以下),那么启动apache将需要root权限以将它绑定在特权端口上。一旦服务器开始启动并完成了一些诸如打开日志文件之类的准备操作,它将创建很多子进程来完成一些诸如监听和回应客户端请求的动作。httpd主进程仍然以root用户的权限运行,而它的子进程将以较低权限的用户运行。这将由你选择的多路处理模块进行控制。
  • 2.关于启动脚本,调用httpd可执行文件的推荐方法是试用apachectl控制脚本。此脚本设置了在某些操作系统中正常运行httpd所必需的环境变量,然后调用httpd二进制文件。apachectl会传递命令行的所有参数,因此所有用于httpd的选项多半也可以用于apachectl。
  • 3.httpd被调用后第一件要做的事情就是找到并读取配置文件httpd.conf,此文件的位置是在编译时设定的,亦可以用  -f 操作配置 (PREFIX/bin/apachectl -f  PREFIX/conf/httpd.conf

三、停止和重启apache

  • 优雅重启apache  , apachectl -k graceful
  • 优雅停止:  apachectl -k graceful-stop
  • 立即停止:apachectl -k stop

四、配置文件

1.配置文件语法

  • 配置文件中,每行包含一个指令,在行尾使用反斜杆 ” \ “可以表示续行,但是反斜杠与下一行之间不能有任何其他字符(包括空白符)
  • 配置文件中的指令是不区分大小写的,但是指令的参数通常对大小写敏感。
  • 以  “ # ”开头的行被视为注解并被忽略,注解不能出现在指令后边,空白行和指令前的空白符将被忽略,因此可以采用缩进以保持配置层次的清晰
  • 测试配置文件命令:apachectl configtest 或  apachectl -t

2.模块

  • apache是模块化的服务器,这意味着核心中只包含实现最基本功能的模块。扩展功能可以作为模块动态加载,默认情况下,只有base组的模块被编译进了服务器
  • 如果服务器在编译时,包含了DSO模块,那么各个模块可以独立编译,并可以随时用LoadModule命令加载;否则,要正价货删除模块必须重新编译整个apache

3.  .htaccess文件

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

五、配置段(容器)

1.容器有两种基本类型,一,大多数容器是针对请求的,包含于其中的指令仅对与容器匹配的请求起作用;二,而容器<IfModule> , <IfDefine> , <IfVersion> 仅在启动和重启中起作用,如果启动时的指定条件成立,则其中的指令对所有请求都有效,否则将被忽略

2.文件系统和网络空间

3.

六、日志文件

七、从URL到文件系统的映射

待续