2010-06-09 68 views
3

我對Linux很新穎。昨天安裝了VPS,安裝了Apache2,PHP5和MySQL。已安裝Apache模塊,但似乎無法在Ubuntu中加載

當我做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

任何人都可以告訴出了什麼問題嗎?

回答

3

這確實屬於ServerFault,但是由於它最終可能會被遷移,所以我會繼續說,編譯到Apache的模塊和動態加載的模塊之間存在差異。

Apache能夠以兩種不同的方式加載模塊。 「更簡單」的方式是將模塊靜態編譯到服務器中。這意味着可執行文件apache2字面上包含模塊的代碼。這種方法的優點是模塊總是可用的,Apache不需要做任何特殊的事情來訪問它的代碼,但另一方面,如果你想添加,刪除或者更新一個靜態編譯的模塊,你必須重新編譯所有的Apache。另外,靜態編譯的模塊越多,可執行文件變得越大。由於這些原因,這個列表通常只包含一些最基本的模塊,基本上是Apache運行所需的最低限度。這幾個模塊就是您在運行apache2 -l時看到的列表中出現的那些模塊。

Apache使用的所有其他模塊(包括mod_rewrite)都是動態加載的。也就是說,他們的代碼是作爲單獨的文件存儲的,Apache在啓動後將其定位並讀入。這消除了靜態編譯方法的缺點:由於模塊存儲在單獨的文件中,因此如果要添加/刪除/更改模塊,只需重新啓動服務器,而不是重新編譯它。您可以通過將LoadModule指令放入您的Apache配置文件來告訴Apache要加載哪些模塊。這基本上是a2enmod所做的:它將LoadModule指令添加到配置文件。 (其實這符號鏈接存根配置文件保存到由主配置採購目錄)

如果你想看到加載的模塊,包括動態加載的人的完整列表,您可以運行

apache2 -M 

不過,您必須確保以與Ubuntu的初始化腳本相同的方式運行Apache。在啓動Apache之前,系統通常會讀取配置文件或其他內容,如果不這樣做,它可能會更改被加載的模塊集合。

+0

尚未遷移。儘管如此,答案很棒! – ffledgling 2014-01-04 17:21:38