论坛首页 Java企业应用论坛

Linux(ubuntu)下apache与tomcat的整合(最新版)

浏览 12826 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (2)
作者 正文
   发表时间:2010-04-09   最后修改:2010-04-09

(高手绕道)

 

目的是在 ubuntu 9.10 下安装 apache 2.2 +tomcat 6.0.20+jk 1.2.28.,当然在期间也复习了 linux下的基本命令,基本的 shell编程语句,如 :expr if while test 等 ,研究了下 tomcat的启动脚本。

 

一开始,肯定对 apache2一点也不熟悉,为了一次整合成功,做了很多的准备,包括看了很多的文章,就是没有看 apache的官网文档的,这是一个失误阿!

使用了 apt-get install apache2 .安装是成功了,但是不知道安装到那个目录下, google

下,通过如下方式找到 ubuntu下默认安装 apache2软件的路经 .

论坛指点:

默认安装路径如下:

/usr/bin /usr/lib /usr/share /usr/share/man

 

方法 1:在命令行输入: dpkg -L 软件包名;这里注意了软件包名,如 apache2软件包名为 apache2.(推荐这个方法)

方法 2:在 /var/cache/apt/archives找的你安装程序的包 ,然后用“ gdebi-gtk+软件包名”可以查看具体安装在什么位置。

 


 

 

 

参考: http://forum.ubuntu.org.cn/viewtopic.php?f=73&t=21990

 

默认安装后, apache2的路径非常乱,在本机电脑上安装路径如下:

/usr/

/usr/share/

/usr/share/doc

/usr/share/bug

/usr/share/apache2

 

太乱了,如是下手卸载,去 ubuntu software center 下载,结果 search一下,没有 apache。纳闷啊,我明明安装了,怎么在这里面没有了? Bug

另寻它法:(步骤如下)

1、 sudo apt-get remove apache2

2、 sudo apt-get remove apache2.2-common

3、 sudo apt-get autoremove (此命令会自动卸载 PHP)

卸载完成

成功卸载了吧?我这么想,去看看 /etc/目录下看看 ,apache2 在那里好好的,原来删除根本就不完全,

这样卸载软件,系统能用多久啊,

迟早一天硬盘会不够用的,系统运行速度会变慢的!于是 rm掉。

 

===========================================

至此, ubuntu默认安装默认卸载结束。重新到官网去下载 apache2.2 。根据 document安装

===========================================

另外记录一下启动 apache2 出现的错误以及解决办法:

 

 

 

 

1.Apache Address already in use: make_sock: could not bind to port 80 error and solution

 

First make sure port 80/443 is not used by any other service or application with netstat command:

# netstat -tulpn| grep :80

If port 80 is bind to httpd, kill all process:

# killall -r httpd

Now start the httpd:

# /etc/init.d/httpd start

Also make sure you are root while starting the httpd.

(后来这个很有用!)

 

 

另外参考:

===============================================

 

 

去官网下了这个: Unix Source: httpd-2.2.15.tar.gz

(虽然 apache 2.3.5-alpha 已经出来了)

 

安装步骤:


 

Download     $ lynx http://httpd.apache.org/download.cgi
Extract         $ gzip -d httpd- NN .tar.gz
                    $ tar xvf httpd- NN .tar
                    $ cd httpd- NN Configure
                    $./configure --prefix= PREFIX
Compile        $ make
Install            $ make install
Customize     $ vi PREFIX /conf/httpd.conf
Test              $ PREFIX /bin/apachectl -k start
 

------------------------------------------------------------------------------------

说下需要注意的地方,在 ./configure这一步的时候,注意 PREFIX是你新建的目录下。比如 :apache2。

PS:这个过程是从原代码编译开始到安装。整个过程的时间很长,请耐心等待。

 

安装成功。

 

=======================================


 2. 在 index.html中添加中文,出现中文乱码,

解决方法一:

 <meta http-equiv="Content-Language" content="zh-cn">;

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">; 

 

解决的方法之二 :

 

直接在httpd.conf配置文件中将

AddDefaultCharset ISO-8859-1 改为 AddDefaultCharset GB2312 .ZH-CN .zh-cn

上网有上面这种方法,

但是我的apache 2.2.15里没有这个httpd.conf文件,应该是版本不同吧。至此,已经告一段落。

 

 

=============================================

 


配置mod_jk

mod_jk requires two entities:

mod_jk.xxx - The Apache module, depending on your operating system, it will be mod_jk.so, mod_jk.nlm or or MOD_JK.SRVPGM (see the build section).

workers.properties - A file that describes the host(s) and port(s) used by the workers (Tomcat processes). A sample workers.properties can be found under the conf directory in the source download.

 

配置mod_jk在官网文档里面关于“auto-configure”有如下说法:

Using Tomcat auto-configure

 

The auto-configure works only for a single Tomcat running on the same machine where Apache (httpd) is running. The simplest way to configure Apache to use mod_jk is to turn on the Apache auto-configure setting in Tomcat and put the following include directive at the end of your Apache httpd.conf file (make sure you replace $TOMCAT_HOME with the correct path for your Tomcat installation:

   #To be added at the end of your httpd.conf

    Include $TOMCAT_HOME/conf/jk/mod_jk.conf-auto

Note: this file may also be generated as $TOMCAT_HOME/conf/auto/mod_jk.conf

This will tell Apache to use directives in the mod_jk.conf-auto file in the Apache configuration. This file is created by enabling the Apache auto-configuration by creating your workers.properties file at $TOMCAT_HOME/conf/jk/workers.properties and adding the listener to the Engine element in the server.xml file as per the following example. Please note that this example is specific to Tomcat 5.x, unlike other sections of this document which also apply to previous Tomcat branches.

  ...

  <Engine ...>

    ...

    <Listener className="org.apache.jk.config.ApacheConfig" modJk="/path/to/mod_jk.so" />

    ...

  </Engine>

  ...

Then restart Tomcat and mod_jk.conf should be generated. For more information on this topic, please refer to the API documentation at the Tomcat docs website .

 


大概的意思,就是说,tomcat提供了一个功能,只要你做好如下操作,就能自动生成mod_jk的配置文件,很方便的完成配置:
1,指定worker.properties为:“$TOMCAT_HOME/conf/jk/workers.properties”
2,在监听器Listener中配置属性“modJk”,即指定mod_jk.so的路径。

两步过后,重新启动tomcat,$TOMCAT_HOME的目录下自动生成如下目录以及文件:conf/jk/mod_jk.conf-auto

mod_jk.conf-auto文件内容就是我们在httpd.conf中配置mod_jk的内容。但是自动生成的内容总存在缺点
如下是自动生成的配置文件(mod_jk.conf-auto

 

 

########## Auto generated on Thu Apr 01 23:42:51 CST 2010##########


<IfModule !mod_jk.c>


LoadModule jk_module "/opt/apache2/modules/mod_jk.so"


</IfModule>


JkWorkersFile "/opt/apache-tomcat-6.0.20/conf/jk/workers.properties"


JkLogFile "/opt/apache-tomcat-6.0.20/logs/mod_jk.log"


JkLogLevel emerg


#Where to put jk shared memory


JkShmFile /var/log/httpd/mod_jk.shm


<VirtualHost localhost>


ServerName localhost


JkMount /manager ajp13


JkMount /manager/* ajp13



JkMount /bio ajp13


JkMount /bio/* ajp13


JkMount /docs ajp13


JkMount /docs/* ajp13


JkMount /examples ajp13


JkMount /examples/* ajp13


JkMount /host-manager ajp13


JkMount /host-manager/* ajp13


</VirtualHost> 
 

 

这个没仔细研究了,但是我通过上次的操作,重新启动 tomcat 和 apache2 , 访问 http://localhost/examples/index.html 出现了 internal error. 系统日志报 505 错误。提示:没指定 JkShmFile 文件。

 

 

============================================================

经过上面的一番折腾,让我明白了mod_jk
整个配置过程.
1,配置httpd.conf,主要是为了加载module.

LoadModule
jk_module modules/mod_jk.so(事先将mod_jk.so放置在modules目录下)
如果加载了module,就会执行<IfModule jk_module >...</IfModule>中相关worker,以及worker处理的url,并使其生效.
2.而在<IfModule jk_module>...</IfModule>配置workers.properties,等其他文件,
或者配置额外的urlworkmap文件,如下面的uriworkermap.properties

或者直接在httpd.conf文件中配置相关的urlworkmap.

 

 #We need a workers file exactly once


#and in the global server


JkWorkersFile conf/workers.properties



#Our JK error log


#You can (and should) use rotatelogs here


JkLogFile logs/mod_jk.log



#Our JK log level (trace,debug,info,warn,error)


JkLogLevel info


#Our JK shared memory file


JkShmFile logs/mod_jk.shm


#If you want to put all mounts into an external file


#that gets reloaded automatically after changes


#(with a default latency of 1 minute),


#you can define the name of the file here.


JkMountFile conf/extra/uriworkermap.properties
 

或者不用外部文件,而如下配置:

 

 

 #Example for Mounting a context to the worker "balancer"


#The URL syntax "a|b" instantiates two mounts at once,


#the first one is "a", the second one is "ab".


#JkMount /myapp|/* balancer 

.....
 

。。。

 

3 ,如有需要: uriworkermap.properties 的配置,这个很简单,如下:

 

 

#This file provides sample mappings for example wlb


#worker defined in workermap.properties.minimal


#The general syntax for this file is:


#[URL]=[Worker name]



/admin/*=wlb


/manager/*=wlb


/jsp-examples/*=wlb


/servlets-examples/*=wlb


/examples/*=wlb 

 

 

 

以上的配置文件信息来自于从官网下载的 source.tar.gz 包中的 cong 目录的几个相关的配置文件实例。

 

 

在下载 mod_jk.so 这个二进制文件时,需要注意了,注意自己系统支持的体系结构,就 jk-1.2.28

 

binary 版本下载而言,提供了适合在 i586 以及 x86_64. 我们普通的 PC 一般是 i386, 应该下载 i586, 至少不能下 64 位的版本哦。

 

 

i586,i386 的区别以及相似的地方参看:

http://blog.csdn.net/BSKnight/archive/2009/12/30/5108821.aspx

 

 

-------------------------------------------============

经过上面的 N 次折腾,总算把 apache + tomcat 等基本的安装,配置过程有了清楚的理解。写下此篇文章,以后参考。如果给新手一些帮助,那就十分高兴。

 

 

 

 

   发表时间:2010-04-09  
正好在用debian下来测试整合apache和tomcat,刚好用的!

linux下和windows下,差异还是有点大啊!
0 请登录后投票
   发表时间:2010-04-09  
能排版一下就好了,收藏一下。
0 请登录后投票
   发表时间:2010-04-09  
软件的路径,可以在新力得的详细信息中查看,里面有所有的路径信息

我的一点心得
tomcat的启动,我没有整合apache,我直接启动的tomcat/bin/startup.sh
这里需要把startup.sh,catalina.sh,setclasses.sh都设置为可执行,否则运行startup.sh无反应!
0 请登录后投票
   发表时间:2010-04-09  
skzr.org 写道
软件的路径,可以在新力得的详细信息中查看,里面有所有的路径信息

好久没使用新力得软件,而是使用ubuntu software center 。

引用
我的一点心得
tomcat的启动,我没有整合apache,我直接启动的tomcat/bin/startup.sh
这里需要把startup.sh,catalina.sh,setclasses.sh都设置为可执行,否则运行startup.sh无反应!


这个问题我也遇到过,不过是在去客服部署项目时遇到的。

chmod -R o+x ....
0 请登录后投票
   发表时间:2010-04-09  
觉得你还是不太会使用ub.
都是中M$毒太深了吧。

现在都不使用Apache了,使用nginx
0 请登录后投票
   发表时间:2010-04-10  
apache过时啦~~
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics