常用基础 - 配置文件 ¶
作者:KK
发表日期:2017.2.11
- 注意,本文章并不是介绍具体的配置功能
Apache的配置文件是符合我在文章里《自觉经验分享 - 阅读软件配置》总结到的经验的。
重要知识点 ¶
首先要认识到的一点就是Apache的配置文件默认是conf目录里的
httpd.conf
,其它配置文件暂时都可以无视掉,其中conf目录就是配置文件目录
Apache的配置语法主要由
指令
和参数
两部分组成一个配置行为,一个一个,不能一行多个,比如Listen 80
中Listen就是指令,80就是参数,告诉Apache服务器监听80端口
有些指令可以重复出现
Listen 80 Listen 8080 Listen 65533
这就是三个Listen指令,要求监听3个端口
指令的参数可以有多个
以下DirectoryIndex指令是用于设定目录索引文件(使用优先级从左到右),并且指定了多个索引文件,通过空格隔开多个参数的方式来表达
DirectoryIndex index.html index.php index.htm l.php
有些带有
<
和>
包住的叫做配置段下面这个是
IfModule
配置段<IfModule dir_module> DirectoryIndex index.html index.php index.htm l.php #下面这个是我随便加的 Require all denied </IfModule>
IfModule配置段用于判断有没有指定的模块,以上代码就是判断有没有“dir_module”模块,如果有,那就执行里面的指令
因为判断成功后,里面可能会执行多条指令,所以用了XML的语法来将要囊括的东西包在里面,其实挺好理解的
另外还能在默认的配置文件里能找到还有
<Directory>
、<Files>
、<FilesMatch>
、<Location>
和<VirtualHost>
等其它配置段,里面都有一些各色各样的指令
每一行开头写个
#
号代表配置内容的注释,不一定是第一个字符#监听8991端口 Listen 8991 #Listen 8999 此行被注释,无效 #缩进后再注释也行,只有#号前面除了空的东西没别的字符
配置文件可以像编程语言一样include其他配置 ¶
就是用Include
指令来实现的:
Include conf/my.conf
Include的路径可以是绝对路径或相对路径,如果用相对路径的话,就是相对于软件目录作为开始位置
支持通配符 ¶
引入confconf/vhosts目录下的所有文件
Include conf/vhosts/*
引入confconf/vhosts目录下所有后缀为
Include conf/vhosts/*.conf
好了不解释了不解释了
Include conf/vhosts/xxxx*.conf
任何配置都可以写各种指令 ¶
不要以为被Include的配置文件只能做哪些事情,它们也书写做任何httpd.conf能写的指令
主要就是看你如何把各种配置分门别类,哪个配置负责哪些指令,自己安排吧
通常httpd.conf的Include指令都放在接近文件底部的地方 ¶
读配置文件就从conf/httpd.conf
开始 ¶
先不要被conf目录下存在的几个文件迷惑(感觉很多东西,不好掌握的样子),单刀直入先从httpd.conf开始阅读配置,因为它是默认的主配置文件(编译时另外可以指定主配置文件)
刚下载安装的Apache还好说,应该没多少文件的,但如果是入职了一个新公司或接触到一个新项目自带的配置,文件又多,那就更加要淡定,从httpd.conf开始
然后你先用编辑器的正则搜索模式^Include
找找里面的所有用了Include命令的地方,看看都涉及了哪些配置
再进入这些配置又找找它们有没有Include别的配置,最后做做笔记,就清楚从httpd.conf开始一共是涉及了哪些配置文件了
而没有被Include的文件可能都是一些备用配置,不用管它,对软件运作不会产生影响!
重启Apache才能让配置生效 ¶
mime.types
是被TypesConfig指令指定加载的 ¶
conf目录下还有个mime.types文件,它有点特殊所以不是被Include的,作为http服务器肯定要定义一些关于mime type的处理规则嘛
执行httpd -t
命令来检测配置文件是否存在语法错误 ¶
如果没错会输出Syntax OK
如果出错会显示相关的配置行号和错误提示
冷知识 ¶
指令名称区不分大小写
不是所有指令都能写在不同的配置段中
其实一般也没人随便这么做,触犯这个规则的人很少
要查询你想要用的指令可以放在什么配置段里面,后面再专门讲这个吧