Tomcat7 在 Ubuntu 14.04 x64 上启动得太晚了 [Digitalocean]

2022-08-31 20:50:17

我正在使用digitalocean,并试图在ubuntu上安装和启动tomcat,但不幸的是我无法做到这一点。(创建了新的液滴并尝试了10次)

1GB 内存 30GB SSD 磁盘 阿姆斯特丹 2 Ubuntu 14.04 x64

当我开始tomcat时,它说“Tomcat开始了”。但我无法从浏览器访问页面。和 ./shutdown.sh 返回错误。

可能是什么问题?

我现在注意到了一些事情。当我写这个问题时,显示tomcat页面。显示页面花了 28 分钟

catalina.out 说: 信息: 使用 [SHA1PRNG] 创建用于会话 ID 生成的 SecureRandom 实例需要 [1,718,769] 毫秒。

以下是我的安装步骤(这些步骤适用于不同的vps,但不适用于数字海洋液滴):

Install oracle jdk

 sudo apt-get install python-software-properties
 sudo add-apt-repository ppa:webupd8team/java
 sudo apt-get update
 sudo apt-get install oracle-java7-installer
 sudo apt-get install oracle-java7-set-default
      java -version
      java version "1.7.0_72"
      Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
      Java HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode)

设置 java 路径

      sudo nano /etc/environment
      JAVA_HOME="/usr/lib/jvm/java-7-oracle"
      source /etc/environment
      wget http://ftp.itu.edu.tr/Mirror/Apache/tomcat/tomcat-7/v7.0.56/bin/apache-tomcat-7.0.56.tar.gz
      tar xvzf apache-tomcat-7.0.56.tar.gz
      mv apache-tomcat-7.0.56/ apache-tomcat-7.0.56-server-1/

启动雄猫

        ./startup.sh
            Using CATALINA_BASE:   /usr/local/apache-tomcat-7.0.56-server-1
            Using CATALINA_HOME:   /usr/local/apache-tomcat-7.0.56-server-1
            Using CATALINA_TMPDIR: /usr/local/apache-tomcat-7.0.56-server-1/temp
            Using JRE_HOME:        /usr/lib/jvm/java-7-oracle/jre
            Using CLASSPATH:       /usr/local/apache-tomcat-7.0.56-server-1/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.56-server-1/bin/tomcat-juli.jar
            Tomcat started.

结账端口 8080

        netstat -ln 
            tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
            tcp6       0      0 :::8009                 :::*                    LISTEN
            tcp6       0      0 :::8080                 :::*                    LISTEN
            tcp6       0      0 :::22                   :::*                    LISTEN

结帐流程

            ps -ef | grep tomcat
            root      2825     1  1 14:23 pts/0    00:00:03 /usr/lib/jvm/java-7-oracle/jre/bin/java -Djava.util.logging.config.file=/usr/local/apache-tomcat-7.0.56-server-1/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/apache-tomcat-7.0.56-server-1/endorsed -classpath /usr/local/apache-tomcat-7.0.56-server-1/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.56-server-1/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/apache-tomcat-7.0.56-server-1 -Dcatalina.home=/usr/local/apache-tomcat-7.0.56-server-1 -Djava.io.tmpdir=/usr/local/apache-tomcat-7.0.56-server-1/temp org.apache.catalina.startup.Bootstrap start

打开端口 8080 处的网站 页面正在等待...[内容在28分钟或更长时间后显示]http://5.101.107.56:8080/

如果内容尚未显示,请尝试关闭 tomcat(在 tomcat 正常启动之前)。

      ./shutdown.sh 
            SEVERE: Could not contact localhost:8005. Tomcat may not be running.
            Oct 17, 2014 2:40:29 PM org.apache.catalina.startup.Catalina stopServer
            SEVERE: Catalina.stop:
                java.net.ConnectException: Connection refused
                at java.net.PlainSocketImpl.socketConnect(Native Method)
                at java.net.AbstractPlainSoc

结账日志

      catalina.out
            Oct 17, 2014 2:31:47 PM org.apache.coyote.AbstractProtocol init
            INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
            Oct 17, 2014 2:31:47 PM org.apache.catalina.startup.Catalina load
            INFO: Initialization processed in 1492 ms
            Oct 17, 2014 2:31:47 PM org.apache.catalina.core.StandardService startInternal
            INFO: Starting service Catalina
            Oct 17, 2014 2:31:47 PM org.apache.catalina.core.StandardEngine startInternal
            INFO: Starting Servlet Engine: Apache Tomcat/7.0.56
            Oct 17, 2014 2:31:47 PM org.apache.catalina.startup.HostConfig deployDirectory
            INFO: Deploying web application directory /usr/local/apache-tomcat-7.0.56-server-1/webapps/host-manager

我还安装了nginx并导航到nginx欢迎页面立即打开http://5.XXX.XXX.XX/

当我在浏览器中看到该页面时,我检查了catalina.out,它说:

    Oct 17, 2014 2:31:47 PM org.apache.catalina.startup.HostConfig deployDirectory
    INFO: Deploying web application directory /usr/local/apache-tomcat-7.0.56-server-1/webapps/host-manager
    Oct 17, 2014 3:00:27 PM org.apache.catalina.util.SessionIdGenerator createSecureRandom
    INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took **[1,718,769] milliseconds.**

记忆:

               total       used       free     shared    buffers     cached
  Mem:       1017912     849512     168400        332      18780     688468

答案 1

用 in 替换解决了我的问题。securerandom.source=file:/dev/urandomsecurerandom.source=file:/dev/./urandom$JAVA_PATH/jre/lib/security/java.security

即使指定了,JRE 仍将用于 SHA1PRNG(请参阅 bug JDK-4705093):file:/dev/urandom/dev/random

在SHA1PRNG中,有一个种子生成器,它根据配置执行各种操作。

  1. 如果java.security.egd或securerandom.source指向“file:/dev/random”或“file:/dev/urandom”,我们将使用NativeSeedGenerator,它调用super(),它调用SeedGenerator.URLSeedGenerator(/dev/random)。(SeedGenerator 中的嵌套类。此 bug 中唯一更改的是 urandom 也会触发此代码路径的使用。

  2. 如果这些属性指向另一个存在的 URL,我们将初始化 SeedGenerator.URLSeedGenerator(url)。这就是为什么“file:///dev/urandom”,“file:/./dev/random”等会起作用的原因。

来自维基百科上的 /dev/random

在此实现中,生成器保留熵池中噪声位数的估计值。从这个熵池创建随机数。读取时,/dev/random 设备将仅返回熵池中估计的噪声位数内的随机字节。/dev/random 应该适合需要非常高质量的随机性的用途,例如一次性 pad 或密钥生成。

当熵池为空时,来自 /dev/random 的读取将阻塞,直到收集到额外的环境噪声。其目的是充当加密安全的伪随机数生成器,以尽可能大的熵提供输出。建议将其用于生成用于高价值或长期保护的加密密钥。

环境噪音?

随机数生成器将来自设备驱动程序和其他源的环境噪声收集到熵池中。发生器还保持熵池中噪声位数的估计值。从这个熵池创建随机数。

这意味着在实践中,可以在未知的时间内阻止雄猫。


答案 2

这也有效:

实际上,通过在 /etc/default/tomcat7 中设置以下内容,我很好:

JAVA_OPTS=“-Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -Xmx1024m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC”

评论来自 :

https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-7-on-ubuntu-14-04-via-apt-get