apache的使用与介绍

一、Apache 是什么

Apache HTTP Server(简称 Apache)是 Apache 软件基金会开发维护的开源、跨平台 Web 服务器,1995 年发布,长期是全球最主流的 Web 服务器之一。
  • 核心作用:接收浏览器 HTTP/HTTPS 请求,返回网页、图片、接口数据等资源。
  • 名字由来:源于 NCSA HTTPd 补丁集合(“A Patchy Server”),后定名 Apache。
    image

二、核心特性

  1. 模块化设计(DSO)

    功能以模块插拔:mod_ssl(HTTPS)、mod_rewrite(URL 重写)、mod_proxy(反向代理)等,按需加载。

  2. 跨平台

    支持 Linux、Windows、macOS、Unix 全平台部署。

  3. 配置灵活
    • 主配置:httpd.conf(全局)
    • 目录配置:.htaccess(子目录独立规则,无需重启服务)
  4. 功能丰富

    虚拟主机(多站点)、负载均衡、反向代理、访问控制、HTTPS、URL 重写。

  5. 稳定安全

    20+ 年生产验证,定期安全更新,支持权限控制、SSL/TLS 加密。

  6. 生态成熟

    文档完善、社区活跃,兼容 PHP/Python/Perl 等语言。

三、版本与架构

  • 主流版本2.4.x(当前稳定版,支持 HTTP/2、Event MPM,性能显著提升)。
  • MPM 多处理模块(核心并发模型):
    • Prefork:多进程、无线程,稳定、兼容旧程序,高并发内存占用高。
    • Worker:多进程 + 多线程,并发优于 Prefork。
    • Event:异步事件驱动,长连接 / 高并发场景资源占用最低(2.4 默认推荐)。

四、安装(主流系统)

1. Linux(CentOS/RHEL)

bash
运行
# 安装
yum install httpd -y
# 启动/开机自启
systemctl start httpd
systemctl enable httpd
# 状态/版本
systemctl status httpd
httpd -v
  • 访问:http://服务器IP,默认页面即成功。

2. Linux(Ubuntu/Debian)

bash
运行
apt update
apt install apache2 -y
systemctl start apache2
systemctl enable apache2

3. Windows

  • 方式 1:官网下载编译包(httpd-2.4.x-win64),解压后 httpd.exe -k install 注册服务。
  • 方式 2(推荐新手):用 XAMPP/WAMP 集成包,一键安装 Apache+PHP+MySQL。

4. macOS

bash
运行
# 启动预装 Apache
sudo apachectl start
# 停止/重启
sudo apachectl stop
sudo apachectl restart

五、核心配置(httpd.conf)

路径:
  • Linux:/etc/httpd/conf/httpd.conf/etc/apache2/apache2.conf
  • Windows:安装目录/conf/httpd.conf
常用配置项:
apache
# 监听端口(默认80)
Listen 80
# 服务器根目录
DocumentRoot "/var/www/html"
# 域名/IP
ServerName localhost:80
# 开启模块(示例)
LoadModule rewrite_module modules/mod_rewrite.so
# 目录权限
<Directory "/var/www/html">
    AllowOverride All  # 允许.htaccess
    Require all granted
</Directory>
  • 修改后重启生效:systemctl restart httpd(Linux)或 httpd.exe -k restart(Windows)。

六、常用功能配置示例

1. 虚拟主机(多站点)

同一服务器部署多个网站(基于域名):
apache
# 站点1:www.a.com
<VirtualHost *:80>
    ServerName www.a.com
    DocumentRoot "/var/www/a"
    ErrorLog "logs/a-error.log"
    CustomLog "logs/a-access.log" common
</VirtualHost>

# 站点2:www.b.com
<VirtualHost *:80>
    ServerName www.b.com
    DocumentRoot "/var/www/b"
</VirtualHost>

2. HTTPS 配置(mod_ssl)

apache
<VirtualHost *:443>
    ServerName www.a.com
    SSLEngine on
    SSLCertificateFile "/etc/httpd/certs/a.crt"
    SSLCertificateKeyFile "/etc/httpd/certs/a.key"
    DocumentRoot "/var/www/a"
</VirtualHost>

3. URL 重写(.htaccess 伪静态)

网站目录新建 .htaccess
apache
RewriteEngine On
# 301 重定向:http 转 https
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# 伪静态:/page/1 指向 /page.php?id=1
RewriteRule ^page/(\d+)$ page.php?id=$1 [L]

七、Apache vs Nginx

表格
对比项 Apache Nginx
并发模型 多进程 / 多线程 / 事件驱动 异步事件驱动(单进程多线程)
高并发性能 中等(Event 提升明显) 极高(万级并发低内存)
配置复杂度 灵活(.htaccess 友好) 简洁,无 .htaccess
稳定性 极强
适用场景 传统企业、共享主机、复杂规则 高并发站点、反向代理、负载均衡

八、常见问题与排查

  1. 端口占用(80 被占)
    • 查看占用:netstat -tuln | grep 80(Linux)或 netstat -ano | findstr :80(Windows)
    • 改端口:Listen 8080,重启服务。
  2. 403 Forbidden
    • 目录权限不足:chmod -R 755 /var/www/html(Linux)
    • httpd.confRequire all granted 未开启。
  3. 模块未加载
    • 查看已加载模块:httpd -M(Linux)或 httpd.exe -M(Windows)
    • 确认 LoadModule 指令未注释。

九、总结

Apache 是稳定、灵活、生态完善的经典 Web 服务器,适合传统业务、复杂配置场景;高并发场景可与 Nginx 组合(Nginx 做反向代理 / 静态资源,Apache 处理动态请求)。
上一篇 三层交换机下面再接一台三层交换机怎么配置?
下一篇 inux系统下使用ethtool命令定位网口位置的方法