在FreeBSD配置JSP环境(2) 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