天天看点

linux 结束8080端口,记Tomcat在Linux环境下开机启动无法监听8080端口

这个问题在百度搜了下无解,答案基本全篇一律,经过不停的实验,发现了原因。

首先,Linux在启动过程中是没有shell环境的,启动脚本需要加上PATH等基本的黄金变量。

需要的环境变量包括:JAVA_HOME,CLASSPATH,PATH,CATALINA_HOME,CATALINA_BASE

这几个环境变量加入了,基本就可以启动了。

如下,编辑/etc/rc.local:

export JAVA_HOME=/usr/local/java

export PATH=/usr/local/java/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin

export CLASSPATH=/usr/local/java/jre/lib/ext:/usr/local/java/lib/tools.jar:.

export CATALINA_BASE=/usr/local/tomcat

export CATALINA_HOME=/usr/local/tomcat

/usr/local/tomcat/bin/catalina.sh start

如果你的tomcat是NIO方式启动,是没有问题的,如果是用native+APR方式运行的,而且APR是手动编译安装的,那APR是不在上述PATH环境中的。

也就是说,tomcat启动找不到APR库会报错。

所以,要加上你手动编译的APR库路径:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib

ok,这样就完美解决了。

有洁癖者,写个shell脚本,放到rc.local中。

再有洁癖者,加入/etc/init.d 也是可以的,现在都是CentOS7 启动方式都是systemd了,我也不知道那该死的***.service是怎么写的。如果你还能用/etc/init.d来启动程序,可以看看下面步骤:

1:cp /tomcat_path/bin/catalina.sh /etc/init.d/tomcat

2:vim /etc/init.d/tomcat

3:在#!/bin/bash下面加上

#chkconfig: 2345 10 90

#description: tomcat service

export JAVA_HOME=/usr/local/java(改成你的路径)

export CATALINA_HOME=/usr/local/tomcat(改成你的路径)

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib

4:chkconfig --add tomcat

5:service tomcat start

ok,是不是要结束了?

如果我不想用root用户启动怎么办?

用jsvc,在tomcat/bin目录下,有个commons-daemon-native.tar.gz

1:解压之

2:进入制定目录

3:./configure

4:make

5:cp jsvc ../..

编写启动脚本:

#!/bin/bash

CATALINA_HOME=***(自己写)

CATALINA_BASE=$CATALINA_HOME

export CATALINA_HOME CATALINA_BASE

cd $CATALINA_HOME

./bin/jsvc \

-classpath $CATALINA_HOME/bin/bootstrap.jar:$CATALINA_HOME/bin/tomcat-juli.jar \

-outfile $CATALINA_BASE/logs/catalina.out \

-errfile $CATALINA_BASE/logs/catalina.err \

-Dcatalina.home=$CATALINA_HOME \

-Dcatalina.base=$CATALINA_BASE \

-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \

-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties \

org.apache.catalina.startup.Bootstrap

-user tomcat

这回真的要结束了。

谢谢大家惠顾。

对了,最后一个脚本如果你是APR别忘了,加库的环境。

---------------还有一个情况---------------

TomCat在linux下只能监听IPV6的端口,但是无法监听Ipv4的端口,这个时候可以在Tomcat的bin中的catalina.sh中添加以下代码:

JAVA_OPTS=”$JAVA_OPTS -Djava.net.preferIPv4Stack=true”

—– Execute The Requested Command —————————————–

如果使用MyEclipse启动TomCat,可以在该TomCat的JDK的Optional Java VM arguments中添加如下参数

-Djava.net.preferIPv4Stack=true

也可以直接配置环境变量,添加JavaOPTS:

#vi ~/.profile

export JAVA_HOME=”/usr/java/jdk-7-sun”

export PATH=”$PATH:$JAVA_HOME/bin”

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

export JAVA_OPTS=”-Djava.net.preferIPv4Stack=true”