代码之家  ›  专栏  ›  技术社区  ›  mvbl fst

Apache模块已安装,但在Ubuntu中似乎没有加载

  •  3
  • mvbl fst  · 技术社区  · 15 年前

    当我这么做的时候 apache2 -l 我明白了:

    Compiled in modules:
      core.c
      mod_log_config.c
      mod_logio.c
      prefork.c
      http_core.c
      mod_so.c
    

    sudo a2enmod rewrite 我明白了:

    Module rewrite already enabled
    

    以及 rewrite.load /etc/apache2/mods-enabled

    有人能看出哪里不对劲吗?

    1 回复  |  直到 15 年前
        1
  •  3
  •   David Z    15 年前

    这确实属于ServerFault,但由于它最终可能会被迁移,所以我将继续说编译到Apache的模块和动态加载的模块之间有区别。

    Apache能够以两种不同的方式加载模块。“更简单”的方法是将模块静态编译到服务器中。这意味着可执行文件 apache2 字面上包括模块的代码。这种方法的优点是模块总是可用的,并且Apache不必做任何特殊的事情来访问其代码,但是另一方面,如果您想添加、删除或更新静态编译的模块,您必须重新编译所有Apache。另外,静态编译的模块越多,可执行文件就越大。出于这些原因,该列表只包含一些最基本的模块是正常的,基本上是Apache运行所需的最低限度的模块。这几个模块就是运行时出现在列表中的模块 apache2 -l .

    Apache使用的所有其他模块,包括 mod_rewrite LoadModule a2enmod does:它添加了一个 加载模块 配置文件的指令(实际上,它将一个存根配置文件符号链接到一个由主配置提供的目录中)

    如果要查看已加载模块的完整列表(包括动态加载的模块),可以运行

    apache2 -M
    

    不过,您必须确保以与Ubuntu的init脚本相同的方式运行Apache。系统在启动Apache之前读入配置文件或其他东西是很常见的,如果不这样做,可能会更改加载的模块集。

    推荐文章