什么是Apache?
Apache是互联网上最流行的Web服务器。 它用于服务所有活动网站的一半以上。
虽然有许多可行的web服务器将为您的内容,将有助于了解Apache如何工作,因为它的无所不在。
在本文中,我们将检查一些可在其中控制的常规配置文件和选项。 本文将遵循Apache文件的Ubuntu / Debian布局,这与其他发行版构建配置层次结构的方式不同。
如何在Ubuntu和Debian上安装Apache
如果您尚未安装Apache,则可以通过发出以下命令来执行此操作:
sudo apt-get update sudo apt-get install apache2
这是所有必要有一个工作的Web服务器。 如果您在Web浏览器中访问您的VPS的IP地址,您将获得默认的Apache索引页:
your_domain_name_or_ip_address
It works! This is the default web page for this server. The web server software is running but no content has been added, yet.
Ubuntu和Debian中的Apache文件层次结构
在Ubuntu和Debian上,Apache将其主要配置文件保存在“/ etc / apache2”文件夹中:
cd /etc/apache2 ls -F
apache2.conf envvars magic mods-enabled/ sites-available/ conf.d/ httpd.conf mods-available/ ports.conf sites-enabled/
这个目录中有许多纯文本文件和一些子目录。 这些是一些更有用的地方要熟悉:
- apache2.conf:这是用于服务器的主要配置文件。 几乎所有的配置都可以在这个文件内完成,虽然为了简单起见,建议使用单独的指定文件。 此文件将配置默认值,并成为服务器读取配置详细信息的中心访问点。
- ports.conf:这个文件是用来指定虚拟主机监听的端口。 如果要配置SSL,请务必检查此文件是否正确。
- conf.d /:这个目录是用来控制Apache配置的具体方面。 例如,它通常用于定义SSL配置和默认安全性选择。
- 网站的可用/:这个目录包含了所有定义不同的网站虚拟主机文件。 这些将确定为哪些请求提供哪些内容。 这些是可用配置,而不是活动配置。
- 网站启用/:这个目录规定实际上正在使用的虚拟主机定义。 通常,此目录由指向“sites-available”目录中定义的文件的符号链接组成。
- mods- [启用,购] /:这些目录是在功能上与站点的目录类似,但它们定义可任选加载代替模块。
正如您所看到的,Apache配置不会发生在一个单片文件中,而是通过模块化设计,可以根据需要添加和修改新文件。
查看Apache2.conf文件
Apache服务器的主要配置详细信息位于“/etc/apache2/apache2.conf”文件中。
此文件分为三个主要部分:全局Apache服务器进程的配置,默认服务器的配置和虚拟主机的配置。
在Ubuntu和Debian中,大多数文件用于全局定义,并且默认服务器和虚拟主机的配置在最后通过使用“Include ...”指令处理。
“Include”指令允许Apache在语句出现的位置将其他配置文件读入当前文件。 结果是Apache在启动时动态生成一个总体配置文件。
如果滚动到文件的底部,则有许多不同的“Include”语句。 这些加载模块定义,ports.conf文档,“conf.d /”目录中的特定配置文件,最后是“sites-enabled /”目录中的虚拟主机定义。
我们将关注文件的第一部分,以了解Apache如何定义其全局设置。
全局配置部分
此部分用于配置一些控制Apache作为一个整体工作的选项。
在本节中,您可能需要修改一些有趣的选项:
暂停
默认情况下,此参数设置为“300”,这意味着服务器最多有300秒来满足每个请求。
这对于大多数设置来说可能太高了,可以安全地降到30到60秒之间。
活着
此选项(如果设置为“开”)将允许每个连接保持打开状态,以处理来自同一客户端的多个请求。
如果将此设置为“关闭”,则每个请求都必须建立新连接,这可能会导致显着的开销,这取决于您的设置和流量情况。
MaxKeepAliveRequests
这控制了每个连接在停止之前将处理的单独请求数。 将此数字保持为高将允许Apache更有效地向每个客户端提供内容。
将此值设置为0将允许Apache为每个连接提供无限量的请求。
KeepAliveTimeout
此设置指定在完成最后一个请求后等待下一个请求的时间。 如果达到超时阈值,则连接将死。
这仅仅意味着下一次请求内容时,服务器将建立新的连接以处理对构成客户端正访问的页面的内容的请求。
MPM配置
下一节将指定MPM(多处理模块)选项的配置。 您可以通过退出到终端并键入以下内容来交叉引用编译Apache安装的哪个部分:
apache2 -l
Compiled in modules: core.c mod_log_config.c mod_logio.c prefork.c http_core.c mod_so.c
如你所见,在这个服务器中,“prefork.c”是一个在“apache2.conf”文件中编译的模块。 您的安装可能有多个选择,但只能选择一个。
您可以在相应的部分中调整prefork MPM的配置。
探索默认虚拟主机文件
默认的虚拟主机声明可以在“sites-available”目录中名为“default”的文件中找到。
通过检查此文件,我们可以了解虚拟主机文件的一般格式。 使用以下命令打开文件:
sudo nano /etc/apache2/sites-available/default
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> . . .
默认虚拟主机配置为处理端口80(标准http端口)上的任何请求。 这在声明头中定义,其中“*:80”表示任何接口上的端口80。
这并不意味着它将必然处理每个请求到这个端口上的服务器。 Apache使用与请求匹配的最具体的虚拟主机定义。 这意味着如果有一个更具体的定义,它可以取代这个定义。
虚拟主机顶级配置
这些选项在任何其他较低级别子声明之外的虚拟主机定义中设置。 它们适用于整个虚拟主机。
“ServerAdmin”选项指定在出现服务器问题时应使用的联系人电子邮件。
如果您在“/etc/apache2/conf.d/security”文件中将“ServerSignature”设置为“电子邮件”,则可以将其插入错误页面,因此,如果您调整该设置,请确保您愿意接收邮件。
如果我们使用它作为其他虚拟主机定义的模板,我们将添加一个“ServerName”定义,指定此请求应处理的域名或IP地址。 这是一个选项,将增加特定性虚拟主机,允许它胜过默认定义,如果它匹配ServerName值。
您还可以使用“ServerAlias”定义使虚拟主机应用于多个名称。 这提供了获得相同内容的备用路径。 一个很好的用例是添加相同的域,前面加“www”。
“DocumentRoot”选项指定为此虚拟主机请求的内容所在的位置。 默认的虚拟主机被设置为在Ubuntu上的“/ var / www”目录中提供内容。
目录定义
在虚拟主机定义中,有关于服务器如何处理文件系统中不同目录的定义。 Apache将按照从最短到最长的顺序应用所有这些方向,因此再次有机会覆盖以前的选项。
第一个目录定义应用“/”或根目录的规则。 这将为虚拟主机提供基本配置,因为它适用于文件系统上提供的所有文件。
默认情况下,Ubuntu不会对文件系统设置任何访问限制。 Apache建议您添加一些默认访问限制。 你可以这样修改:
<Directory /> Options FollowSymLinks AllowOverride None Order Deny,Allow Deny from All </Directory>
这将拒绝对所有内容的访问,除非在后续目录定义中另有规定。
下一个目录定义是针对文档根目录,因此它指定了覆盖此目录的“/”选项的“全部允许”选项。
“AllowOverride”选项用于决定“.htaccess”文件是否可以覆盖设置,如果它被放置在内容目录中。 这是默认情况下不允许的,但可以在各种情况下启用。
别名和ScriptAlias语句
目录定义有时以“别名”或“ScriptAlias”语句开头。 Alias将url路径映射到目录路径。
ScriptAlias以相同的方式运行,但是用于定义将在其中具有可执行组件的目录。
例如,处理“example.com”请求的虚拟主机中的此行将允许通过导航到“example.com/content/”来访问“/ path / to / content /”中的内容:
Alias /content/ /path/to/content/
在别名之后,您应该记住按照上一节中讨论的那样定义具有访问权限的目录。
在Apache中启用站点和模块
一旦您有一个满足您的需求的虚拟主机文件,您可以使用Apache附带的工具将它们转换为活动网站。
要自动在“sites-enabled”目录中创建一个符号链接到“sites-available”目录中的现有文件,请发出以下命令:
sudo a2ensite virtual_host_file_name
启用站点后,发出以下命令告诉Apache重新读取其配置文件,以允许更改传播:
sudo service apache2 reload
还有一个用于禁用虚拟主机的随附命令。 它通过从“sites-enabled”目录中删除符号链接来运行:
sudo a2dissite virtual_host_file_name
再次,重新加载配置以使更改发生:
sudo service apache2 reload
可以分别使用“a2enmod”和“a2dismod”命令来启用或禁用模块。 它们的工作方式与这些命令的“站点”版本相同。
记住在模块启用或禁用后,还要重新加载配置更改。
结论
我们已经讨论了一些基本的Apache配置文件。 Apache是通用的和非常模块化的,因此配置需求将根据您的设置而有所不同。
您应该很好地了解主要配置文件的用途以及它们如何相互交互。 如果您需要了解具体的配置选项,所提供的文件注释得很好, Apache提供了出色的文件 。
希望,配置文件现在不会那么吓人,你会感到更舒适的实验和修改以满足你的需要。