Skip to main content

1.简介

Apache HTTP Server(简称Apache)是一个开源的、跨平台的Web服务器软件,它是目前全球最流行的Web服务器之一。

下面是Apache HTTP Server的一些重要特点和详解:

工作模式

Apache HTTP Server有多种工作模式,其中最常见的两种是MPM(Multi-Processing Module,多处理模块)模式和工作进程/线程模式。

MPM 模式

  • Apache 2.0 之前的版本使用单一的 MPM 模式,例如 prefork。
  • Prefork MPM 是最常见的,它在每个请求中启动一个独立的进程来处理连接。这种模式的优点是稳定性高,但是会消耗较多的系统资源,因为每个连接都需要一个独立的进程。
  • Worker MPM 是另一种常见的 MPM 模式,它使用多个子进程处理连接,每个子进程可以有多个线程。这种模式比 prefork 更高效,因为它允许更多的并发连接,而不会消耗过多的系统资源。

工作进程/线程模式

  • 在 Apache 2.4 之后,引入了更加灵活的 MPM 模式,支持使用工作进程或工作线程处理连接。这些模式允许在进程和线程之间进行切换,并根据服务器的需求进行动态调整。
  • Event MPM 是一种常见的工作进程/线程模式,它在连接处理上使用了事件驱动的方法,可以在保持稳定性的同时提供更高的性能。

配置文件

Apache HTTP Server中常见的配置文件及其作用

  • httpd.conf:

    • httpd.conf 是Apache HTTP Server的主要配置文件,它包含了全局配置信息,如服务器端口、日志文件路径、默认文档目录、访问控制等。
    • httpd.conf 中,可以设置服务器的基本属性和行为,以及加载模块、虚拟主机配置等。
  • httpd.conf.d/:

    • 在Rocky Linux中,与RHEL/CentOS相同,Apache的额外配置文件通常存放在 httpd.conf.d/ 目录中。
    • 这些文件可用于组织和管理各种特定功能或站点的配置,例如安全性配置、代理设置等。
  • conf.modules.d/:

    • conf.modules.d/ 目录包含了Apache模块的配置文件,这些文件通常以 .conf 扩展名结尾。
    • 在这些文件中,可以启用或禁用特定的Apache模块,以满足特定的需求和场景。
  • conf.d/:

    • conf.d/ 目录包含了其他Apache配置文件,例如SSL配置文件、虚拟主机配置文件等。
    • 这些文件可以包含针对特定站点或应用的配置信息,以及其他额外的全局配置。
  • conf/httpd.conf 或 conf/httpd.conf.default:

    • 在某些Apache安装中,可能会将 httpd.conf 文件存放在 conf/ 目录下,或者有一个名为 httpd.conf.default 的示例配置文件,供用户参考和修改。

基本管理命令

启停服务

sudo systemctl start httpd	#启动httpd
sudo systemctl stop httpd #停止httpd
sudo systemctl restart httpd #重启httpd

sudo systemctl enable httpd #设置httpd开机自启
sudo systemctl disable httpd #禁用开机自启

查看服务

sudo systemctl status httpd	#查看Apache服务的当前状态,包括是否正在运行以及相关的日志信息。

httpd -v #查看安装的Apache版本号

重载配置文件

sudo systemctl reload httpd	#重新加载Apache的配置文件,使新的配置生效,而无需停止和启动服务。

sudo apachectl configtest #检查Apache配置文件的语法错误。它会尝试加载配置文件并报告任何语法错误或警告。

配置文件示例

# 全局配置
ServerRoot "/etc/httpd"
Listen 80

# 加载模块
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule dir_module modules/mod_dir.so
LoadModule mime_module modules/mod_mime.so
LoadModule rewrite_module modules/mod_rewrite.so

# 全局日志设置
ErrorLog "logs/error_log"
LogLevel warn

# 默认文件类型
TypesConfig /etc/mime.types

# 默认首页文件
DirectoryIndex index.html index.htm index.php

# 虚拟主机配置
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/var/www/html"
ServerName www.example.com
ErrorLog "logs/example.com-error_log"
CustomLog "logs/example.com-access_log" common
</VirtualHost>

# 目录访问控制
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>