【转】Tomcat5.0.18+Apache2.0.50+Linux9整合过程(完全版)

本文提供了一份详细的指南,介绍了如何在Linux环境下配置Apache 2.0.50、Tomcat 5.0.18及相应连接器的过程。内容覆盖了JDK的安装与环境配置、Tomcat的基本安装与启动、Apache的安装配置步骤以及连接器的生成与配置等关键技术环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[b]李高峰[/b]
[b]前言:[/b]在《APACHE2.0.50+TOMCAT5.0.18+LINUX9配置过程》发表不久,许多朋友提出了诸多细节问题,为了满足大家的需要,作者以配置过程为主线,穿插必要的讲解,力求清晰完整,正文中粗黑体标出的主要是操作命令,蓝体(除了URL以外)标出的是返回的结果,粗蓝体标出的是需要修改的地方和修改后的结果,欢迎大家提出意见。
假设您现在已经拥有了:
1.        j2sdk-1_4_2_05-linux-i586-rpm.bin
2. httpd-2.0.50.tar.gz
3. jakarta-tomcat-5.0.18.tar.gz
4. jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz
并且放置在/www目录下。
[如果您没有这些安装包,您可以在网上查找,或者直接向我(lushanlee@hotmail.com)索取,注意版本号尽可能跟要求一致]

一、安装JDK
大家从网上下载的JDK的LINUX版本一般是bin格式,要变成RPM格式必须通过转化(如果是RPM格式的文件直接就可以安装)。
1. 使bin文件可执行。
[code="java"]# chmod +x j2sdk-1_4_2_05-linux-i586-rpm.bin[/code]2. 解压。
[code="java"]# ./j2sdk-1_4_2_05-linux-i586-rpm.bin[/code]3. 直接安装,默认的安装路径是/usr/java
[code="java"]# rpm -ivh j2sdk-1_4_2_05-linux-i586.rpm[/code]4. 为了操作简单,有必要为刚刚安装的j2sdk1.4.2_05建立一个JDK的同步目录
[code="java"]# ln -s j2sdk1.4.2_05 jdk[/code]5. 设置环境变量JAVA_HOME(这个变量会在后面的Tomcat中用到)。
[code="java"]# vi /etc/profile[/code]在该文件的末尾加上下面两行
JAVA_HOME=/usr/java/jdk
export JAVA_HOME
保存退出
6. 验证该变量的设置。如果感觉安装顺利的话,可以跳过此步。
[code="java"]# echo $JAVA_HOME[/code]大家会发现返回的是空行
不要惊慌,退出去重新登录系统就可以了
[code="java"]# exit
# echo $JAVA_HOME
/usr/java/jdk[/code]如果返回这行,就说明设置成功。至此您的JDK安装完毕。
[b]
二、安装Tomcat[/b]Tomcat的安装比较简单,解压后运行即可。
7. 将安装包拷贝到/usr/local目录下安装,如果您在/www目录下解开也可以,作者为了使目录规范,将其拷贝到/usr/local下安装。
[code="java"]# cp jakarta-tomcat-5.0.18.tar.gz /usr/local
# tar -zxvf jakarta-tomcat-5.0.18.tar.gz[/code]8. 为解压后得到的jakarta-tomcat-5.0.18创建一个名为tomcat的同步目录。
[code="java"]# ln -s jakarta-tomcat-5.0.18 tomcat[/code]9. 设置环境变量CATALINA_HOME,并验证
[code="java"]# vi /etc/profile[/code]在文件最后加入如下两行
CATALINA_HOME=/usr/local/tomcat
export CATALINA_HOME
保存退出
验证CATALINA_HOME的过程跟上面验证JAVA_HOME的过程相同。
10. 启动并测试安装结果
[code="java"]# cd ./tomcat/bin
# ./startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JAVA_HOME: /usr/java/jdk[/code]打开浏览器,敲入主机地址和端口号8080,回车
如:http://192.168.1.205:8080
如果出现如下画面则说明,安装成功。


[b]三、安装Apache[/b]相对以上两者来说,步骤较多,但具体每个步骤操作都很简单。
11. 拷贝安装包到/usr/local,并在目标目录下进行解压。
[code="java"]# cp httpd-2.0.50.tar.gz /usr/local
# cd /usr/local
# tar -zxvf httpd-2.0.50.tar.gz[/code]12. 配置安装参数,安装的目标目录为/usr/local/apache2,一定要设置enable-mods-shared=all,否则在编译的时候会报错。
[code="java"]# cd httpd-2.0.50
# ./configure --prefix=/usr/local/apache2 --enable-mods-shared=all[/code]13. 编译并安装。
[code="java"]# make
# make install[/code]14. 启动Apache,并测试。
[code="java"]# cd /usr/local/apache2/bin
# ./apachectl start[/code]打开浏览器,并在地址栏中输入主机的IP地址
如http://192.168.1.205
如果出现以下画面则说明安装成功。


[b]
四、生成连接器[/b]
15. 拷贝源包到/usr/local并在目标目录中解压(当然在原来的目录中解压也是可以的,作者是为了规范所以安装的程序都放在/usr/local下)。
[code="java"]# cp jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz /usr/local
# cd /usr/local
# tar -zxvf jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz[/code]16. 创建一个connector同步目录,目的是为了简化操作。
[code="java"]# ln -s jakarta-tomcat-connectors-jk2-2.0.4-src connector[/code]17. 进行编译配置。大家一定要注意这几个参数中前三个是很重要的,必要时可以去相应的目录看看相关的文件是否存在。
[code="java"]# cd connector
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-apr-lib=/usr/local/apache2/bin --with-tomcat-41=/usr/local/tomcat --with-java-home=/usr/java/jdk --with-jni[/code]18. 修改Makefile文件,这个文件是编译生成连接器的关键,由于默认情况下会丢包所以有必要对其进行修改,关键!如果没有修改很可能会出现附录中的错误。
[code="java"]# cd server/apache2
# vi Makefile[/code]在其中很容易找到


###### Based on rules.mk ##########################################
将其前面的四行
ifdef APR_LIBDIR_LA
JK_LDFLAGS=-L${APACHE2_LIBDIR} -lcrypt
else
JK_LDFLAGS=-lcrypt ${APR_LIBS}
endif
全都注释掉或删除掉,并在其下添加以下六行
ifdef APR_LIBDIR_LA
JK_LDFLAGS=-L${APACHE2_LIBDIR} -lcrypt
else
JK_LDFLAGS=-lcrypt ${APR_LIBS} JK_LDFLAGS=-lcrypt ${APR_LIBS} -L/usr/local/apache2/lib -laprutil-0 -lgdbm -ldb-4.0 -lexpat
endif
结果如下
#ifdef APR_LIBDIR_LA
#JK_LDFLAGS=-L${APACHE2_LIBDIR} -lcrypt
#else
#JK_LDFLAGS=-lcrypt ${APR_LIBS}
#endif
ifdef APR_LIBDIR_LA
JK_LDFLAGS=-L${APACHE2_LIBDIR} -lcrypt
else
JK_LDFLAGS=-lcrypt ${APR_LIBS} JK_LDFLAGS=-lcrypt ${APR_LIBS} -L/usr/local/apache2/lib -laprutil-0 -lgdbm -ldb-4.0 -lexpat
endif
###### Based on rules.mk ##########################################


保存后退出。
19. 编译
[code="java"]# make[/code]20. 运行apache下的apxs,如果返回如下结果,证明正常。
[code="java"]# cd ..
# cd ..
# cd ../build/jk2/apache2
# /usr/local/apache2/bin/apxs -n jk2 -i mod_jk2.so
/usr/local/apache2/build/instdso.sh SH_LIBTOOL='/usr/local/apache2/build/libtool' mod_jk2.so /usr/local/apache2/modules
/usr/local/apache2/build/libtool --mode=install cp mod_jk2.so /usr/local/apache2/modules/
cp mod_jk2.so /usr/local/apache2/modules/mod_jk2.so
Warning! dlname not found in /usr/local/apache2/modules/mod_jk2.so.
Assuming installing a .so rather than a libtool archive.
chmod 755 /usr/local/apache2/modules/mod_jk2.so[/code]21. 拷贝生成的两个文件到apache的modules目录,这两个文件就是负责Tomcat和Apache通信的。
[code="java"]# cp libjkjni.so /usr/local/apache2/modules/jkjni.so
# cp mod_jk2.so /usr/local/apache2/modules/
[b]cp: overwrite `/usr/local/apache2/modules/mod_jk2.so'? y[/code]
五 配置[/b]22. 对Tomcat的jk2.properties进行配置,只需要修改一行,找到shm.file,去掉该行的注释符,并将路径改为/usr/local/apache2/logs/jk2.shm。
[code="java"]# cd /usr/local/tomcat/conf
# vi jk2.properties

# channelUnix.file=${jkHome}/work/jk2.socket
# Just to check if the the config is working
shm.file=/usr/local/apache2/logs/jk2.shm

# In order to enable jni use any channelJni directive
# channelJni.disabled = 0
# And one of the following directives:[/code]
23. 配置Apache的httpd.conf,在LoadModule后添加一行,
LoadModule jk2_module modules/mod_jk2.so
在Apache启动的时候会装载mod_jk2.so
[code="java"]# cd /usr/local/apache2/conf
# vi httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule jk2_module modules/mod_jk2.so[/code]
24. 在Apache的conf目录中创建文件workers2.properties,其中加入如下几行
[code="java"]# vi workers2.properties[/code]其中可以添加Tomcat的虚拟目录
[uri:/jsp-examples/*]
当然也可以在其后添加
[uri:/servlets-examples/*]
这样你就可以访问servlets-
examples
#------start ---------
[shm]
file=/usr/local/apache/logs/shm.file
size=1048576
[channel.socket]
tomcatId=localhost:8009
[uri:/jsp-examples/*]
# --------end ------------
保存退出
25. 启动tomcat,apache并进行测试
[code="java"]# cd /usr/local/tomcat/bin
# ./startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JAVA_HOME: /usr/java/jdk
# cd /usr/local/apache2/bin
# ./apachectl start[/code]打开浏览器,输入http://主机地址/ jsp-examples
如http://192.168.1.205/jsp-examples


[b]附录 常见安装错误[/b]
1 在apache启动后的日志(/usr/loal/apache2/logs/error_log)里如果发现这样的错误:
channelSocket.open() connect failed localhost:8009 146 Connection refused
请检查workers2.properties配置是否正确
2 在TOMCAT启动后的日志(/usr/local/tomcat/logs/Catalina.out)里如果发现这样的错误:
INFO:APRnotloaded,disablingjnicomponents:java.io.IOException:java.lang.UnsatisfiedLinkError:/usr/local/apache2/modules/jkjni.so:/usr/local/apache2 /modules/jkjni.so: undefined symbol: apr_md5_final
请检查是否正确修改了Makefile

[b]附录二 主要操作过程[/b]
一、安装JDK
# chmod +x j2sdk-1_4_2_05-linux-i586-rpm.bin
# ls
httpd-2.0.50.tar.gz mysql-standard-4.1.3-beta-pc-linux-i686.tar.gz
j2sdk-1_4_2_05-linux-i586-rpm.bin php-5.0.0.tar.gz
jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz zlib-1.2.1.tar.gz
libxml2-2.6.11.tar.gz
# ./j2sdk-1_4_2_05-linux-i586-rpm.bin
Sun Microsystems, Inc.
Binary Code License Agreement
for the

JAVATM 2 SOFTWARE DEVELOPMENT KIT (J2SDK), STANDARD
EDITION, VERSION 1.4.2_X

SUN MICROSYSTEMS, INC. ("SUN&quot IS WILLING TO LICENSE THE
SOFTWARE IDENTIFIED BELOW TO YOU ONLY UPON THE CONDITION
THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN THIS BINARY
CODE LICENSE AGREEMENT AND SUPPLEMENTAL LICENSE TERMS
(COLLECTIVELY "AGREEMENT&quot. PLEASE READ THE AGREEMENT
CAREFULLY. BY DOWNLOADING OR INSTALLING THIS SOFTWARE, YOU
ACCEPT THE TERMS OF THE AGREEMENT. INDICATE ACCEPTANCE BY
SELECTING THE "ACCEPT" BUTTON AT THE BOTTOM OF THE
AGREEMENT. IF YOU ARE NOT WILLING TO BE BOUND BY ALL THE
TERMS, SELECT THE "DECLINE" BUTTON AT THE BOTTOM OF THE
AGREEMENT AND THE DOWNLOAD OR INSTALL PROCESS WILL NOT
CONTINUE.
。。。。。。。。。。

For inquiries please contact: Sun Microsystems, Inc., 4150
Network Circle, Santa Clara, California 95054, U.S.A.
(LFI#140023/Form ID#011801)
Do you agree to the above license terms? [yes or no]
y
Unpacking...
Checksumming...
0
0
Extracting...
UnZipSFX 5.40 of 28 November 1998, by Info-ZIP ([url=mailto:Zip-Bugs@lists.wku.edu]Zip-Bugs@lists.wku.edu[/url]).
inflating: j2sdk-1_4_2_05-linux-i586.rpm
Done.
# ls
httpd-2.0.50.tar.gz libxml2-2.6.11.tar.gz
j2sdk-1_4_2_05-linux-i586.rpm mysql-standard-4.1.3-beta-pc-linux-i686.tar.gz
j2sdk-1_4_2_05-linux-i586-rpm.bin php-5.0.0.tar.gz
jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz zlib-1.2.1.tar.gz
# rpm -ivh j2sdk-1_4_2_05-linux-i586.rpm
Preparing... ########################################### [100%]
1:j2sdk ########################################### [100%]
# cd /usr/java
# ls
j2sdk1.4.2_05
# ln -s j2sdk1.4.2_05 jdk
# ls
j2sdk1.4.2_05 jdk
# vi /etc/profile
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

pathmunge () {
if ! echo $PATH | /bin/egrep -q "(^|$1($|" ; then
if [ "$2" = "after" ] ; then
PATH=$PATH1
else
PATH=$1PATH
fi
fi
}

# Path manipulation
if [ `id -u` = 0 ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
fi

pathmunge /usr/X11R6/bin after

unset pathmunge

# No core files by default
ulimit -S -c 0 >; /dev/null 2>;&1

USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"

HOSTNAME=`/bin/hostname`
HISTSIZE=1000

if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
INPUTRC=/etc/inputrc
fi

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
. $i
fi
done

unset i
JAVA_HOME=/usr/java/jdk
export JAVA_HOME
"/etc/profile" 51L, 883C written
# echo $JAVA_HOME

# exit
# echo $JAVA_HOME
/usr/java/jdk


二、安装Tomcat
# cd www
# ls
httpd-2.0.50.tar.gz libxml2-2.6.11.tar.gz
j2sdk-1_4_2_05-linux-i586.rpm mysql-standard-4.1.3-beta-pc-linux-i686.tar.gz
j2sdk-1_4_2_05-linux-i586-rpm.bin php-5.0.0.tar.gz
jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz zlib-1.2.1.tar.gz

# cp jakarta-tomcat-5.0.18.tar.gz /usr/local
# cd /usr/local
# ls
bin etc games include jakarta-tomcat-5.0.18.tar.gz lib libexec man sbin share src
# tar -zxvf jakarta-tomcat-5.0.18.tar.gz
# ls
bin games jakarta-tomcat-5.0.18 lib man share
etc include jakarta-tomcat-5.0.18.tar.gz libexec sbin src
# ln -s jakarta-tomcat-5.0.18 tomcat
# ls
bin games jakarta-tomcat-5.0.18 lib man share tomcat
etc include jakarta-tomcat-5.0.18.tar.gz libexec sbin src
# vi /etc/profile

# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

pathmunge () {
if ! echo $PATH | /bin/egrep -q "(^|$1($|" ; then
if [ "$2" = "after" ] ; then
PATH=$PATH1
else
PATH=$1PATH
fi
fi
}

# Path manipulation
if [ `id -u` = 0 ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
fi

pathmunge /usr/X11R6/bin after

unset pathmunge

# No core files by default
ulimit -S -c 0 >; /dev/null 2>;&1

USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"

HOSTNAME=`/bin/hostname`
HISTSIZE=1000

if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
INPUTRC=/etc/inputrc
fi

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
. $i
fi
done

unset i
JAVA_HOME=/usr/java/jdk
export JAVA_HOME
CATALINA_HOME=/usr/local/tomcat
export CATALINA_HOME
# cd ./tomcat/bin
# ./startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JAVA_HOME: /usr/java/jdk


三、安装Apache
# ls
httpd-2.0.50.tar.gz libxml2-2.6.11.tar.gz
j2sdk-1_4_2_05-linux-i586.rpm mysql-standard-4.1.3-beta-pc-linux-i686.tar.gz
j2sdk-1_4_2_05-linux-i586-rpm.bin php-5.0.0.tar.gz
jakarta-tomcat-5.0.18.tar.gz zlib-1.2.1.tar.gz
jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz
# cp httpd-2.0.50.tar.gz /usr/local
# cd /usr/local
# ls
bin httpd-2.0.50.tar.gz jakarta-tomcat-5.0.18.tar.gz man src
etc include lib sbin tomcat
games jakarta-tomcat-5.0.18 libexec share
# tar -zxvf httpd-2.0.50.tar.gz
httpd-2.0.50/test/.indent.pro
httpd-2.0.50/test/Makefile.in
httpd-2.0.50/test/README
httpd-2.0.50/test/check_chunked
httpd-2.0.50/test/cls.c
httpd-2.0.50/test/tcpdumpscii.txt
httpd-2.0.50/test/test-writev.c
httpd-2.0.50/test/test_find.c
httpd-2.0.50/test/test_limits.c
httpd-2.0.50/test/test_parser.c
httpd-2.0.50/test/test_select.c
httpd-2.0.50/test/time-sem.c
httpd-2.0.50/test/zb.c
httpd-2.0.50/configure
httpd-2.0.50/httpd.spec
# ls
bin httpd-2.0.50 jakarta-tomcat-5.0.18 libexec share
etc httpd-2.0.50.tar.gz jakarta-tomcat-5.0.18.tar.gz man src

games include lib sbin tomcat
# cd httpd-2.0.50
# ./configure --prefix=/usr/local/apache2 --enable-mods-shared=all
# make
# make install
# cd /usr/local/apache2/bin
# ls
ab apr-config apxs dbmmanage envvars-std htdigest httpd rotatelogs
apachectl apu-config checkgid envvars htdbm htpasswd logresolve
# ./apachectl start
# ./apachectl stop


四、生成连接器
# cp jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz /usr/local
# cd /usr/local
# ls
apache2 httpd-2.0.50 jakarta-tomcat-5.0.18.tar.gz man tomcat
bin httpd-2.0.50.tar.gz jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz sbin
etc include lib share
games jakarta-tomcat-5.0.18 libexec src
# tar -zxvf jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz
jakarta-tomcat-connectors-jk2-2.0.4-src/
jakarta-tomcat-connectors-jk2-2.0.4-src/xxx
jakarta-tomcat-connectors-jk2-2.0.4-src/README.txt
jakarta-tomcat-connectors-jk2-2.0.4-src/KEYS
jakarta-tomcat-connectors-jk2-2.0.4-src/LICENSE
。。。。。。。。
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/images/tomcat.ico
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/jk/
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/jk/aphowto.xml
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/jk/domhowto.xml
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/jk/iishowto.xml
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/jk/neshowto.xml
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/jk/quickhowto.xml
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/jk/workershowto.xml
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/jk2/
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/jk2/confighowto.xml
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/jk2/configtc.xml
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/jk2/configtccom.xml
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/jk2/configtcex.xml
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/jk2/configweb.xml
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/jk2/configwebcom.xml
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/jk2/configwebex.xml
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/jk2/davhowto.xml
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/jk2/installhowto.xml
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/jk2/vhosthowto.xml
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/style.xsl
jakarta-tomcat-connectors-jk2-2.0.4-src/jk/xdocs/menu.idx
jakarta-tomcat-connectors-jk2-2.0.4-src/lib/
jakarta-tomcat-connectors-jk2-2.0.4-src/scandoc/
jakarta-tomcat-connectors-jk2-2.0.4-src/scandoc/scandoc.pl
jakarta-tomcat-connectors-jk2-2.0.4-src/scandoc/template.pl
# ls
apache2 httpd-2.0.50 jakarta-tomcat-5.0.18.tar.gz libexec src
bin httpd-2.0.50.tar.gz jakarta-tomcat-connectors-jk2-2.0.4-src man tomcat
etc include jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz sbin
games jakarta-tomcat-5.0.18 lib share
# ln -s jakarta-tomcat-connectors-jk2-2.0.4-src connector
# ls
apache2 games jakarta-tomcat-5.0.18 lib share
bin httpd-2.0.50 jakarta-tomcat-5.0.18.tar.gz libexec src
connector httpd-2.0.50.tar.gz jakarta-tomcat-connectors-jk2-2.0.4-src man tomcat
etc include jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz sbin
# cd connector
# ls
build.properties.default common jk lib NOTICE RELEASE-NOTES.txt xxx
build.xml doc KEYS LICENSE README.txt scandoc
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-apr-lib=/usr/local/apache2/bin --with-tomcat-41=/usr/local/tomcat --with-java-home=/usr/java/jdk --with-jni
。。。。。。
config.status: creating Makefile
config.status: creating server/apache13/Makefile
config.status: creating server/apache13/Makefile.apxs
config.status: creating server/apache2/Makefile
config.status: creating server/apache2/Makefile.apxs
config.status: creating ../build.properties
config.status: creating scripts/build/unix/dummy
config.status: executing depfiles commands
# cd server/apache2
# vi Makefile
# It doesn't hurt if we include all
INCLUDES= -I${JK_DIR}/include \
${APACHE2_INCL} \
${APR_INCL} \
${JAVA_INCL}

JK_CFLAGS=-DCHUNK_SIZE=4096 -DUSE_APACHE_MD5 -DHAVE_JNI
#ifdef APR_LIBDIR_LA
#JK_LDFLAGS=-L${APACHE2_LIBDIR} -lcrypt
#else
#JK_LDFLAGS=-lcrypt ${APR_LIBS}
#endif
ifdef APR_LIBDIR_LA
JK_LDFLAGS=-L${APACHE2_LIBDIR} -lcrypt
else
JK_LDFLAGS=-lcrypt ${APR_LIBS} JK_LDFLAGS=-lcrypt ${APR_LIBS} -L/usr/local/apache2/lib -laprutil-0 -lgdbm -ldb-4.0 -lexpat
endif

###### Based on rules.mk ##########################################
# make
# cd ..
# cd ..
# cd ../build/jk2/apache2
# /usr/local/apache2/bin/apxs -n jk2 -i mod_jk2.so
/usr/local/apache2/build/instdso.sh SH_LIBTOOL='/usr/local/apache2/build/libtool' mod_jk2.so /usr/local/apache2/modules
/usr/local/apache2/build/libtool --mode=install cp mod_jk2.so /usr/local/apache2/modules/
cp mod_jk2.so /usr/local/apache2/modules/mod_jk2.so
Warning! dlname not found in /usr/local/apache2/modules/mod_jk2.so.
Assuming installing a .so rather than a libtool archive.
chmod 755 /usr/local/apache2/modules/mod_jk2.so
# cp libjkjni.so /usr/local/apache2/modules/jkjni.so
# cp mod_jk2.so /usr/local/apache2/modules/
cp: overwrite `/usr/local/apache2/modules/mod_jk2.so'? y


五、配置
# cd /usr/local/tomcat/conf
# ls
Catalina catalina.properties server-minimal.xml tomcat-users.xml
catalina.policy jk2.properties server.xml web.xml
# vi jk2.properties

# If set to inprocess the mod_jk2 will Register natives itself
# This will enable the starting of the Tomcat from mod_jk2
# apr.jniModeSo=inprocess


# channelUnix.file=${jkHome}/work/jk2.socket
# Just to check if the the config is working
shm.file=/usr/local/apache2/logs/jk2.shm

# In order to enable jni use any channelJni directive
# channelJni.disabled = 0
# And one of the following directives:


# cd /usr/local/apache2/conf
# vi httpd.conf
#
# Based upon the NCSA server configuration files originally by Rob McCool.
#
# This is the main Apache server configuration file. It contains the
# configuration directives that give the server its instructions.
# See ; for detailed information about
# the directives.
#
# Do NOT simply read the instructions in here without understanding
# what they do. They're here only as hints or reminders. If you are unsure
# consult the online docs. You have been warned.
#
# to be loaded here.
。。。。。。。
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule access_module modules/mod_access.so
LoadModule auth_module modules/mod_auth.so
LoadModule auth_anon_module modules/mod_auth_anon.so
LoadModule auth_dbm_module modules/mod_auth_dbm.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule log_forensic_module modules/mod_log_forensic.so
LoadModule env_module modules/mod_env.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule cern_meta_module modules/mod_cern_meta.so
LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
LoadModule unique_id_module modules/mod_unique_id.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule asis_module modules/mod_asis.so
LoadModule info_module modules/mod_info.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule imap_module modules/mod_imap.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule jk2_module modules/mod_jk2.so

# ls
highperformance.conf httpd.conf magic ssl.conf
highperformance-std.conf httpd-std.conf mime.types ssl-std.conf
# vi workers2.properties

#------start ---------
[shm]
file=/usr/local/apache/logs/shm.file
size=1048576
[channel.socket]
tomcatId=localhost:8009
[uri:/jsp-examples/*]
# --------end ------------
~
~
# cd /usr/local/tomcat/bin
# ./startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JAVA_HOME: /usr/java/jdk
# cd /usr/local/apache2/bin
# ./apachectl start
基于数据挖掘的音乐推荐系统设计与实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐与其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐与其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
MPU6050是一款广泛应用在无人机、机器人和运动设备中的六轴姿态传感器,它集成了三轴陀螺仪和三轴加速度计。这款传感器能够实时监测并提供设备的角速度和线性加速度数据,对于理解物体的动态运动状态至关重要。在Arduino平台上,通过特定的库文件可以方便地与MPU6050进行通信,获取并解析传感器数据。 `MPU6050.cpp`和`MPU6050.h`是Arduino库的关键组成部分。`MPU6050.h`是头文件,包含了定义传感器接口和函数声明。它定义了类`MPU6050`,该类包含了初始化传感器、读取数据等方法。例如,`begin()`函数用于设置传感器的工作模式和I2C地址,`getAcceleration()`和`getGyroscope()`则分别用于获取加速度和角速度数据。 在Arduino项目中,首先需要包含`MPU6050.h`头文件,然后创建`MPU6050`对象,并调用`begin()`函数初始化传感器。之后,可以通过循环调用`getAcceleration()`和`getGyroscope()`来不断更新传感器读数。为了处理这些原始数据,通常还需要进行校准和滤波,以消除噪声和漂移。 I2C通信协议是MPU6050与Arduino交互的基础,它是一种低引脚数的串行通信协议,允许多个设备共享一对数据线。Arduino板上的Wire库提供了I2C通信的底层支持,使得用户无需深入了解通信细节,就能方便地与MPU6050交互。 MPU6050传感器的数据包括加速度(X、Y、Z轴)和角速度(同样为X、Y、Z轴)。加速度数据可以用来计算物体的静态位置和动态运动,而角速度数据则能反映物体动的速度。结合这两个数据,可以进一步计算出物体的姿态(如角度和角速度变化)。 在嵌入式开发领域,特别是使用STM32微控制器时,也可以找到类似的库来驱动MPU6050。STM32通常具有更强大的处理能力和更多的GPIO口,可以实现更复杂的控制算法。然而,基本的传感器操作流程和数据处理原理与Arduino平台相似。 在实际应用中,除了基本的传感器读取,还可能涉及到温度补偿、低功耗模式设置、DMP(数字运动处理器)功能的利用等高级特性。DMP可以帮助处理传感器数据,实现更高级的运动估计,减轻主控制器的计算负担。 MPU6050是一个强大的六轴传感器,广泛应用于各种需要实时运动追踪的项目中。通过 Arduino 或 STM32 的库文件,开发者可以轻松地与传感器交互,获取并处理数据,实现各种创新应用。博客和其他开源资源是学习和解决问题的重要途径,通过这些资源,开发者可以获得关于MPU6050的详细信息和实践指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值