🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

httpd.conf 入门:理解 Apache 的配置文件(端口、目录、日志)

在上一篇文章中,您迈出了在电脑上安装 Apache 并运行 Web 服务器的第一步。恭喜您!当服务器能够运行后,下一步就是“根据自己的喜好配置服务器”。而掌管所有这些配置的,正是堪称 Apache“大脑”的配置文件——httpd.conf

本文将聚焦于控制 Apache 时几个最重要的配置项,并逐一进行细致解说,以确保初学者也能轻松理解。具体来说,我们将探讨以下三个主题:

只需对这个文件稍作编辑,您的 Web 服务器就能变得更加便捷和安全。来吧,让我们一同探索 Apache 配置文件的世界!

【极其重要!】:在编辑 `httpd.conf` 文件之前,请务必备份该文件。将原始文件复制一份并保存为 `httpd.conf.bk` 之类的名字,这样万一配置出错,也能立刻恢复原状。这是连专业工程师也必定会遵守的基本原则。


httpd.conf 文件在哪里?

首先,我们来确认一下关键的配置文件 `httpd.conf` 究竟在哪里。它的位置因安装方式而异。

根据您的环境找到文件后,用文本编辑器打开它。以 `#` 开头的行是注释,不会影响配置。请试着在文件中找出我们接下来要介绍的指令(配置项)。


1. 端口设置 - Listen 指令

“端口”就像是服务器用来监听通信的“窗口号码”。如果说 IP 地址是建筑物的地址,那么端口号就堪比该建筑物内的房间号。Web 通信中使用的 HTTP 标准端口是“80号端口”。

用于指定此端口号的指令就是 Listen

# Apache 在 80 端口监听请求
Listen 80

通常情况下,保持这个设置没有问题。但是,在某些情况下,例如 Skype 等其他应用程序已经占用了 80 端口导致 Apache 无法启动,或者您想在一台电脑上运行多个 Web 服务器时,就需要更改这个号码。例如,我们来尝试将其更改为 `8080` 端口。

# 将监听端口更改为 8080
Listen 8080

修改此设置并重启 Apache 后,您需要通过指定端口号的方式来访问网站,例如 `http://localhost:8080`。


2. 目录设置 - DocumentRoot 与 Directory

目录设置是决定将网站的“文件放在哪里”以及“以何种规则”进行发布的非常重要的一环。

DocumentRoot: 网站的“大门”

DocumentRoot 用于指定存放网站文件(HTML, CSS, 图片等)的顶层文件夹。当有外部访问时,Apache 首先会到这里来查找文件。您可以把它想象成您网站的“大门”。

# Unix/Linux/macOS 系统的路径示例
DocumentRoot "/usr/local/apache2/htdocs"

# Windows 系统的路径示例
# DocumentRoot "c:/Apache24/htdocs"

<Directory>: 为每个“房间”制定规则

<Directory> 块用于为 DocumentRoot 指定的文件夹设置更详细的访问规则和行为。例如,这个块的作用就是授予许可,好比在说:“这个房间谁都可以进,但房间内的规则可以由住户自己决定”。

<Directory "/usr/local/apache2/htdocs">
    # 是否允许 .htaccess 文件覆盖配置
    # 设置为 "All" 可以使 .htaccess 中的各种设置生效
    AllowOverride All

    # 此目录的访问控制方法
    # "Require all granted" 表示允许所有用户的访问
    Require all granted
</Directory>

AllowOverride All 尤其重要,它使得我们可以在各个目录中使用 .htaccess 文件来编写重定向或访问限制等规则。一开始不用想得太复杂,只需记住:“用 `DocumentRoot` 确定位置后,就用相同的路径创建一个 `<Directory>` 块来制定规则”。


3. 日志设置 - ErrorLog 与 CustomLog

当服务器出现问题时,日志是您最强大的帮手。无论是查找错误原因,还是分析有哪些用户正在访问,日志都不可或缺。

ErrorLog: 服务器的错误记录

顾名思义,ErrorLog 是记录 Apache 服务器上发生的错误的日志文件。诸如“文件未找到(404 Not Found)”之类的错误、PHP 等程序产生的错误,或是服务器启动失败的原因等,都会被记录在这里。养成在遇到问题时首先检查此文件的习惯吧。

# 保存错误日志的文件的路径
ErrorLog "logs/error_log"

CustomLog: 访问的全部记录

CustomLog 是记录所有对服务器的访问的日志文件,通常被称为“访问日志”。何时、谁(来自哪个 IP 地址)、访问了哪个文件等信息,都会被逐行记录下来。

# 保存访问日志的文件路径及记录格式的指定
CustomLog "logs/access_log" common

这里的 `common` 是日志记录格式的一个别名。通过此设置,日志将以一种普遍使用的格式(IP 地址、访问时间、请求内容、状态码等)被记录下来。


修改配置后最重要的一步:语法检查与重启

编辑 `httpd.conf` 之后,需要重启服务器才能让设置生效。但是,如果文件中有书写错误(语法错误),Apache 将无法启动。因此,在重启之前,务必进行“语法检查”。

在终端或命令提示符中执行以下命令。

# CentOS/RHEL 或手动安装的情况
httpd -t

# Debian/Ubuntu 的情况
apache2ctl configtest

如果执行结果显示“Syntax OK”,则表示配置文件没有语法错误。得到这个确认后,您就可以放心地重启 Apache 了。


总结

这次我们学习了 Apache 配置文件 `httpd.conf` 中既基础又极其重要的三个元素:端口、目录和日志。

当您能够理解并亲手修改这些配置时,您距离告别 Web 服务器新手又近了一步!接触 `httpd.conf` 能让您更深入地了解网站是如何向全世界发布的幕后故事。

好了,现在您已经掌握了发布一个网站的配置方法。那么,如果想在一台服务器上运营多个网站,该怎么办呢?答案就在我们下一期的主题——“虚拟主机”之中。

4. Apache 虚拟主机入门:轻松管理多个域名