redhat自带apache2.0和tomcat4.1的安装

发表于:2007-06-08来源:作者:点击数: 标签:
最近给朋友装台webserver用到了apache+tomcat,使用了 linux 自带的apache,其间费了一些挫折,把这些写出来,供大家今后使用,希望能够节省大家的时间. 使用的组件: redhat9自带的apache2.0.40(也可以使用redhat8,他的apache也是2.0.40) httpd-2.0.40.tar.gz(使

最近给朋友装台web server用到了apache+tomcat,使用了linux自带的apache,其间费了一些挫折,把这些写出来,供大家今后使用,希望能够节省大家的时间.
 
使用的组件:
redhat 9自带的apache2.0.40(也可以使用redhat 8,他的apache也是2.0.40)
httpd-2.0.40.tar.gz (使用自带的apache,为什么还要他的原码呢?之后的操作中我告诉你他的用处)
j2sdk-1_4_1_04-linux-i586-rpm.bin(你也可以选用其他版本的JDK)
tomcat 4.1.24 (其中tomcat4.1.18我也调试了,都可以)
tomcat-connectors-4.1.24为了把apache和tomcat整合到一起需要的connector.(这里的整合其实就是用这个连接器把apache的一些请求重定向到tomcat)


使用自带apache的原因:
因为自带的apache的modules里面包括了基本所有流行的module,如果你下载原码自己编译的话,就要编译所有的module,不过如果其他的功能你不需要的话,也根本不用费那个劲.但我为了防止以后会用到别的module, 所以我选择使用系统自带的apache. 编译新的模块比较麻烦,所以建议大家业使用自带的apache.以下是系统apache所带的module,如果这些都自己编译,累不说,还不敢保证是对的.
mod_aclearcase/" target="_blank" >ccess.so
mod_actions.so
mod_alias.so
mod_asis.so
mod_auth_anon.so
mod_auth_dbm.so
mod_auth_digest.so
mod_auth.so
mod_autoindex.so
mod_cern_meta.so
mod_cgi.so
mod_dav_fs.so
mod_dav.so
mod_deflate.so
mod_dir.so
mod_env.so
mod_expires.so
mod_headers.so
mod_imap.so
mod_include.so
mod_info.so
mod_log_config.so
mod_mime_magic.so
mod_mime.so
mod_negotiation.so
mod_proxy_connect.so
mod_proxy_ftp.so
mod_proxy_http.so
mod_proxy.so
mod_rewrite.so
mod_setenvif.so
mod_speling.so
mod_status.so
mod_suexec.so
mod_unique_id.so
mod_userdir.so
mod_usertrack.so
mod_vhost_alias.so
mod_webapp.so      &这个就是需要自己编译的connector
整合apache+tomcat费劲就在于编译这个connector.
Apache没有把这个connetor ( mod_webapp.so   编译进去是因为他和使用的tomcat的版本相关,所以在不知道用户使用那个版本的情况下,不能加这个module.





其中的下载地址.(仅供参考)
http://apache.te8.com/dist/jakarta/tomcat-4/
tomcat-4.1.24.tar.gz        (这个解开包就可以直接运行,不用下载原码在自己编译,不然tomcat的编译也很麻烦)
http://apache.te8.com/dist/jakarta/tomcat-4/source/
在这里可以下载到 (这个是原码要自己编译)
tomcat-connectors-4.1.24-src.tar.gz

 也可以下载到4.1.18版本

http://apache.todayisp.com/httpd/old/
httpd-2.0.40.tar.gz                 

http://java.sun.com/j2se/1.4.1/download.html
j2sdk-1_4_1_04-linux-i586-rpm.bin

这些地址有的时候有问题,建议大家只要记住名字可以在北大的天网搜索,都可以找到而且速度一般都挺快的. http://e.pku.edu.cn/

过程:
1.先安装JDK
j2sdk-1_4_1_04-linux-i586-rpm.bin
是个可执行文件,安装没有难度,不提他
安装的目录是/usr/local/jdk1.4.1

2. 安装tomcat
下载的这个版本的解开后就可以执行.如果不能正常运行你在下载原码自己编译
不过我试了几个版本都可以.要运行tomcat之前要先完成3.设置系统的环境变量
为了使用tomcat的管理界面管理tomcat,你要修改 conf/tomcat-users.xml
添加
<role rolename="manager"/>
<role rolename="admin"/>
并给一个用户赋予这两个用户角色
<user username="both" password="tomcat" roles="admin,tomcat,role1,manager"/>
在其后的使用中你就可以用web界面管理tomcat了


#cd /opt
#tar –zxvf tomcat-4.1.24.tar.gz 
安装目录
/opt/jakarta-tomcat-4.1.24

3.设置系统的环境变量
编辑/etc/profile
PATH=$PATH:/opt/ jakarta-tomcat-4.1.24/bin: /usr/local/jdk1.4.1/bin
JAVA_HOME=/usr/local/jdk1.4.1
CATALINA_HOME=/opt/ jakarta-tomcat-4.1.18
export PATH JAVA_HOME CATALINA_HOME

4.找个没用的地方安装httpd-2.0.40.tar.gz
注释:必须用和系统相同的apache版本,不然会出问题。我最开始用了最新的apache2.0.47,结果编译后的mod_webapp.so不能使用,有不认识的符号。
我是把他装在/opt下面的
#cd /opt
#tar –zxvf httpd-2.0.40.tar.gz
#cd httpd-2.0.40
#./configure ./configure --prefix=/opt/apache40 --enable-module=so --enable-rule=SHARED_CORE
#make
#make install 

5. 编译connector (mod_webapp.so)
注释:编译2.0.40的connector不需要apr,编译1.x.x的版本的时候需要apr
我在安装apache+tomcat之前看到的很多文章说需要apr,但我做的时候确实没有用到
我编译了apache2.0.40 for 4.1.24 和4.1.18的connector都没有用到
但在编译apache1.3.38的connector时用到了apr.

#cd /opt
#tar –zxvf tomcat-connectors-4.1.24-src.tar.gz
#cd  jakarta-tomcat-connectors-4.1.24-src/webapp
# ./support/buildconf.sh 
#./configure --with-apxs=/opt/apache40/bin/apxs
因为系统却省的apache没有apxs.
哈哈,知道为什么系统有apache,还要编译安装个apache的原因了吧.
那么apxs是干什么的呢?看看www.apache.org上的解释
apxs is a tool for building and installing extension modules for the Apache HyperText Transfer Protocol (HTTP) server. This is achieved by building a dynamic shared object (DSO) from one or more source or object files which then can be loaded into the Apache server under runtime via the LoadModule directive from mod_so.
#make
#cd apache-2.0 
#cp mod_webapp.so /etc/httpd/modules/

===============================================================
好了,现在的所有的准备工作都做完了要测试了
编辑httpd.conf
vi /etc/httpd/conf/httpd.conf

LoadModule webapp_module modules/mod_webapp.so

仅此一条就够了,很多地方介绍的时候说
还要AddModule之类的是apache1.x.x中的做法,我开始的时候就按照别的介绍,加了一些别的语句都报错了,最好调好的系统中,调用mod_webapp.so就这么一句话。

为了测试还要在末尾添加
WebAppConnection warpConnection warp localhost:8008 
WebAppDeploy examples warpConnection /examples/ 
WebAppInfo /webapp-info


解释:在apache+tomcat的应用中,其实是把tomcat作为一个application server。apache把其中的一些请求转发给tomcat。所以apache和tomcat可以在不同的机器上。配置时只要你把localhost改成tomcat服务器的IP就可以了,其中的8008是标准的端口,完全可以在tomcat中重新设定。
WebAppDeploy examples warpConnection /examples/
这行是把tomcat中的examples连接到apache上来,也就是用户请求examples时,请求转发给tomcat.

编辑 tomcat的配置文件 server.xml 
去掉关于Tomcat-Apache 服务的那段注释,使connector生效
<!-- Define an Apache-Connector Service -->
 <Service name="Tomcat-Apache">
<!--     (这行删除)
   <Connector className="org.apache.catalina.connector.warp.WarpConnector"
    port="8008" minProcessors="5" maxProcessors="75"
    enableLookups="true" appBase="webapps"
    acceptCount="10" debug="0"/>

   <Engine className="org.apache.catalina.connector.warp.WarpEngine"
    name="Apache" debug="0">

     <Logger className="org.apache.catalina.logger.FileLogger"
             prefix="apache_log." suffix=".txt"
             timestamp="true"/>

     <Realm className="org.apache.catalina.realm.MemoryRealm" />

   </Engine>

 </Service>
-- >(这行删除)

把其中的Apache 给成可以连接tomcat的web server的IP地址,或主机名称,这里我是该成了localhost,因为是给本机的apache用的。


起动tomcat
#cd /opt/jakarta-tomcat-4.1.24/bin
#./startup.sh

Using CATALINA_BASE:   /opt/jakarta-tomcat-4.1.24
Using CATALINA_HOME:   /opt/jakarta-tomcat-4.1.24
Using CATALINA_TMPDIR: /opt/jakarta-tomcat-4.1.24/temp
Using JAVA_HOME:       /usr/local/jdk1.4.1

测试:
在IE浏览器中敲入http://x.x.x.x:8080 其中的x.x.x.x是你运行tomcat的机器
如果你可以看到tomcat的缺省web界面就对了

起动apache
#/etc/init.d/httpd start
Starting httpd:   OK  ]
在IE浏览器中敲入http://x.x.x.x 其中的x.x.x.x是你运行apache的机器
如果你可以看到apache的缺省web界面就对了
测试apache+tomcat的整合
在IE浏览器中敲入http://x.x.x.x/examples/ < -- 不要丢了/ 不然……

于是你就可以看到jsp 和 servlet的例子了。


其余的更多的使用配置,大家好好看文档吧。

如果其中有错误,请大家指出.调了很多次很多个,可能有记错的地方


     

 shuoshuo 回复于:2003-07-31 10:31:34
谢谢。正需要那。
现在问个问题,我在mod_webapp.so时候:
# ./support/buildconf.sh 提示
--- Checking "autoconf" version
autoconf not found.
autoconf version 2.52 or newer required to build from CVS.

我找了个2.52的autoconf  rpm包装上,仍然报此错误。

我的是redhat8 自带,其它东西完全同上面描述.

 shuoshuo 回复于:2003-07-31 11:21:47
问题解决,按楼主的步骤一步一步配置成功,感谢楼主分享。

那个问题偶修改buildconf.sh,有关检测autoconf的全部注释掉
最后使用autoconf的地方改为绝对路径。

总算过去了……

 peng 回复于:2003-07-31 12:15:35
Apache的编译:以下通用的编译选项能满足以后任意模块的安装:
./configure --prefix=/another_driver/apache/ --enable-shared=max --enable-module=most
比如:
./configure --prefix=/home/apache/ --enable-shared=max --enable-module=most


解释:
--prefix=/another_driver/apache/:建议将apache服务安装在另外一个驱动设备上的目的在于硬盘往往是一个系统使用寿命最低的设备,因此:将服务数据和系统完全分开,不仅能提高了数据的访问速度,更重要的,大大方便系统升级,应用备份和恢复过程。

--shared-module=max:使用动态加载方式载入子模块会带来5%的性能下降,但和带来的配置方便相比更本不算什么:比如模块升级方便,系统升级风险降低,安装过程标准化等

--enable-module=most:用most可以将一些不常用的module编译进来。

如果不想build so, 也可以这样:
./configure \
"--with-layout=Apache" \
"--prefix=/path/to/apache" \
"--disable-module=access" \
"--disable-module=actions" \
"--disable-module=autoindex" \
"--disable-module=env" \
"--disable-module=imap" \
"--disable-module=negotiation" \
"--disable-module=setenvif" \
"--disable-module=status" \
"--disable-module=userdir" \
"--disable-module=cgi" \
"--disable-module=include" \
"--disable-module=auth" \
"--disable-module=asis

原文转自:http://www.ltesting.net