发新话题
打印

[转载]apache+tomcat+jk2的安装笔记

[转载]apache+tomcat+jk2的安装笔记

文章作者:ghost

我最近重新装了装机器,把过程记了下来,相应的东西还算新。贴出来也许对一些同学有帮助,以后自己有需求找起来也方便。

假设你已经按支持DSO的模式安装了apache,没有的话参见xxbin的Linux安装调试笔记
有四个主要步骤
1.安装jdk
2.安装tomcat
3.编译安装连接器,这里是jk2
4.配置和测试

在java.sun.com下载j2sdk,目前是:
j2sdk-1_4_2_02-linux-i586.bin,这是一个for Linux的自解压文件,运行这个文件:

chmod +x j2sdk-1_4_2_02-linux-i586.bin
./j2sdk-1_4_2_02-linux-i586.bin

把解压后的目录拷贝到/usr/local下

cp -a j2sdk1.4.2_02 /usr/local

建立符号连接

ln -s /usr/local/j2sdk1.4.2_02 /usr/local/java

修改/etc/profile文件,添加

JAVA_HOME=/usr/local/java
export JAVA_HOME

http://jakarta.apache.org/site/binindex.cgi下载tomcat, 目前版本是tomcat-4.1.29.tar.gz,这个是二进制文件,解压后就可以用了

tar xzvf tomcat-4.1.29.tar.gz

将目录拷贝到/usr/local

cp -a jakarta-tomcat-4.1.29/ /usr/local

建立符号连接

ln -s /usr/local/jakarta-tomcat-4.1.29 /usr/local/tomcat

修改/etc/profile文件,添加

CATALINA_HOME=/usr/local/tomcat
export CATALINA_HOME

现在启动你的tomcat, 这里是用root来运行tomcat,你觉得可能有安全隐患的话,新建一个tomcat组和tomcat用户来运行。
/usr/local/tomcat/bin/startup.sh

添加用户是这样的

groupadd tomcat
useradd -g tomcat -c "Tomcat user" -d /usr/local/tomcat -s /sbin/nologin tomcat
chown -R tomcat:tomcat /usr/local/tomcat
passwd tomcat
su - tomcat -c /usr/local/tomcat/bin/startup.sh

我们还可以建立一个控制tomcat的脚本
复制内容到剪贴板
代码:
#!/bin/bash
#
# Startup script for Tomcat
#
# chkconfig: 345 84 16
# description: Tomcat jakarta JSP server

TOMCAT_HOME=/usr/local/tomcat
TOMCAT_START=$TOMCAT_HOME/bin/startup.sh
TOMCAT_STOP=$TOMCAT_HOME/bin/shutdown.sh

#Necessary environment variables
#export JAVA_HOME="/usr/local/java"
#export CATALINA_HOME="/usr/local/tomcat"
export LD_KERNEL_ASSUME="2.2.5"

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

#Check for tomcat script
if [ ! -f $TOMCAT_HOME/bin/catalina.sh ]
then
  echo "Tomcat not available..."
  exit
fi

start() {
  echo -n "Starting Tomcat: "
  $TOMCAT_START
  echo
  touch /var/lock/subsys/tomcatd
# We may need to sleep here so it will be up for apache
#  sleep 5
#Instead should check to see if apache is up by looking for http.pid
}

stop() {
  echo -n $"Shutting down Tomcat: "
  $TOMCAT_STOP
  rm -f /var/lock/subsys/tomcatd.pid
  echo
}

status() {
  ps ax --width=1000 | grep "[o]rg.apache.catalina.startup.Bootstrap start" | awk '{printf $1 " "}' | wc | awk '{print $2}' > /tmp/tomcat_process_count.txt
read line < /tmp/tomcat_process_count.txt
if [ $line -gt 0 ]; then
  echo -n "tomcatd ( pid "
  ps ax --width=1000 | grep "[o]rg.apache.catalina.startup.Bootstrap start" | awk &#39;{printf $1 " "}&#39;
  echo -n ") is running..."
else
  echo -n "Tomcat is stopped"
fi
}

case "$1" in
  start)
start;;
  stop)
stop;;
  restart)
stop
sleep 3
start;;
  status)
status;;
  *)
echo "Usage: tomcatd {start|stop|restart|status}"
  exit 1
esac
这个脚本保存为:/etc/rc.d/init.d/tomcatd

chmod +x /etc/rc.d/init.d/tomcatd

到现在,你的服务算是安装好了,可以使用
/etc/rc.d/init.d/tomcatd start
来启动服务,如果在启动tomcat时出现问题,请根据错误提示来解决问题。
使用chkconfig --add tomcatd建立tomcat的自启动
启动成功后,访问examples页面:
http://host.yourdomain:8080/examples
看见了example? 恭喜, 成功了一半了。

现在说说apache与tomcat的整合,那为什么要整合,直接使用tomcat不行么?
有几个理由:
性能:apache的性能明显高于tomcat,比tomcat迅速,更强壮。可以把图片、静态页面、flash、可以下载的文件等等放在apache的相应目录下,tomcat只用于处理jsp/servlet。
可扩展性:可以很容易的支持php、perl等等。
安全性:apache在处理socket通讯上,考虑了许多安全问题,比tomcat更加稳定。
负载均衡:使用jk2整合,连接多个tomcat实例,可以实现简单的负载均衡。
另外,使用8080端口访问,是不是看起来有点土?

我们这里使用的连接器(connector)为jk2,连接方式为socket, 没有使用JNI
下载jakarta-tomcat-connectors-jk2.0.2-src-current.tar.gz,这个是源文件,需要编译

tar xzvf jakarta-tomcat-connectors-jk2-src-current.tar.gz
cd jakarta-tomcat-connectors-jk2-2.0.2-src/jk/native2
chmod +x buildconf.sh
./buildconf.sh
./configure --with-apxs2=/usr/local/httpd/bin/apxs --with-apache2-lib=/usr/lib/httpd --with-tomcat41=/usr/local/tomcat
make

把编译好的模块拷贝到apache的目录下,权限应该是755,不是的话改一下

cp ../build/jk2/apache2/mod_jk2.so /usr/local/httpd/modules/

jk2与jk有很多共同点,但是配置完全不一样。jk2的配置文件主要是两个

$TOMCAT_HOME/conf/jk2.properties
$APACHE2_HOME/conf/workers2.properties

如果你是按照这个笔记安装的话,tomcat 和 apache的目录分别为/usr/local/tomcat /usr/local/httpd
jk2.properties可以使用默认配置,不用修改了,workers2.properties必须手工建立一个

vi /usr/local/httpd/conf/workers2.properties
内容如下:
复制内容到剪贴板
代码:
# Configuration file of JK2

# Define the communication channel
[channel.socket:localhost:8009]
info=Ajp13 forwarding over socket
tomcatId=localhost:8009

# Map the Tomcat examples webapp to the Web server uri space
[uri:/examples/*]
info=Map the whole webapp
现在,重新启动你的apache吧
/etc/rc.d/init.d/httpd restart
使用http://www.yourdomain/examples/ 测试一把
如果一切OK,应该与直接访问tomcat看见的examples相同。

你装个tomcat不是只想看看examples吧?现在建立我们自己的虚拟目录:
修改$TOMCAT_HOME/conf/server.xml, 找到<Context>这一节,添加以下内容
复制内容到剪贴板
代码:
<Context path="/jsp" docBase="/var/www/jsp" debug="0"
      reloadabel="true">
</Context>
path为虚拟目录, docBase是文件真正所在的目录。
修改$APACHE_HOME/conf/workers2.properties
添加几行:
复制内容到剪贴板
代码:
[uri:/jsp/*.jsp]
worker=ajp13:localhost:8009
重启tomcat和apache.
在/var/www/jsp/下创建一个文件:
vi hello.jsp
内容为
<%="Hello, world!"%>

现在在浏览器中输入:
http://www.youdomain/jsp/hello.jsp
看见了响亮的Hello world!了吗?
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

发新话题