这两天由于要搭建个小型资讯网站,需要用到apache。抽空在gentoo上定制了一把apache。
所谓的gentoo版apache,其实源码还是跟官方版本一致的。不同之处在于模块的安装,卸载已经完全gentoo化。只需要在USE标记里,添加,删除相应的标签,即可。
编译时用到的模块介绍apache的编译安装就不多说了,这里要提一下的是,安装apache模块的USE标记并不是跟着apache走的,而且单独配置的一套变量。
以下是我需要用到的一些模块(黄色的变量即使编译时需要用到的模块列表),应该算是非常精简了:
以上配置位于 /etc/make.conf
dir 指定默认文档
mime 文档类型识别
authz_host 一些最简单的权限指令,比如Order deny, allow
rewrite 重写引擎
log_config 访问日志
mime_magic 针对前面的mime文档类型的补充
worker apache多路处理模块MPM的多线程实现
所有模块,你可以自由剪裁,但是,authz_host,mime,dir 这三个模块是必须的被添加的。
这点,可以在 gentoo 的apache ebuild 描述文件中看出。
以上配置,位于 /usr/portage/www-servers/apache/apache-2.2.9.ebuild
gentoo下定制需要启用的apache模块在gentoo下启用apache模块,是依靠传递 -D XX 参数给 httpd 进程,然后在配置文件中,将功能 XX 所属的配置块包在 <IfDefine XX> 标签内,来实现某一块功能的启用或屏蔽的。(不同于 <IfModule>标签,前者涉及面更广)
这些屏蔽启用的参数,全部位于/etc/conf.d/apache2,这里是我的启用屏蔽设置。
从上面的图片中,看到,我只启用了PHP5和虚拟主机,其实,gentoo版apache提供了很多的参数。
配置部署结构gentoo版apache的配置文件部署结构,我认为是所见过apache配置中,比较灵活的。
它根据功能不同,细分了所有的功能模块配置。
目录结构大致为
/etc/apache2/ apache核心配置文件httpd.conf的所属目录
/etc/apache2/modules.d/ apache模块各个配置文件所属的目录
/etc/apache2/vhost.d/ apache虚拟主机配置文件所属的目录
/etc/apache2/ssl https用到的一些密钥
仔细看modules.d这个目录下的配置,可以发现这些配置文件都是由序号和每个模块名组成的。
序号呢,主要是为了控制加载的顺序(由linux文件系统保证),模块名呢,当然就是这个模块的配置都集中在当前文件里了。很灵活。