一、安裝apache時同時安裝mod_proxy模組
1.下載apache
本人下載的是httpd-2.2.12.tar.bz2,儲存到了/home/sxs/software下方。
2.解壓縮apache檔案
進入/home/sxs/software資料夾,執行:
# tar -xjf httpd-2.2.12.tar.bz2
將在/home/sxs/software下產生httpd-2.2.12資料夾。
如果下載的檔案後綴是tar.gz,需要用以下指令
# tar -xzf httpd-2.2.12.tar.gz
3.設定安裝目錄和參數
進入新解壓縮的httpd-2.2.12資料夾,執行:
# ./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=proxy
(一般網路上都是說./configure --prefix=/usr/local/apache,這裡是指定安裝mod_proxy模組,如何指定其他模組暫時不清楚,但是安裝好apache後可以透過第二部分加入模組)
4.編譯部署apache
# make WITH_PROXY_MODULES=yes //(网上文章一般都是直接:make) # make install
5.在/usr/local將會看到apache資料夾,開啟httpd.conf文件,可以看到:
LoadModule proxy_module modules/mod_proxy.so
等程式碼,在modules資料夾下也可以看到對應的mod_proxy.so檔案。
預設linux下安裝apache是不安裝mod_proxy等模組的。
二、安裝apache後編譯載入其他模組
假定現在需要編譯載入mod_rewrite.so
1.進入解壓縮後的apache目錄,在第一部分是/home/sxs/software/httpd-2.2.12
2.找到要編譯的檔案
# find ./ -name mod_rewrite.c
3.進入mod_rewrite.c所在目錄
# cd modules/mappers
4.編譯mod_rewrite.c
# /usr/local/apache/bin/apxs -c mod_rewrite.c
5.安裝mod_rewrite模組
# /usr/local/apache/bin/apxs -ian rewrite mod_rewrite.la
# /usr/local/apache/bin/apxs -iac mod_rewrite.c
$ httpd -l
$ 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 $ _
註:
apxs是一個為Apache HTTP伺服器編譯和安裝擴充模組的工具,用於編譯一個或多個原始程式或目標程式碼檔案為動態共享對象,使之可以用由mod_so提供的LoadModule指令在執行時載入到Apache伺服器中。 因此,要使用這個擴充機制,你的平台必須支援DSO特性,而且Apache httpd必須內建了mod_so模組。 apxs工具能自動探測是否具備這樣的條件,你也可以自己用這個指令手動探測:rrreee
該指令的輸出清單中應該有mod_so模組。如果所有這些條件都已具備,則可以輕鬆地借助apxs安裝你自己的DSO模組以擴展Apache伺服器的功能:rrreee
其中的參數files可以是任何C原始程式檔案(.c)、目標程式碼文件(.o)、甚至是一個庫(.a)。 apxs工具會根據其後綴自動編譯C原始程式或連接 目標程式碼和函式庫。但是,使用預先編譯的目標程式碼時,必須保證它們是位址獨立程式碼(PIC),使其能被動態地載入。如果使用GCC編譯,則應使用 -fpic 參數;如果使用其他C編譯器,則應查閱其手冊,為apxs使用對應的編譯參數。