您的位置:首页 > 运维架构 > Apache

apache/jboss整合

2012-03-12 00:15 211 查看
服务器linux 系统版本(32位系统): centos 5.3

mysql-5版本: mysql-5.1.38-linux-i686-icc-glibc23.tar.gz

apache版本: httpd-2.2.13.tar.gz

jboss版本:jboss4 版本 jboss-4.0.5.GA.zip

jdk版本 :1.5 版本 jdk-1_5_0_08-linux-i586-rpm.bin

apache 与 jboss集成,使用 jakarta-tomcat-connectors-jk-1.2.6-src.tar.gz

一.mysql安装

# groupadd mysql

# useradd -g mysql mysql

# tar zxvf mysql-5.1.38-linux-i686-icc-glibc23.tar.gz

# ln -s /usr/local/mysql-5.1.38-linux-i686-icc-glibc23 mysql

# cd /usr/local/mysql

# chown -R mysql .

# chgrp -R mysql .

# scripts/mysql_install_db --user=mysql

# chown -R root .

# chown -R mysql data

# vi /usr/local/mysql/support-files/my-medium.cnf

在后面加上

max_connections = 1500 /*为允许的最大连接数*/

log-slow-queries /*打开低速查询日志*/

long_query_time = 5 /*低速查询的秒数*/

# cp /usr/local/mysql/support-files/my-medium.cnf /usr/local/mysql/data/my.cnf

# /usr/local/mysql/bin/mysqld_safe --user=mysql --basedir=/usr/local/mysql &

# echo '/usr/local/mysql/bin/mysqld_safe --user=mysql --basedir=/usr/local/mysql &' >> /etc/rc.local /*添加到启动文件*/

让系统找到mysql(如果必要的话):

# PATH=$PATH:/usr/local/mysql/bin

# export PATH

# echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf

# ldconfig

继续配置 mysql,使其在系统启动时自动启动:

# cp support-files/mysql.server /etc/init.d/mysqld

# chkconfig --add mysqld

# service mysqld restart

# ./bin/mysqladmin -u root password new-password

二.jdk安装

# chmod +x jdk-1_5_0_08-linux-i586.bin

# ./jdk-1_5_0_08-linux-i586.bin

然后就会出现协议,问你同意否,yes继续安装......然后在所在目录下出现了一个jdk1.5.0_08 表示安装成功

设置环境变量

# vi .bash_profile

打开了一个文本,在文本最后加入如下代码

#set java environment

JAVA_HOME=/usr/java/jdk1.5.0_08

export JAVA_HOME

PATH=$PATH:$JAVA_HOME/bin

export PATH

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export CLASSPATH

保存后关闭文本编辑器执行以下命令使更改生效

# source .bash_profile

# echo $JAVA_HOME

如果显示"/usr/java/jdk1_5_0_08(上面设置的环境变量)"说明设置成功。到此jdk就O了

测试:

创建文件:Hello.java

vi Hello.java

添加一下内容:

public class Hello

{

public static void main (String[] args)

{

System.out.println("Hello,java");

}

}

在当前目录下终端输入:

[root@localhost jdk1.5.0_08]# java Hello

Hello,java

测试OK!

三.jboss安装

安装文件:jboss.4.0.5.GA.zip

进入安装文件所在目录 解压文件到当前目录

# unzip jboss-4.0.5.GA.zip

出现jboss-4.0.5.GA目录

设置环境变量

# vi /etc/profile

打开了一个文本,在文本最后加入如下代码

JBOSS_HOME=/usr/local/jboss-4.0.5.GA

export JBOSS_HOME

PATH=$PATH:$JBOSS_HOME/bin

export PATH

保存后关闭文本编辑器执行命令使更改生效

# source /etc/profile

# echo $JBOSS_HOME

如果显示"/usr/local/jboss-4.0.5.GA(上面设置的环境变量)"说明设置成功。

设置自动启动

# cp $JBOSS_HOME/bin/jboss_init_redhat.sh /etc/init.d/jboss

# vi /etc/init.d/jboss

如果想支持全部IP,可以在该文件一开始追加以下内容

JBOSS_HOST=${JBOSS_HOST:-"0.0.0.0"}

修改以下内容

18:JBOSS_HOME=${JBOSS_HOME:-"/usr/local/jboss-4.0.5.GA"}

21:JBOSS_USER=${JBOSS_USER:-"root"}

24:JAVAPTH=${JAVAPTH:-"/usr/java/jdk1.5.0_08/bin"}

保存退出 设置JBoss启动sh文件

设置启动脚步

# ln -s /etc/init.d/jboss_init_redhat.sh /etc/rc3.d/K20jboss_init_redhat

# ln -s /etc/init.d/jboss_init_redhat.sh /etc/rc3.d/S80jboss_init_redhat

# ln -s /etc/init.d/jboss_init_redhat.sh /etc/rc5.d/K20jboss_init_redhat

# ln -s /etc/init.d/jboss_init_redhat.sh /etc/rc5.d/S80jboss_init_redhat

设置运行权限

# chmod -f 777 /etc/init.d/jboss

# chmod -f 777 /etc/rc3.d/S80jboss_init_redhat

# chmod -Rf 777 $JBOSS_HOME

添加jboss用户并分配组

# useradd jboss

# usermod -G jboss,root jboss

到这jboss就能随系统一起启动了。在Linux关闭的时候,它是以Kill的形式关闭JBoss进程的,不是很安全。我们可以做以下设置,让Linux在关闭的时候安全的关闭JBoss

我们修改的仍然是</etc/init.d/jboss>文件。

为了不引起混乱,我用的仍然是修改以前的行号

1.在76和77行之间插入以下代码

if [ -f /var/lock/subsys/jboss ];then

echo "Running jboss"

else

2.在82和83行之间插入以下代码

echo "Starting jboss"

touch /var/lock/subsys/jboss

fi

3.在84和85行之间插入以下代码

if [ -f /var/lock/subsys/jboss ];then

4.在89和90行之间插入以下代码

echo "Stopping jboss"

rm /var/lock/subsys/jboss

else

echo "Not Running jboss"

fi

这样的话,关闭Linux的时候JBoss就可以安全的关闭了。

现在先手动启动jboss

# /usr/local/jboss-4.0.5.GA/bin/run.sh &

(因为配了"PATH"所以在哪个目录下都可以执行)。然后出现在了jboss的log信息

访问http://localhost:8080出现jboss页面,jboss看式O了

但你可以试一下http://你的ip地址:8080访问一下,或远程局域网其它机器访问。出现在404 问题又来了

问题:Redhat AS4服务器(多网卡)上安装Jboss 4.0.5 GA后,只能从本地地址localhost或127.0.0.1访问80或8080端口,也即http://127.0.0.1,而不能使用本机的公网地址访问

开始以为是防火墙的问题,修改了防火墙策略,还是不行。

用以下命令参看

# netstat –na|grep 8080

出现tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 发现绑定到127.0.0.1上:

因此应该是jboss启动时候绑定到了本地回路(Local Loopback )lo网卡上了

解决:修改$JBOSS_HOME/server/default/deploy/jbossweb-tomcat55.sar/server.xml,将

${jboss.bind.address}修改为0.0.0.0,允许从eth0,eth1,lo都能够访问jboss 8080端口

修改后访问http://你的ip地址:8080,jboss页面出来了! jboss到这才O了

四.apache2安装

# cd httpd-2.2.13

# ./configure --prefix=/usr/local/apache2 --enable-module=so --enable-module=ssl --enable-module=most --enable-rule=EAPI --enable-shared=max --enable-shared=ssl

# make

# make install

启动 apache

# /usr/local/apache2/bin/apachectl start

让 Apache 自动启动:

# echo "/usr/local/apache2/bin/apachectl start &" >> /etc/rc.local

五.linux下 jk方法实现apache+jboss连接

# tar xzvf jakarta-tomcat-connectors-1.2.6-src.tar.gz

# cd jakarta-tomcat-connectors-jk-1.2.6-src/jk/native

# ./buildconf.sh (若有问题,安装autoconf automake litool)

# ./configure --enable-jni --enable-EAPI --with-apxs=/usr/local/apache2/bin/apxs

# make

# cp ./apache-2.0/mod_jk.so /usr/local/apache2/modules/

配置

在/usr/local/apache2/conf/下面建立两个配置文件mod_jk.conf和workers.properties。

R 生成配置文件 mod_jk.conf

# vi mod_jk.conf

添加内容:

# 指出以下mod_jk模块工作所需要的工作文件workers.properties的位置

JkWorkersFile /usr/local/apache2/conf/workers.properties

# 指出 mod_jk 模块的日志输出位置

JkLogFile /usr/local/apache2/logs/mod_jk.log

# 设置 mod_jk 模块的日志级别 [debug/error/info]

JkLogLevel info

# 设置 mod_jk 模块的日志格式

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"

# 将所有对特定文件或目录的请求通过ajp13的协议送给JBoss,让JBoss服务器来处理

#(用于测试配置是否成功,配置成功后请注释)

JkMount /web-console/* worker1

# 将所有对后台(带有/xxxx目录)的请求通过ajp13的协议送给JBoss,让JBoss服务器来处理

JkMount /xxxx/* worker1

R 生成配置文件 workers.properties

# vi workers.properties

添加以下内容:

# 让 mod_jk 模块知道 Tomcat 在哪里

workers.tomcat_home=$JBOSS_HOME/server/all/deploy/jbossweb-tomcat55.sar

# 让 mod_jk 模块知道 JDK 在哪里

workers.java_home=$JAVA_HOME

ps=\

# Defining a worker named worker1 and of type ajp13

worker.list=worker1

# Set properties for worker1

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.socket_timeout=300

R 修改配置文件httpd.conf,作以下修改:

1. 将Listen 80 修改为 Listen 127.0.0.1:80

2. 将ServerName 修改为 ServerName LocalHost:80

3. 如果网页放在/var/www/html下,就需要修改DocumentRoot,具体根据实际情况来定,代码如下:

DocumentRoot "/var/www/html"

<Directory "/var/www/html">

Options Includes FollowSymLinks

AllowOverride None

Order deny,allow

Allow from all

XBitHack on

</Directory>

4. 增加关于加载mod_jk的语句,代码如下:

LoadModule jk_module modules/mod_jk.so

Include /usr/local/apache2/conf/mod_jk.conf

运行

启动JBoss,在$JBOSS_HOME/bin/目录下以sh run.sh -c all 命令启动JBoss服务器;

启运Apache,如果启动成功,说明对配置文件的修改没有问题;

打开IE浏览器,输入 http://localhost/web-console/,如果能看到JBoss的Administration Console页面,说明Apache与JBoss服务器整合成功了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: