【问题标题】:Apache Tomcat in Amazon EC2 Error: could not find org.apache.catalina.util.ServerInfoAmazon EC2 中的 Apache Tomcat 错误:找不到 org.apache.catalina.util.ServerInfo
【发布时间】:2014-08-07 13:33:45
【问题描述】:

我已按照此处提供的安装指南进行操作:http://www.excelsior-usa.com/articles/tomcat-amazon-ec2-basic.html

我正在使用 Amazon Linux AMI(Amazon 系统映像)运行 AWS EC2 实例:Amazon Linux AMI 2014.03.2 (HVM) - ami-d13845e1

我已经在机器上安装了 Java 7:

${JAVA_HOME}/bin/java -version
java version "1.7.0_65"
OpenJDK Runtime Environment (amzn-2.5.1.2.43.amzn1-x86_64 u65-b17)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)

我已经安装了 Tomcat7。当我启动服务器并尝试在端口 8080 上连接到我的机器地址时,我得到一个空白页或请求只是挂起。我已经安装了所有的 Tomcat7 包(请参阅本文开头链接的文章中的步骤 #5),所以我应该会看到默认的 Tomcat 主页(我什至会对 400 响应代码感到满意!)

我可以确认我的安全组是正确的(我之前使用相同的安全组从端口 8080 运行 Jetty)。我还按照指南的命令检查了tomcat7是否正在运行并监听8080端口:

$ sudo fuser -v -n tcp 8080 
                     USER        PID ACCESS COMMAND
8080/tcp:            tomcat     1669 F.... java

当我尝试运行 version 命令时,我得到了一个非常奇怪的响应:

$ sudo service tomcat7 version
/usr/sbin/tomcat7: line 21: .: /etc/sysconfig/: is a directory
/usr/sbin/tomcat7: line 25: cd: HOME not set
Error: Could not find or load main class org.apache.catalina.util.ServerInfo

我尝试在 Google 上搜索解决方案,并尝试了 stuff like this,但没有任何结果。我不确定我从版本收到的上述消息是否与我的 tomcat7 无法正常工作的原因有关,但这是我能想到的唯一尝试和排除故障的方法。

有没有人有类似的经历?有没有人知道可能出了什么问题?当他们按照精彩的指南做一些“简单”的事情时,还有其他人感到难过,但它仍然不起作用吗? :-P

附带说明一下,我已经通过 .exe 文件在本地 Windows7 机器上成功安装了 Tomcat7,它运行良好。我正在尝试在本地开发,然后推送到我的 Amazon Web Service,但似乎我必须先解决这个问题。

【问题讨论】:

    标签: java tomcat amazon-web-services amazon-ec2 catalina


    【解决方案1】:

    我可以确认您面临的问题。但是,我使用 Oracle JDK 让它工作得很好。我按照以下步骤操作:

    从 ami-d13845e1 创建一个实例

    删除了现有的 OpenJDK:yum -y remove java-1.7.0-openjdk

    下载并安装Oracle JDK:http://download.oracle.com/otn-pub/java/jdk/7u65-b17/jdk-7u65-linux-x64.rpm

    注意:下载 Oracle JDK 本身很痛苦。使用 Linux wget 命令下载它并不好玩。 Oracle 强制您接受条款和条件。因此,请找出您自己下载该文件的方式。

    安装了 Oracle JDK:rpm -ivh jdk-7u65-linux-x64.rpm

    验证java版本:

    # java -version
    java version "1.7.0_65"
    Java(TM) SE Runtime Environment (build 1.7.0_65-b17)
    Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
    

    检查上面的输出是否显示“HotSpot”......

    完成后,我从源代码安装了 tomcat (http://www.trieuvan.com/apache/tomcat/tomcat-7/v7.0.55/bin/apache-tomcat-7.0.55.tar.gz)。

    顺便说一句,我总是使用netstat -anp | grep 8080 而不是user -v -n tcp 8080

    底线是,I resolved this issue by removing OpenJDK and installing Oracle JDK.这就是本质。

    如果您需要从源代码安装 tomcat 的步骤,请告诉我。

    编辑:根据要求,以下是从源代码安装 Tomcat 的步骤:

    下载Tomcat并将其移至/usr/share/

    # wget http://www.trieuvan.com/apache/tomcat/tomcat-7/v7.0.55/bin/apache-tomcat-7.0.55.tar.gz
    # tar -xvzf apache-tomcat-7.0.55.tar.gz
    # mv apache-tomcat-7.0.55 /usr/share/
    

    如下创建/etc/init.d/tomcat脚本:

    #!/bin/bash
    # description: Tomcat Start Stop Restart
    # processname: tomcat
    # chkconfig: 234 20 80
    JAVA_HOME=/usr/java/default/
    export JAVA_HOME
    PATH=$JAVA_HOME/bin:$PATH
    export PATH
    CATALINA_HOME=/usr/share/apache-tomcat-7.0.55
    
    case $1 in
    start)
    sh $CATALINA_HOME/bin/startup.sh
    ;;
    stop)
    sh $CATALINA_HOME/bin/shutdown.sh
    ;;
    restart)
    sh $CATALINA_HOME/bin/shutdown.sh
    sh $CATALINA_HOME/bin/startup.sh
    ;;
    esac
    exit 0
    

    运行以下命令(这些应该是不言自明的):

    # chmod 755 /etc/init.d/tomcat
    # chkconfig  --add tomcat
    # chkconfig  tomcat on
    # chkconfig  --list tomcat
    

    为了避免不必要的麻烦,我一般会暂时停止iptables:

    # service iptables stop
    

    启动Tomcat:

    # service tomcat start
    

    确保 tomcat 正在运行:

    # netstat -anp | grep 8080
    tcp        0      0 :::8080                     :::*                        LISTEN      1704/java
    

    就是这样!!

    有多种安装tomcat的方法。我总是按照这种方法安装和运行 tomcat 作为服务。

    【讨论】:

    • 您可能希望为未来的访问者编辑您的回复。 “下载和安装 Oracle JDK”的说明链接到 tomcat 安装。 重新说明: 我使用 FTP 传输然后安装 Java。非常简单 :-) 现在我能够从源代码安装 Tomcat,但我不知道如何让它作为服务工作。我大致遵循了本指南 (wiki.jasig.org/display/UPM40/Installing+Tomcat),当我运行 $TOMCAT_HOME/bin/startup.sh 时它似乎可以工作,但我希望能够使用 service tomcat7 start。可以提供安装指导吗?
    • 我想我会尝试一些与您的基线建议相关的更多事情:删除亚马逊的 Linux 拥有的 JDK 并直接从源代码安装 JDK 和 Tomcat(这基本上是因为亚马逊的可用软件包已损坏...) 事实证明,Part II of the guide I linked 本质上就是这样,所以我明天要试试。我会告诉你进展如何,但我会继续检查其他回复,以防有人可以修复亚马逊的打包产品。
    • 看起来很棒!我很感谢你为我分解它,因为我现在意识到service tomcat xyz 位只是一个 shell 脚本,它运行特定任务并定义输出到控制台。我可能应该包含一个免责声明,即我对 Linux shell 还很陌生,但我并没有想到这太重要了。当我在某事中挣扎时,我觉得我学到了更多东西,我很享受这一点。我最终混合了您的启动/停止/重启脚本和this one 以获得我想要的。我会标记为已回答!谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多