[email protected] 2001.4.10 ====================================================== 環境概述: JDK1.2.2+Apache1.3.9+tomcat3.2.1+mod_jk.so 使用的軟件包如下: JDK1.2.2-FreeBSD-Alpha.tar.gz apache_1.3.9.tar.gz jakarta-tomcat-3.2.1-src.tar.gz jakarta-tomcat-3.2.1.tar.gz 注釋:之所以使用tomcat的src和bin兩種,因為前者在FreeBSD下build的時候 出現很多錯誤,我改了一點,沒成功,也懶得改了。 1.安裝Apache: #tar zxvf apache_1.3.9.tar.gz #cd apache_1.3.9 #./configure --prefix=/usr/local/apache --enable-module=so 這裡,需要enable-module,以便使Apache配置文件中的LoadModule命令 生效。 #make #make install 到此apache安裝完畢 2.安裝JDK: #mv JDK1.2.2-FreeBSD-Alpha.tar.gz /usr/local #tar zxvf JDK1.2.2-FreeBSD-Alpha.tar.gz #mv jdk-image-i386/ jdk #ln -s jdk/jre jre 下面設置環境變量: #vi /etc/profile 在PATH後面添加/usr/local/jdk/bin:/usr/local/jre/bin Java_HOME=/usr/local/jdk CLASSPATH=/usr/local/jdk/lib 如果root用的是csh,則需要作其他的改動,比如編輯/root/.cshrc或者修改 root的shell以便登陸時加載這些環境變量。 3.安裝tomcat: #mv jakarta-tomcat-3.2.1.tar.gz /usr/local #tar zxvf jakarta-tomcat-3.2.1.tar.gz #mv jakarta-tomcat-3.2.1 tomcat 只要你正確設置了JAVA_HOME,CLASSPATH和PATH,現在應該可以啟動tomcat了。 #/usr/local/tomcat/bin/tomcat.sh start 在Netscape浏覽器裡輸入http://localhost:8080/來檢查能否正確運行jsp。 4.使用tomcat source生成mod_jk.so #tar zxvf jakarta-tomcat-3.2.1-src.tar.gz #cd jakarta-tomcat-3.2.1-src/src/native/apache1.3 Makefile.freebsd的內容: ########################################################################## # The Following is the Makefile.freebsd 's content APACHE_HOME=/usr/local/apache OS=freebsd APXS=${APACHE_HOME}/bin/apxs A13_FLAGS=-I${APACHE_HOME}/include # I assume this one is set up already JAVA_HOME=/usr/local/jdk JAVA_INCL=-I${JAVA_HOME}/include -I${JAVA_HOME}/include/${OS} JAVA_LIB=-L${JAVA_HOME}/jre/lib/${ARCH} -L${JAVA_HOME}/lib/${ARCH}/native_th reads CFLAGS=-DHAVE_CONFIG_H -g -fpic -DSHARED_MODULE -O2 -D_REENTRANT -pthread - DLinux -Wall JK=../jk/ SRCS=jk_ajp12_worker.c jk_connect.c jk_msg_buff.c jk_util.c jk_ajp13.c jk_jni_worker.c jk_pool.c jk_worker.c jk_ajp13_worker.c jk_lb_worker.c jk_sockbuf.c jk_map.c jk_uri_worker_map.c OBJS=${patsubst %.c,%.o,${SRCS}} %.o: ../jk/%.c ${CC} -c ${CFLAGS} ${JAVA_INCL} ${A13_FLAGS} $< -o $@ .c.o: ${APXS} -c ${JAVA_INCL} -DFREEBSD ${A13_FLAGS} -I../jk $< all: mod_jk.so mod_jk.so: ${OBJS} mod_jk.o $(APXS) -c -o mod_jk.so ${OBJS} mod_jk.o # $(CC) -shared -o mod_jk.so ${OBJS} mod_jk.o clean: rm *.o *.so ########################################################################## 在編譯生成mod_jk.so時,遇到了很多問題,首先是關於Makefile文件的修改, 然後apxs老是提示錯誤,如果是這樣的話,可以直接使用gcc命令行編譯: #gcc -fpic -c *.c jk/*.c -I../jk #gcc --shared -o mod_jk.so *.o 也可以達到目的 注意:要加入-I選項,將apache,jdk和../jk的include文件包含,具體參照 前面的Makefile.freebsd 生成mod_jk.so之後,將它拷貝到/usr/local/apache/libexec/下 5.配置apache和tomcat使apache遇到jsp文件時調用tomcat的jsp引擎: 多數情況下,tomcat會產生Apache需要的配置文件,當tomcat啟動的時候, 它在/usr/local/tomcat/conf/下自動產生一個與Apache相適應的名為 mod_jk.conf-auto的文件,這個文件需要被httpd.conf包含。 #cd /usr/local/apache/conf #vi httpd.conf 加入如下行: Include /usr/local/tomcat/conf/mod_jk.conf-auto 同時,還需要Load Module,在httpd.conf中添加如下行: LoadModule jk_module libexec/mod_jk.so AddModule mod_jk.c JkWorkersFile /usr/local/jakarta-tomcat/conf/workers.properties JkLogFile /usr/local/apache/logs/mod_jk.log JkLogLevel warn 注意:要配置workers.properties和mod_jk.conf,使其與當前的環境相適應。 6.運行: 到現在為止,如果沒有問題的話,就可以運行了, #/usr/local/apache/bin/apachectl start 如果出現類似如下錯誤: loading mod_jk.so, undefined symbol; map_name_at 說明mod_jk.so並沒有編譯完全,沒有將所以的.o文件或者.c文件編譯進去, 需要重新編譯。 #/usr/local/tomcat/bin/tomcat.sh start 可以修改tomcat的配置文件,停止它的8080端口的httpd服務,使系統 最終只有一個httpd服務在運行。