添加mod_rewrite.c模塊

/etc/apache2/httpd.conf

加入

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

如果你的服務器apache還沒有安裝,那很簡單,在編譯apache時將mod_rewrite模塊編譯進去就可以,相關文檔可以在 www.gbunix.com中找到。如果你的apache已經安裝好了,現在只想編譯出mod_rewrite.so模塊,在apache中進行加載,下面我們就介紹這個方法。

以Solaris操作系統進行舉例:


# PATH=/usr/local/bin:/usr/sfw/bin:/usr/ccs/bin:$PATH
# export PATH
# which gcc
# which make

# find ./ -name mod_rewrite.c //在apache的安裝目錄中尋找mod_rewrite.c文件
# cd PATH/to/mod_rewrite.c //進入包含mod_rewrite.c文件的目錄
# apxs -c mod_rewrite.c //apxs請指定絕對路徑,在你當前正在使用apache的bin目錄裏
# apxs -i -a -n mod_rewrite mod_rewrite.c


[color=indigo]以下是加GeoIP模塊的install方法。借鑑:[/color]
To build mod_geoip as a dynamically loadable module:

apxs -i -a -L/usr/local/lib -I/usr/local/include -lGeoIP -c mod_geoip.c

-I/usr/local/include is where the GeoIP.h header file is installed
-L/usr/local/lib is where the libGeoIP library is located

This will put the correct LoadModule statement.



如果沒有什麼錯誤的話,應該在你的apache的modules目錄中編譯出一個mod_rewrite.so文件。

編輯httpd.conf文件,確認httpd.conf中已經包含mod_rewrite.so的加載語句,如下:

LoadModule rewrite_module modules/mod_rewrite.s


怎麼才能向一個已安裝的程序裏面添加模塊?


前提:你的apache是支持dso模式的,否則只能重新完全編譯:
方法1:
安裝一份全新全新的完全相同版本的apache到另外一個目錄,記得打開你需要的模塊,然後把安裝之後的模板拷貝或者調用到現在的。

方法2:
apxs方法,這個很簡單:http://w.yi.org/ftp/FAPM/apache/Apache2/zh/programs/apxs.html
apxs - APache擴展工具
apxs是一個爲Apache超文本傳輸協議(HTTP)服務器編譯安裝擴展模塊的工具, 用於編譯一個或多個源程序或目標代碼文件爲動態共享對象, 使之可以用mod_so中的LoadModule指令 在運行時刻加載到Apache服務器中。

因此,要使用這個擴展機制,你的平臺必須支持DSO特性, 而且Apache的httpd必須內建了mod_so模塊。 apxs工具能自動探測是否具備這樣的條件,你也可以自己用這個命令手動探測

$ httpd -l

該命令的輸出列表中應該有mod_so模塊。 如果所有這些條件均已具備, 則可以很容易地藉助apxs安裝你自己的DSO模塊以擴展Apache服務器的功能:



$ apxs -i -a -c mod_foo.c
gcc -fpic -DSHARED_MODULE -I/path/to/apache/include -c mod_foo.c
ld -Bshareable -o mod_foo.so mod_foo.o
cp mod_foo.so /path/to/apache/modules/mod_foo.so
chmod 755 /path/to/apache/modules/mod_foo.so
[activating module `foo' in /path/to/apache/etc/httpd.conf]
$ apachectl restart
/path/to/apache/sbin/apachectl restart: httpd not running, trying to start
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module
/path/to/apache/sbin/apachectl restart: httpd started
$ _



其中的參數files可以是任何C源程序文件(.c)或者目標代碼文件(.o),甚至是一個庫(.a)。 apxs工具會根據其後綴自動編譯C源程序,或連接目標代碼和庫。 但是,使用預編譯的目標代碼時,必須保證它們是獨立地址代碼(position independent code [PIC]), 使之能被動態地加載。如果使用GCC編譯,則應該使用-fpic參數;如果使用其他C編譯器,則應該查閱其手冊,爲apxs尋找相應的編譯參數。

有關Apache對DSO的支持的詳細信息,可以閱讀mod_so的文檔, 或者直接閱讀源程序src/modules/standard/mod_so.c。
發佈了8 篇原創文章 · 獲贊 0 · 訪問量 2637
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章