5

Apache 配置文件

 3 years ago
source link: http://blog.danthought.com/programming/2015/11/14/apache-configuration-files-on-ubuntu/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

在这篇文章中,我们将要看一下通过 apt-get 安装的 apache 在 ubuntu 上的配置文件放置位置和简短功能介绍。

Apache HTTP Server

apache 配置文件目录

我们看一下 apache 从那里获取配置信息,如果你通过 Ubuntu Apache 快速上手指南 - 安装 Apache 安装了 apache,你会发现 apache 配置文件的根目录:

/etc/apache2/

如果你通过源代码来编译 apache,配置文件的位置会有所不同,配置文件的目录位置取决于你安装时指定的,可能在 /usr/local,注意 apache 的文档中描述的配置文件目录是基于源代码安装的方式,本文中是根据 apt-get 安装的方式来描述的配置文件目录。

查看一下配置文件目录中的内容:

$ ls /etc/apache2

你会看到下面的信息:

Apache Configuration Files

我们会从浏览核心配置文件 apache2.conf 开始。

主配置文件

apache 启动读取的第一个配置文件:

/etc/apache2/apache2.conf

这个文件的注释很完整,你可以浏览一下文件的内容,了解下默认配置是什么样的,你能怎么进行修改,在后面的文章中会描述其中重要的,现在可以忽略掉。

现在需要关注一个重要的指令 Include。

Include 指令

我们可以把所有的配置内容硬塞进主配置文件,但是每次打开这样一个巨大的文件再做一点修改会显得很笨拙,所以 apache 团队提供了一种添加其他配置文件的方法。

Include 指令 告诉 apache 读取另外一个配置并解析作为配置选项,同样,可以指向一个目录,告诉 apache 读取目录中的所有文件,每次添加一个新的站点,不需要修改巨大的文件。

为什么现在要介绍这个指令?我会指出主配置文件中通过 Include 指令会读取的文件和目录,你会明白附加的配置文件怎么被使用的,你才知道如何放置自己的配置文件。

我们来看看会用到那些附加配置文件

conf.d

Include /etc/apache2/conf.d/

conf.d 目录放置的是通常的片段语句,你可以看一下,我们安装 apache 的时候,想设置 ServerName 指令,我们不是修改的主配置文件,而是在 conf.d 下创建了一个新文件来写 ServerName 指令。

当想往 apache 中添加指令而又不知道放在那里时,可以考虑放在 conf.d 下的新建文件中,避免修改主配置文件,使用 conf.d 可以轻松隔离最新配置修改信息(查看修改时间),让你快速找到添加的指令,从而避免把主配置文件改坏了的风险。

ports.conf

Include /etc/apache2/ports.conf

ports.conf 文件包含指令告诉 apache 监听 80 端口(默认HTTP通信端口)和 443 端口(SSL支持)。

如果你想 apache 监听其他端口,只需添加更多的 Listen 指令。

sites-available

默认情况下 sites-available 目录中只有一个文件 default,这个文件包含设置一个默认站点的指令,如文档根目录和目录权限这些。

我们会在后面讨论添加虚拟主机,default 文件对于添加站点到 web 服务是一个好的示例。

你已经注意到我并没有列出指向 sites-available 的 Include 指令,这是因为没有这样的配置,apache 不会查看这个目录,而是另外一个相似的目录…

sites-enabled

Include /etc/apache2/sites-enabled/

apache 主配置文件中包含了 sites-enabled 目录,而不是 sites-available 目录,目录名称应该表明了这样做的原因:在 sites-enabled 目录中软链接有指向 sites-available 目录中的配置文件时,一个站点才算激活(可以通过浏览器访问)。

默认情况 sites-enabled 目录中一个软链接指向 sites-available 目录中 default 配置文件,软连接 default 前面的 000 是为了保证这是默认站点,apache 读取配置文件根据文件名的字母顺序,前面加 000 就保证了这是 apache 最先读取的配置文件。

为什么需要默认站点配置?因为,当我们说到虚拟主机时,某人通过 www.example.com 访问你的 web 服务,你有一个针对 www.example.com 站点配置文件,apache 会使用这个配置文件,如果它找不到可以匹配域名的配置文件,它就会使用默认的站点配置。

通过 apache 特定的命令来激活和停止站点配置非常的方便。

a2ensite 和 a2dissite 命令

a2ensite 和 a2dissite 两个命令控制站点从失效到激活状态之间的转换。

先在浏览器里访问你的默认站点,看到 “It works!”。现在运行命令停止默认站点:

$ sudo /usr/sbin/a2dissite default

重启apache会重新读取配置文件:

$ sudo /usr/sbin/apache2ctl graceful

再次访问站点,你会看到 Not found 的错误,因为你停止了默认站点,apache 不知道怎么处理,你可以再看一下 sites-enabled 目录中指向 default 配置的软连接不见了。

重激活默认站点,再次运行 a2ensite 和 reload apache:

$ sudo /usr/sbin/a2ensite default
$ sudo /usr/sbin/apache2ctl graceful

现在通过浏览器访问站点又可以看到 It works! ,sites-enabled 目录中软连接也再次出现。

a2ensite 和 a2dissite 两个命令来管理站点很有用,同样也可以用来处理站点维护的问题,比如,你可以定义个站点配置来处理站点维护中,访问者看到就是这个取代主站点的页面,只需要停止主站点配置文件,激活维护站点配置文件,当你完成主站点升级的工作,再重新激活主站点配置文件,停止维护站点配置文件,重启加载 apache。

a2enmod 和 a2dismod 命令

a2enmod 和 a2dismod 命令工作方式同 a2ensite 和 a2dissite 两个命令,只是它们操作的是模块的配置文件,而不是站点的配置文件。

如果,你想激活 userdir 模块(此模块允许 apache 将用户主目录作为站点暴露出来),你可以运行:

$ sudo /usr/sbin/a2enmod userdir

同样,如果你不想使用 status 模块(可以在页面上查看 apache 服务的状态),你可以这样停止:

$ sudo /usr/sbin/a2dismod status

如果你改变了模块的加载,记得要重新加载或重启 apache 来使改变有效。

envvars

文件中包含一些 apache 脚本使用的环境变量,如 apache2ctl,当你改变了 apache 运行的用户和组时才需要修改此文件。

httpd.conf

Include /etc/apache2/httpd.conf

如果从源代码编译的 apache,主配置文件就是 httpd.conf,使用 apache2.conf 作为主配置文件是 ubuntu 包维护者做的更人性化的改动,httpd.conf 以防有的应用试图修改默认的 apache 配置文件。

默认情况下 httpd.conf 文件的内容是空的。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK