tomcat: apache-tomcat-10.0.23
环境变量:
export APP_HOME=/usr/local
export JAVA_HOME=${APP_HOME}/jdk-18.0.2.1
export TOMCAT_HOME=${APP_HOME}/apache-tomcat-10.0.23
export CATALINA_HOME=${TOMCAT_HOME}
export CATALINA_BASE=${TOMCAT_HOME}
export PATH=$PATH:$JAVA_HOME/bin:$TOMCAT_HOME/bin
问题1、server.xml修改为80端口之后,用普通用户执行后,远程无法访问,改为其他端口则可以在远端访问。
答案参考这里
在linux下,非root用户不能监听1024以上的端口号,非root用户的程序也不能使用1024以下的端口号。普通用户的tomcat服务器就没办法绑定在80端口下
解决方法:
1. tomcat使用超级用户启动 sudo ./startup.sh (简单方便)
2. 使用linux的端口转发机制,把到80端口的服务请求都转到8080端口上。(即server.xml的port还是8080,但是地址栏输入www.a.com即可,请求转为www.a.com:8080),方法是使用iptables转发工具。
tips:方案2我没试过
问题2、使用sudo执行startup.sh时,一直提示:
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
答案参考这里
经查询catalina.sh中,有一句:
if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then
. "$CATALINA_BASE/bin/setenv.sh"
elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then
. "$CATALINA_HOME/bin/setenv.sh"
fi
所以创建了一个setenv.sh,里面只有一句内容
export JAVA_HOME=/usr/local/jdk-18.0.2.1/
然后启动即可,这样就可以在远端根据ip或域名来访问tomcat了。