已安装Apache模块,但未安装';似乎无法在Ubuntu中加载

已安装Apache模块,但未安装';似乎无法在Ubuntu中加载,apache,mod-rewrite,ubuntu,module,Apache,Mod Rewrite,Ubuntu,Module,我对Linux相当陌生。昨天安装了VPS,安装了Apache2、PHP5和MySQL 当我执行apache2-l时,我得到以下信息: Compiled in modules: core.c mod_log_config.c mod_logio.c prefork.c http_core.c mod_so.c Module rewrite already enabled 并且rewrite.load处于/etc/apache2/mods启用状态 有谁能告诉我出了什么问题吗?

我对Linux相当陌生。昨天安装了VPS,安装了Apache2、PHP5和MySQL

当我执行apache2-l时,我得到以下信息:

Compiled in modules: core.c mod_log_config.c mod_logio.c prefork.c http_core.c mod_so.c Module rewrite already enabled 并且
rewrite.load
处于
/etc/apache2/mods启用状态


有谁能告诉我出了什么问题吗?

这确实属于ServerFault,但由于它最终可能会被迁移,我将继续说,编译成Apache的模块和动态加载的模块之间存在差异

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

Apache使用的所有其他模块,包括
mod_rewrite
,都是动态加载的。也就是说,它们的代码存储为单独的文件,Apache在启动后查找并读取这些文件。这否定了静态编译方法的缺点:由于模块存储在单独的文件中,因此如果要添加/删除/更改一个模块,只需重新启动服务器,而不需要重新编译。通过在Apache配置文件中放入
LoadModule
指令,可以告诉Apache要加载哪些模块。这就是
a2enmod
的基本功能:它向配置文件添加
LoadModule
指令。(实际上,它将存根配置文件符号链接到由主配置来源的目录中)

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

apache2 -M

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

仍然没有迁移。尽管如此,答案还是很好!