Apache/zh-cn

Apache HTTP Server Apache HTTP 服务器是一个高效的可扩展的 web 服务器. 它是当前因特网上使用最为普遍的 web 服务器之一.

安装
如果你要使用 Apache event MPM 模式, 把下面的内容添加到 make.conf 里面:

如果你要使用 Apach worker MPM 模式, 把下面的内容添加到 make.conf 里面:

查看Apache的USE标志

然后我们安装Apache：

Global USE 支持
开启 global USE 标志可以给Apache多提供一些其他的软件包. 可能在安装时，如果Apache依赖其他软件时，他们就会被安装.

配置USE变量以后，更新系统来使得某些配置生效.

文件
在系统里，Apache2有两个主要的配置文件：


 * Gentoo 的 Apache2 初始化配置文件


 * Apache2 服务器的常规配置文件

位于 ，他是 Gentoo 初始化脚步配置的文件. 唯一生效的一行是 APACHE2_OPTS :

这个定义将解释使用 语句激活或停用整个配置的各种配置文件某些部分的选项. 下文将详细介绍.

文件是Apache服务器的常规配置文件. 实际上这个文件只是一个入口点的配置. 完全的配置分散在目录中的许多文件中，使用 指令组合在一起. 例如，中的语句 旨在将所有包含在文件夹中的文件组合起来，其文件名以 结尾.

考虑到上面小节中的描述，如果选项使用位于 文件中的 APACHE2_OPTS  变量的   标记. 那么作为模块配置文件 几乎总是以 ，在中的一个文件的内容，与其余部分的配置组合. 配置文件是此规则的例外，因为它不以 语句开头，因此始终包含在生成的配置中.

默认值
在全新安装Apache服务器之后，由不同配置文件的集合生成的配置如下. 从入口点开始.

新的开始
在上面的初始配置中可以看到，安装的虚拟主机的 目录是，其服务器名称是“localhost”. 此外，在 目录中提供了一个index.html文件，以检查一切是否正确安装，打开浏览器访问http://localhost/.

"It works!"的字样应该被打印到您的屏幕上.

开启 mod_security
安装 :

要开启的 模块，更改 APACHE2_OPTS 的值:

要控制这些模块，请更改 和两个文件，然后重启Apache.

开启 PHP 支持
安装 PHP 附带  USE 标志，然后开启PHP模块:

在测试PHP模块是否工作前，检查文件 是否存在，是否包含以下默认值.

如果不存在请手动创建一个.

要验证PHP模块是否启动，创建个测试页面：

现在，把他重命名为 ，然后打开测试页面：

应该可以看到一个描述PHP配置的表格.

修改 PHP 版本
要更改Apache处理的PHP版本，首先列出  服务器应用程序编程接口（SAPI）的可用版本：

改变选择：

正如前面上显示，替换 在上面的例子中输出请求的值：.

虚拟主机
对于每个虚拟主机提供一个 ，它是由Apache守护进程控制的目录. 在目录中添加使用此 和虚拟主机服务器的虚拟主机配置文件. 不要忘了在添加一个该域名的条目.

要在虚拟主机文件上分配apache user/group 所有权，请使用 ，如以下示例所示：

下面是两个示例虚拟主机的例子，一个用于domainname1.com，一个用于domainname2.com. 注意使用不同的 和 指令，即时主机本身保持不变：

建议也提供基于IP的虚拟主机. 这允许管理员尝试为通过其IP地址访问网站的用户发送消息：

加入虚拟主机后，服务器需要（正常）重新启动以使新站点变为活动状态.

通过fcgid 开启 PHP
安装 和. PHP 这个包需要有  这个USE标志:

编辑 :

创建所需要的目录：

软链接到PHP wrapper：

开启 模块：

最后重启并检查. 应该被设置为 CGI/FastCGI.

在Apache 2.4上通过 mod_proxy_fcgi开启PHP-FPM
必须满足以下条件才能通过mod_proxy_fcgi启用PHP-FPM：
 * >= PHP 5.3
 * >= Apache 2.4

此外，Apache 2.4中的功能的可用性有一些限制：
 * >= Apache 2.4.9,如果想了解communicate with PHP-FPM over UNIX sockets
 * >= Apache 2.4.10,如果想使用 SetHandler 来替代 ProxyPassMatch.

以下配置将仅适用于Apache 2.4.10及更高版本. 它依赖于 指令，并放在主服务器配置或 中. UNIX socket的位置由 配置文件中的 指令确定，允许为每个站点或函数指定单独的池.

在下面的例子中  被放在Apache的PHP模块配置文件中：

或者，您可以使用ProxyPassMatch - 这是唯一的选项，如果Apache版本在2.4.0和2.4.8之间.

默认情况下， 指令未设置为socket. 首先创建socket文件的目录：

接下来，像下面这样更新:

同时开启 和   模块:

OpenRC
开启Apache服务

将Apache添加至default runlevel：

重启Apache服务

重新读取Apache配置文件：

systemd
开启Apache服务

将Apache添加至default runlevel：

重启Apache服务

资源
Apache很难配置的很好. 下面是一些可能有用的资源，如果你遇到错误可以看看.


 * Troubleshooting guide

测试
验证Apache上一个IP端口是否开启并监听：

测试Apache服务器在localhost上是否正常工作：

可以使用+ 或者 来中断测试.

apr_sockaddr_info_get failed for 
错误:

apache2: apr_sockaddr_info_get failed for System_Hostname

解析：

发生这种情况时，请将主机名添加到 文件中：

另请参阅

 * Lighttpd - 一个快速，轻量级的Web服务器.
 * Nginx - 一个轻量级，强大，高性能的HTTP服务器和反向代理工具.

外部资源

 * Slicehost article: Installing Apache on Gentoo
 * Slicehost article: Apache configuration files on Gentoo
 * Slicehost article: Configuring the Apache MPM on Gentoo
 * Slicehost article: Apache configuration on Gentoo
 * Slicehost article: Apache Virtual Hosts on Gentoo
 * Slicehost article: Enabling and using apache's mod_status on Gentoo
 * apache.org documentation
 * Apache2 mod_pagespeed