abstract:一、安裝apache時同時安裝mod_proxy模塊1.下載apache本人下載的是httpd-2.2.12.tar.bz2,保存到了/home/sxs/software下。2.解壓apache文件進入/home/sxs/software文件夾,執(zhí)行:# tar -xjf httpd-2.2.12.tar.bz2將在/home/sxs/software下生成一個htt
一、安裝apache時同時安裝mod_proxy模塊
1.下載apache
本人下載的是httpd-2.2.12.tar.bz2,保存到了/home/sxs/software下。
2.解壓apache文件
進入/home/sxs/software文件夾,執(zhí)行:
# 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.設置安裝目錄和參數(shù)
進入新解壓的httpd-2.2.12文件夾,執(zhí)行:
# ./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=proxy
(一般網(wǎng)上都是說./configure --prefix=/usr/local/apache,這里是指定安裝mod_proxy模塊,如何指定其他模塊暫時不清楚,但是安裝好apache后可以通過第二部分添加模塊)
4.編譯部署apache
# make WITH_PROXY_MODULES=yes //(網(wǎng)上文章一般都是直接: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后編譯加載其他模塊
假定現(xiàn)在需要編譯加載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
注:以上4、5兩個步驟也可以合并為一個步驟
# /usr/local/apache/bin/apxs -iac mod_rewrite.c
注:
apxs是一個為Apache HTTP服務器編譯和安裝擴展模塊的工具,用于編譯一個或多個源程序或目標代碼文件為動態(tài)共享對象,使之可以用由mod_so提供的LoadModule指令在運行時加載到Apache服務器中。
因此,要使用這個擴展機制,你的平臺必須支持DSO特性,而且Apache httpd必須內(nèi)建了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 $ _
其中的參數(shù)files可以是任何C源程序文件(.c)、目標代碼文件(.o)、甚至是一個庫(.a)。apxs工具會根據(jù)其后綴自動編譯C源程序或者連接 目標代碼和庫。但是,使用預編譯的目標代碼時,必須保證它們是地址獨立代碼(PIC),使之能被動態(tài)地加載。如果使用GCC編譯,則應該使用 -fpic 參數(shù);如果使用其他C編譯器,則應該查閱其手冊,為apxs使用相應的編譯參數(shù)。