【问题标题】:Starting tomcat on google compute engine Linux vm在谷歌计算引擎 Linux vm 上启动 tomcat
【发布时间】:2017-10-09 19:29:44
【问题描述】:

我在 google 计算引擎 vm 中创建了一个 f1-micro 实例,并使用以下命令安装了 java 和 tomcat8

sudo apt-get update
sudo apt-get install default-jdk
sudo apt-get install tomcat8

一旦安装了 tomcat,我就可以通过 curl http://localhost:8080 和使用 vm 的外部 IP:8080 来访问它。另外,如果我修改默认的 /var/lib/tomcat8/webapps/ROOT.index.html 它会立即反映。

但是,如果我只是停止 tomcat 并重新开始(没有任何其他更改)它永远不会启动。我在catalina.out 中也没有看到任何错误

再次,如果我使用 sudo netstat -lnp | grep 8080 检查 tomcat 是否正在运行,我会得到一个条目:

tcp6       0      0 :::8080                 :::*                    LISTEN      8749/java    

在第一次运行日志中,我可以看到类似

INFO: Deploying web application directory /var/lib/tomcat7/webapps/ROOT
.......
INFO: Deployment of web application directory /var/lib/tomcat7/webapps/ROOT has finished in 1,574 ms

但重启后我只看到

INFO: Deploying web application directory /var/lib/tomcat7/webapps/ROOT

没有部署成功日志

【问题讨论】:

  • Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super UserUnix & Linux Stack Exchange 会是一个更好的提问地点。
  • @jww 所以你的意思是开发的 Web 应用程序的部署不是开发的一部分?
  • 如前所述,安装和配置 VM 或排除 Web 服务器启动失败的问题对于 Stack Overflow 来说是无关紧要的。如果您有部署问题,那么也许您应该编辑问题以反映它。

标签: java linux tomcat google-cloud-platform google-compute-engine


【解决方案1】:

启动需要时间的主要原因是在熵池中没有找到足够的随机性。

要解决此问题,请转到 JDK/security 文件夹并编辑 java.security

就我而言,它位于:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security

改变

securerandom.source=file:/dev/random

securerandom.source=file:/dev/./urandom

【讨论】:

    【解决方案2】:

    Apache Tomcat 附带一个简单的 ROOT webapp,它只不过是一个预编译的索引 JSP 页面。这个索引页被预编译成一个 JAR 文件。 默认情况下,根文件夹带有 index.jsp 文件而不是 index.html。 如果您更改了它,请确保更新 tomcat 的 web 配置文件以从 jar 文件中编译它。

    按照以下步骤更新 index.jsp 文件: 更改 index.jsp 页面内容的最简单方法是从 ROOT webapp 中删除这个 index_jsp servlet。删除 index_jsp servlet 并重新启动 Tomcat 后,Tomcat 将在 ROOT 目录中看到 index.jsp 文件,并将其即时编译为类文件。您现在可以编辑 ROOT/index.jsp 文件并通过重新加载 http://localhost:8080/ 页面使这些更改立即生效。

    要删除 index_jsp servlet,请编辑 ROOT Web 应用程序的配置文件 $CATALINA_HOME/webapps/ROOT/WEB-INF/web.xml。注释掉 servlet 的定义和 servlet 映射,使该部分文件看起来像这样(更改为红色):

    <!-- JSPC servlet mappings start -->
    <!-- Disabling the index_jsp servlet
    <servlet>
    <servlet-name>org.apache.jsp.index_jsp</servlet-name>
    <servlet-class>org.apache.jsp.index_jsp</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>org.apache.jsp.index_jsp</servlet-name>
    <url-pattern>/index.jsp</url-pattern>
    </servlet-mapping>
    -->
    <!-- JSPC servlet mappings end -->
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-06
      • 1970-01-01
      • 1970-01-01
      • 2015-01-07
      • 1970-01-01
      • 1970-01-01
      • 2013-12-05
      相关资源
      最近更新 更多