這確實屬於ServerFault,但是由於它最終可能會被遷移,所以我會繼續說,編譯到Apache的模塊和動態加載的模塊之間存在差異。
Apache能夠以兩種不同的方式加載模塊。 「更簡單」的方式是將模塊靜態編譯到服務器中。這意味着可執行文件apache2
字面上包含模塊的代碼。這種方法的優點是模塊總是可用的,Apache不需要做任何特殊的事情來訪問它的代碼,但另一方面,如果你想添加,刪除或者更新一個靜態編譯的模塊,你必須重新編譯所有的Apache。另外,靜態編譯的模塊越多,可執行文件變得越大。由於這些原因,這個列表通常只包含一些最基本的模塊,基本上是Apache運行所需的最低限度。這幾個模塊就是您在運行apache2 -l
時看到的列表中出現的那些模塊。
Apache使用的所有其他模塊(包括mod_rewrite
)都是動態加載的。也就是說,他們的代碼是作爲單獨的文件存儲的,Apache在啓動後將其定位並讀入。這消除了靜態編譯方法的缺點:由於模塊存儲在單獨的文件中,因此如果要添加/刪除/更改模塊,只需重新啓動服務器,而不是重新編譯它。您可以通過將LoadModule
指令放入您的Apache配置文件來告訴Apache要加載哪些模塊。這基本上是a2enmod
所做的:它將LoadModule
指令添加到配置文件。 (其實這符號鏈接存根配置文件保存到由主配置採購目錄)
如果你想看到加載的模塊,包括動態加載的人的完整列表,您可以運行
apache2 -M
不過,您必須確保以與Ubuntu的初始化腳本相同的方式運行Apache。在啓動Apache之前,系統通常會讀取配置文件或其他內容,如果不這樣做,它可能會更改被加載的模塊集合。
尚未遷移。儘管如此,答案很棒! – ffledgling 2014-01-04 17:21:38