温馨提示×

Apache模块在CentOS上如何安装

小樊
35
2025-11-29 19:35:31
栏目: 智能运维

在 CentOS 上安装与管理 Apache 模块

一、准备与常用命令

  • 安装 Apache(若尚未安装):sudo yum install -y httpd
  • 启动并设置开机自启:sudo systemctl start httpd && sudo systemctl enable httpd
  • 常用模块查询与语法检查:
    • 查看已加载模块:apachectl -M 或 httpd -M
    • 检查配置语法:httpd -t
  • 模块文件目录:/etc/httpd/modules/(用于确认 .so 模块文件是否存在)

二、安装模块的两类方式

  • 方式一 通过软件包安装(推荐)

    • 多数常用模块在官方仓库以软件包形式提供,安装包名通常形如:mod_模块名
    • 示例:
      • 安装 SSL 模块:sudo yum install -y mod_ssl
      • 安装 URL 重写模块:sudo yum install -y mod_rewrite
      • 安装 PHP 模块(与 Apache 集成):sudo yum install -y php
    • 安装完成后,模块通常已被系统自动启用,可直接重启 Apache 生效:sudo systemctl restart httpd。
  • 方式二 手动编译动态模块(当仓库无对应包时)

    1. 安装编译工具与依赖:sudo yum groupinstall -y “Development Tools”;sudo yum install -y httpd-devel apr-devel apr-util-devel
    2. 下载并解压 Apache 源码(与当前运行的 httpd -v 版本一致):wget https://downloads.apache.org/httpd/httpd-2.4.xx.tar.bz2 && tar xf httpd-2.4.xx.tar.bz2 && cd httpd-2.4.xx
    3. 编译模块(以 mod_example 为例):./configure --enable-example;make
    4. 复制模块到模块目录:sudo cp modules/example/.libs/mod_example.so /etc/httpd/modules/
    5. 在配置中加载模块:在 /etc/httpd/conf.modules.d/00-base.conf/etc/httpd/conf/httpd.conf 中添加:LoadModule example_module modules/mod_example.so
    6. 语法检查与重启:httpd -t && sudo systemctl restart httpd

三、启用、禁用与验证

  • 启用模块
    • 软件包安装的模块一般无需额外操作;若未自动加载,可在 /etc/httpd/conf.modules.d/ 下新建或编辑 .conf 文件,添加 LoadModule 指令并重启。
  • 禁用模块
    • 在配置中注释或删除对应的 LoadModule 行,保存后重启 Apache。
  • 验证
    • 查看已启用模块:apachectl -M
    • 确认模块文件存在:ls /etc/httpd/modules/mod_*.so
    • 语法与运行状态:httpd -t && systemctl status httpd

四、常见示例

  • 启用 mod_rewrite
    • 安装:sudo yum install -y mod_rewrite
    • 确保加载:grep -n “rewrite_module” /etc/httpd/conf.modules.d/*.conf /etc/httpd/conf/httpd.conf
    • 在需要的虚拟主机或目录配置中设置:AllowOverride All(用于 .htaccess 生效)
    • 验证与重启:apachectl -M | grep rewrite && sudo systemctl restart httpd
  • 启用 mod_ssl
    • 安装:sudo yum install -y mod_ssl
    • 重启:sudo systemctl restart httpd
    • 如启用防火墙,放行端口:sudo firewall-cmd --permanent --add-service=https && sudo firewall-cmd --reload
  • 安装 PHP 模块并测试
    • 安装:sudo yum install -y php
    • 重启:sudo systemctl restart httpd
    • 创建测试页:echo “” | sudo tee /var/www/html/info.php
    • 浏览器访问:http://服务器IP/info.php

五、注意事项

  • 不要混用 a2enmod/a2dismod(这是 Debian/Ubuntu 的模块管理工具),在 CentOS 上应通过软件包安装或编辑 LoadModule 指令来管理模块。
  • 修改配置后务必先执行 httpd -t 检查语法,再重启服务,避免配置错误导致服务不可用。
  • 若启用了防火墙(firewalld),记得放行 80/443 端口,或按需仅放行 443(启用 HTTPS 时)。

0