首页 > 学技术 > 技术网文 > Web服务器 > 正文

[精彩] [整合] APACHE2.2.0+tomcat5.5.12+jk1.2.15整和


来源 chinaunix.net 酷勤网整理

APACHE2.2.0+tomcat5.5.12+jk1.2.15
 

软件环境:
        apache httpd-2.2.0.tar.gz
          apr-1.2.2.tar.tar
          apr-util-1.2.2.tar.tar
          jdk-1_5_0_05-linux-i586.bin
          jakarta-tomcat-connectors-1.2.15-src.tar.gz
       apache-tomcat-5.5.12.tar.gz

软件说明:apache2.2.0是目前较新的版本。和apache2.0版本比较,它首先需要安装   apr-1.2.2.tar.tar和 apr-util-1.2.2.tar.tar
才能正常的运行。安装之前解压软件包。进入源代码包,先阅读,readme.txt,里面有安装说明。
安装:apr-1.2.2和apr-util-1.2.2
 # Build and install apr 1.2
cd srclib/apr
./configure --prefix=/usr/local/apr-httpd/
make
make install

# Build and install apr-util 1.2
cd ../apr-util
./configure --prefix=/usr/local/apr-util-httpd/ --with-apr=/usr/local/apr-httpd/
make
make install

# Configure httpd
cd ../../
./configure --with-apr=/usr/local/apr-httpd/ --with-apr-util=/usr/local/apr-util-httpd/


二.apache安装
1../configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-so
#make 
#make install

2.查看编译进apache的模块:
[root@localhost root]#cd /usr/local/httpd2/bin

[root@localhost bin]# httpd -l
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c

(说明:看到mod_so.c这个模块,就说明能支持DSO。)





3.在配置文件中加入要监听的ip和端口。
#cd /usr/local/apache2/conf
#vi httpd.conf
     32 # Listen: Allows you to bind Apache to specific IP addresses and/or
     33 # ports, instead of the default. See also the <VirtualHost>
     34 # directive.
     35 #
     36 # Change this to Listen on specific IP addresses as shown below to
     37 # prevent Apache from glomming onto all bound IP addresses.
     38 #
     39 #Listen 12.34.56.78:80
     40 Listen 192.168.10.2:80(这就是我们要加入的内容)
     41

4.测试apache
#cd /usr/local/apache2/bin
#./apachectl start

现在在ie里输入ip就可以显示apache默认的主页了。



三.
1.装jdk
 [root@localhost home]# ./jdk-1_5_0_05-linux-i586.bin 
生成目录:jdk1.5.0_05 
在/usr/创建目录,java
将该文件移动到/usr/local/java 目录下
 测试java环境是否建立:
[root@host1 jdk1.5.0_05]# ls
bin  COPYRIGHT  demo  include  jre  lib  LICENSE  man  README.html  sample  src.zip  
[root@localhost bin]# ./java –version
[root@host1 bin]# ./java -version
java version "1.5.0_05"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_05-b05)
Java HotSpot(TM) Client VM (build 1.5.0_05-b05, mixed mode)

显示版本,说明java环境建立成功!
(注意:tomcat5.5的必须有jdk1.5这个版本支持)

四.安装tomcat
1.[root@localhost root]#tar zxvf jakarta-tomcat-5.1.12.tar.gz /home (指定安装到/home目录下)
[root@localhost root]#mv jakarta-tomcat-5.1.12 tomcat (换个文件名)
启动关闭服务文件放在  /home/tomcat/bin
  配置文件              /home/tomcat/conf 
  web文件              /home/tomcat/webapps
  默认访问目录         /home/tomcat/webapps/ROOT
                     

2.设置环境变量,
在/etc/profile中末尾加入:
export JAVA_HOME=/home/jdk1.5.0_05
export TOMCAT_HOME=/home/tomcat
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

3.启动与关闭服务:
#cd /home/tomcat/bin 
#./startup.sh   (关闭服务:#./shutdown.sh)


5.测试:http://192.168.10.2:8080/

(注:ROOT目录下面必须有WEB-INF这个目录,否则将无法访问该页面。
该目录下有两个文件:lib  web.xml
这是web.xml的内容:
[root@host1 WEB-INF]# vi web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
  <display-name>Web Application</display-name>
  <description>Uniprint</description>

</web-app>
~
Lib下的文件:
[root@host1 WEB-INF]# cd lib
[root@host1 lib]# ls
activation.jar           commons-digester.jar    commons-pool.jar       jdbc2_0-stdext.jar     mail.jar
commons-beanutils.jar    commons-fileupload.jar  commons-services.jar   jdbc7.1-1.3.jar        servlet.jar
commons-collections.jar  commons-lang.jar        commons-validator.jar  jdom.jar               taglibs-i18n.jar
commons-dbcp.jar         commons-logging.jar     jcommon-0.9.5.jar      jfreechart-0.9.20.jar




五.安装jakarta-tomcat-connectors-1.2.15-src,生成mod_jk.so文件。

1.安装jakarta-tomcat-connectors-1.2.15-src.tar.gz
参考文档:http://www.redflag-linux.com/phorumredflag/phorumredflag/read.php?15,100143
进行安装,具体过程如下:
root@localhost native]#tar zxvf jakarta-tomcat-connectors-1.2.15-src.tar.gz
生成原文件: jakarta-tomcat-connectors-1.2.15-src
[root@localhost home]# cd jakarta-tomcat-connectors-1.2.15-src 
[root@localhost jakarta-tomcat-connectors-1.2.15-src]#
[root@localhost jakarta-tomcat-connectors-1.2.15-src]# cd jk
[root@localhost jk]# cd native
 
root@localhost native]#./configure --with-apxs=/usr/local/apache2/bin/apxs
[root@localhost native]#make 
[root@localhost native]#make  install
[root@localhost native]#cd apache-2.0/ 
[root@localhost apache-2.0]#ls             
mod_jk.so 

(mod_jk.so会自动被复制到 /usr/local/apache2/modules目录下)


                      

六.整和apache与tomcat(具体参考apache的官方网站)

编辑apache的配置文件/etc/httpd/conf/httpd.conf,在文件末尾添加如下内容: 
 
#ad mod_jk module
LoadModule jk_module modules/mod_jk.so
# Update this path to match your modules location
# Where to find workers.properties
# Update this path to match your conf directory location (put workers.properties next to httpd.conf)
  JkWorkersFile /usr/local/apache2/workers.properties
# Where to put jk logs
# Update this path to match your logs directory location (put mod_jk.log next to access_log)
  JkLogFile     /usr/local/apache2/mod_jk.log
# Set the jk log level [debug/error/info]
  JkLogLevel    info
# Select the log format
  JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
  JkOptions     +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
  JkRequestLogFormat     "%w %V %T"
# Send everything for context /examples to worker named worker1 (ajp13)
  JkMount  /*.jsp worker1

新建此文件/etc/httpd/conf/workers.properties 添加如下内容:
# Define 1 real worker using ajp13
  worker.list=worker1
  # Set properties for worker1 (ajp13)
  worker.worker1.type=ajp13
  worker.worker1.host=localhost
  worker.worker1.port=8009
  worker.worker1.lbfactor=50
  worker.worker1.cachesize=10
  worker.worker1.cache_timeout=600
  worker.worker1.socket_keepalive=1
  worker.worker1.reclycle_timeout=300

七.建立基于name的虚拟主机:
对httpd.conf进行一些设置:
1.注释以下三行:
#ServerAdmin
 #ServerName
#DocumentRoot
2.指定要访问站点的主目录(主目录下面放的是我们建立虚拟站点的子目录,我们的站点目录都放在/var/www下,这一步很重要)
  具体设置:
    179 <Directory "/var/www">
    180     #
    181     # Possible values for the Options directive are "None", "All",
    182     # or any combination of:
    183     #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    184     #
    185     # Note that "MultiViews" must be named *explicitly* --- "Options All"
    186     # doesn't give it to you.
    187     #
    188     # The Options directive is both complicated and important.  Please see
    189     # http://httpd.apache.org/docs/2.2/mod/core.html#options
    190     # for more information.
    191     #
    192     #  Options Indexes FollowSymLinks
    193 
    194     #
    195     # AllowOverride controls what directives may be placed in .htaccess files.
    196     # It can be "All", "None", or any combination of the keywords:
    197     #   Options FileInfo AuthConfig Limit
    198     #
    199      AllowOverride None
    200 
    201     #
    202     # Controls who can get stuff from this server.
    203     #
    204      Order allow,deny
    205      Allow from all
    206 
    207 </Directory>
    208
3.指定虚拟主机配置文件
  440 #Virtual hosts
  441 #Include conf/extra/httpd-vhosts.conf
将441行的注释去掉,就可以拉。
4.进入/conf/extra
[root@host1 extra]#vi httpd-vhosts.conf
(释掉原来的example(我是这么做的)
参照example我们就可以添加vhosts了。)



以下是我添加:


NameVirtualHost 192.168.10.2:80
<VirtualHost 192.168.10.2:80>
<Directory "/var/www/lazy1">
DirectoryIndex index.htm index.html index.jsp
</Directory>
    ServerAdmin [email]lazy_bug@126.com[/email]
    DocumentRoot /var/www/lazy1
    ServerName lazy1.bug.com
    ServerAlias html
    ErrorLog logs/ lazy1.bug.com-error_log
    CustomLog logs/lazy1.bug.com--access_log common
</VirtualHost>

<VirtualHost 192.168.10.2:80>
<Directory "/var/www/lazy2" >
DirectoryIndex index.htm index.html index.jsp
</Directory>

    ServerAdmin  [email]lazy_bug@126.com[/email]
    DocumentRoot /var/www/lazy2
    ServerName lazy2.bug.com
    ServerAlias unisis
    ErrorLog logs/lazy2.bug.com-error_log
    CustomLog logs/lazy2.bug.com-access_log common
</VirtualHost>


   
测试虚拟主机配置是否生效:
#cd /usr/local/apache2/bin
[root@host1 bin]# ./httpd -S
VirtualHost configuration:
Syntax OK
(说明配置没有问题)

将我们的站点的web文件,放到上面所设置的目录下,启动apache和tomcat,
在ie里输入我们要访问的域名,也就是我们上面设置的Servername。


            

说明:测试机器没有做dns,域名解析是通过在测试机和客户机的hosts文件内加入域名和ip对应内容来实现的。


现在可以做多个虚拟机.挂多个jsp或html站点了!!呵呵

[ 本帖最后由 HonestQiao 于 2005-12-16 09:11 编辑 ]



 viral 回复于:2005-12-16 23:43:40

好贴子,刚装完4.18的TOMCAT,又要升级了,呵呵


 Kenbaby 回复于:2005-12-17 12:41:12

我只能说很搞笑,难道楼主不知道2.2.0里面最大的变化就是增加了proxy-ajp专门供tomcat使用么?


 lazy_bug 回复于:2005-12-17 14:08:43

引用:原帖由 Kenbaby 于 2005-12-17 12:41 发表
我只能说很搞笑,难道楼主不知道2.2.0里面最大的变化就是增加了proxy-ajp专门供tomcat使用么? 




测试中........... 论坛里有这么一篇文章,很不错的,可是小弟是个菜鸟对proxy-模块不理解,在学习中,
如果楼上的能写出篇具体点的,小菜我感激啊!!大家也感激啊!!

[ 本帖最后由 lazy_bug 于 2005-12-17 14:13 编辑 ]


 Kenbaby 回复于:2005-12-18 13:24:13

Very simple,仅仅三行配置,搞定二者的整合,我好像记得之前已经有人写了怎么配置的帖子了。

http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html

The AJP proxy is a new module based on the standard Http proxy it uses AJP instead of HTTP.

<Location /examples/>
   ProxyPass ajp://localhost:8009/examples/
</Location>

----------------------------------------------------
而且可以很轻易的进行负载均衡,简直TMD很完美,squid到底还有用武之地?
AJP proxy and proxy balancer

    It is possible to use the load balancer of the mod_proxy_balancer module.

    <Proxy balancer://myCluster>
       BalancerMember ajp://localhost:8009
       BalancerMember ajp://example.org:8009
    </Proxy>
    <Location /examples/>
        ProxyPass balancer://myCluster/examples/
    </Location>


 jeffyan 回复于:2005-12-20 17:11:31

引用:原帖由 Kenbaby 于 2005-12-18 13:24 发表
Very simple,仅仅三行配置,搞定二者的整合,我好像记得之前已经有人写了怎么配置的帖子了。

http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html

The AJP proxy is a new module based o ... 





squid 还有更大的用途,就是做cache ,应用不同


 菲平 回复于:2005-12-23 11:11:53

引用:原帖由 Kenbaby 于 2005-12-18 13:24 发表
Very simple,仅仅三行配置,搞定二者的整合,我好像记得之前已经有人写了怎么配置的帖子了。

http://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html

The AJP proxy is a new module based o ... 




有了这个坚决决定用2。2了


 jsean 回复于:2005-12-24 13:29:51

顶!好贴。
看样子我也要用2.2了


 loveKDE 回复于:2005-12-24 19:53:18

squid的机器要求好高哦.做缓存的话.


 Kenbaby 回复于:2005-12-31 12:02:02

引用:原帖由 jeffyan 于 2005-12-20 17:11 发表




squid 还有更大的用途,就是做cache ,应用不同 



那么我想,你肯定还没用过apache2.2.0的proxy和cache结合

Sample httpd.conf

#
# Sample Cache Configuration
#

<IfModule mod_cache.c>
<IfModule mod_disk_cache.c>
CacheRoot /usr/local/httpd/cache
CacheEnable disk /
CacheDirLevels 5
CacheDirLength 3
</IfModule>

<IfModule mod_mem_cache.c>
CacheEnable mem /
MCacheSize 4096
MCacheMaxObjectCount 100
MCacheMinObjectSize 1
MCacheMaxObjectSize 2048
</IfModule>

# When acting as a proxy, don't cache the list of security updates
CacheDisable http://security.update.server/update-list/
</IfModule>



bultiin




 nbm0 回复于:2005-12-31 16:04:44

顶!


 无心细语 回复于:2006-01-04 14:59:08

谢谢楼主~!
辛苦啦~!


 caojiqun 回复于:2006-01-04 19:15:17

LZ确实辛苦了!
看了这个帖子试着安装apache 2.2.0 (Solaris Sparc 9), 安装apr和apr-util这两步似乎没必要,没做。
另外,用proxy-ajp整合Tomcat真是简单,建议大家都忘掉jk或jk2吧!!!
还有一点就是一定要用GNU sed而不能用系统自带的,可能这一点对linux系统不是问题。


 jhsea3do 回复于:2006-01-04 19:38:34

引用:还有一点就是一定要用GNU sed而不能用系统自带的.... 


你是说在win32下编译吧

我已经开始学习使用了2.2了....


 caojiqun 回复于:2006-01-04 20:06:06

引用:原帖由 jhsea3do 于 2006-1-4 19:38 发表


你是说在win32下编译吧

我已经开始学习使用了2.2了.... 


win32有sed吗?!
不好意思,我还真不知道怎么在win32下编译。


 jhsea3do 回复于:2006-01-04 22:27:59

呵呵,我到没注意看你说的是solaris

我在win32下编译过一次, 那次主要是为了编译mod_ssl和mod_python

用的是msvc60,一切都按照manual中的说明操作的,不过前面我说话的时候我的确说错了,替换的是awk.exe, 而不是sed.exe


 maquanjun 回复于:2006-01-05 13:12:26

apache的cache和proxy的mod很早就有,就是性能不如squid
2.2.0的性能有很大改变吗?能不能提供点资料?

引用:原帖由 Kenbaby 于 2005-12-31 12:02 发表


那么我想,你肯定还没用过apache2.2.0的proxy和cache结合

Sample httpd.conf

#
# Sample Cache Configuration
#

<IfModule mod_cache.c>
<IfModule mod_disk_cache.c>
CacheRoot /u ... 




 jato 回复于:2006-03-16 12:31:24

引用:原帖由 caojiqun 于 2006-1-4 19:15 发表
LZ确实辛苦了!
看了这个帖子试着安装apache 2.2.0 (Solaris Sparc 9), 安装apr和apr-util这两步似乎没必要,没做。
另外,用proxy-ajp整合Tomcat真是简单,建议大家都忘掉jk或jk2吧!!!
还有一点就是一定要用GN ... 


安装apr和apr-util是没有必要, apache 2.2.0 源码包里面带有 apr 和 apr-util
在linux上 sed 不是问题 :)


 mageguoshi 回复于:2006-03-16 14:28:46

引用:原帖由 Kenbaby 于 2005-12-17 12:41 发表
我只能说很搞笑,难道楼主不知道2.2.0里面最大的变化就是增加了proxy-ajp专门供tomcat使用么? 



似乎proxy-ajp不支持通配符。假如我要把某个目录下的 *.jsp,*.jsps 等等交给tomcat解析,而apache本身负责解析静态页面,请问改如何配置?


 qmailer 回复于:2006-03-16 22:30:01

引用:原帖由 Kenbaby 于 2005-12-17 12:41 发表
我只能说很搞笑,难道楼主不知道2.2.0里面最大的变化就是增加了proxy-ajp专门供tomcat使用么? 


具体说一下......


 Ahdong 回复于:2006-03-19 10:30:08

收到,但是APACHE2.2的虚拟主机还是不能正常使用。望指教~~


 lazy_bug 回复于:2006-03-20 13:39:45

apache22虚拟机配置文件是独立出来的,防在 extral 目录下, 你先把httpd.conf里起用虚拟机那行的注释去掉,具体是那行,我的文档中写了。有什么问题大家在交流交流,大家的环境不一样,文档只能做为参考。


 qmailer 回复于:2006-03-20 14:22:11

引用:另外,用proxy-ajp整合Tomcat真是简单,建议大家都忘掉jk或jk2吧!!!

[color=Red]这是个什么东东?[/color]


 lazy_bug 回复于:2006-03-20 16:29:14

引用:原帖由 qmailer 于 2006-3-20 14:22 发表

[color=Red]这是个什么东东?[/color] 




:lol::em02::em11:

是啊 偶也不用这个拉,偶是看着潭子里的前辈们的帖子入的门,自己整和了点东东,本来也没必要发的,只是觉的拿论坛里的好东东太多拉,自己又没什么东西可以拿出来的,所以,把这个东东贴出来了,呵呵!!

当然 高手们不用看,呵呵! 浪费哥们时间了,不好意思!!


 jp1234 回复于:2006-04-03 15:10:55

如果使用代理模块 ,是否 就是所有的请求apache都会给tomcat ,这种情况下php程序(如论坛等)能工作正常吗?


 thesecondbull 回复于:2006-04-05 23:13:19

楼住,我按你上面说的配了,但是:
[root@hxsms bin]# ./httpd -S
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
VirtualHost configuration:
127.0.0.1:80           is a NameVirtualHost
         default server sms.cityyouth.cn (/usr/local/apache2/conf/extra/httpd-vhosts.conf:2)
         port 80 namevhost sms.cityyouth.cn (/usr/local/apache2/conf/extra/httpd-vhosts.conf:2)
Syntax OK
然后启动的时候:
[root@hxsms bin]# apachectl start
Syntax error on line 1041 of /etc/httpd/conf/httpd.conf:
Cannot load /etc/httpd/modules/mod_jk.so into server: /etc/httpd/modules/mod_jk.so: cannot open shared object file: No such file or directory

我很奇怪了,你上面说道要在/etc/httpd/conf/httpd.conf里写 “LoadModule jk_module modules/mod_jk.so”
但是,你在生成了mod_jk的时候又要: “(mod_jk.so会自动被复制到 /usr/local/apache2/modules目录下)”
这好象是矛盾的吧????
还有“新建此文件/etc/httpd/conf/workers.properties 添加如下内容:......”
然后/etc/httpd/conf/httpd.conf里面又加了:JkWorkersFile /usr/local/apache2/workers.properties 
我不知道楼住是怎么就配置成功了,这里只是我的一点疑问????

[ 本帖最后由 thesecondbull 于 2006-4-5 23:20 编辑 ]


 lazy_bug 回复于:2006-04-11 14:13:36

只能部分参考,当时都是东看西看的,然后自己在机器上测试出来的, 因为本人也是菜鸟!!
贴,, 只能参考,参看,英文好的话,建议去看英文文档案,有时间我在继续测试!!
有错误的地方大家指出!! 非常感谢!!


 xxjoyjn 回复于:2006-06-15 15:56:43

LZ得这个帖子确实不错,支持一下!




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=669895
转载请注明作者名及原文出处



收藏本页到: