我正在使用digitalocean并尝试在ubuntu上安装和启动tomcat但不幸的是我不能这样做。 (创造了新的水滴并尝试了10次)
1GB Ram 30GB SSD Disk Amsterdam 2 Ubuntu 14.04 x64
当我启动tomcat时,它说" Tomcat开始了#34;。但我无法从浏览器访问页面。和./shutdown.sh返回错误。
可能是什么问题?
我现在注意到了一些事情。在我写这个问题时,会显示tomcat页面。显示页面花了28分钟
catalina.out说:信息:使用[SHA1PRNG]创建会话ID生成的SecureRandom实例花了[1,718,769]毫秒。
以下是我的安装步骤(这些步骤适用于不同的vps,但不适用于digitalocean飞沫):
安装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/
启动Tomcat
./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打开网站http://5.101.107.56:8080/
页面正在等待... [内容在28分钟或更长时间后显示]
如果尚未显示内容(在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并导航到http://5.XXX.XXX.XX/
nginx欢迎页面立即打开
当我在浏览器中看到该页面时,我检查了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
答案 0 :(得分:75)
用securerandom.source=file:/dev/urandom
中的securerandom.source=file:/dev/./urandom
替换$JAVA_PATH/jre/lib/security/java.security
已解决了我的问题。
即使指定了file:/dev/urandom
,JRE仍然会将/dev/random
用于SHA1PRNG(请参阅错误JDK-4705093):
在SHA1PRNG中,有一个SeedGenerator可以执行各种操作 取决于配置。
如果java.security.egd或securerandom.source指向“file:/ dev / random”或“file:/ dev / urandom”,我们将使用 NativeSeedGenerator,调用super()调用 SeedGenerator.URLSeedGenerator(的/ dev /随机的)。 (一个嵌套的类 SeedGenerator。)这个bug中唯一改变的是那个 urandom也会触发使用此代码路径。
- 醇>
如果这些属性指向另一个存在的URL,我们将初始化SeedGenerator.URLSeedGenerator(url)。这就是为什么 “file:/// dev / urandom”,“file:/./ dev / random”等将起作用。
在此实现中,生成器保持数量的估计 熵池中的噪声比特。从这个熵池随机 数字已创建。读取时,/ dev / random设备只会 在估计的噪声位数内返回随机字节 熵池。 / dev / random 应该适合需要的用途 非常高质量的随机性,例如一次性密码或密钥生成。
当熵池为空时,从/ dev / random 中读取将阻止 直到收集到额外的环境噪音。意图是 作为加密安全的伪随机数发生器, 尽可能提供具有熵的输出。这是建议的 用于生成高价值或长期的加密密钥 保护。
环境噪音?
随机数生成器从设备收集环境噪声 驱动程序和其他来源进入熵池。发电机也 保持对熵池中噪声位数的估计。 从这个熵池中创建随机数。
这意味着在实践中,可以在一段未知的时间内阻止tomcat。
答案 1 :(得分:17)
这也有效:
实际上,通过在/ etc / default / tomcat7中设置以下内容,我很好:
JAVA_OPTS =“ - Djava.security.egd = file:/ dev /./ urandom -Djava.awt.headless = true -Xmx1024m -XX:MaxPermSize = 512m -XX:+ UseConcMarkSweepGC”
评论来自:
答案 2 :(得分:12)
虽然使用/dev/urandom
作为熵源可以减少Tomcat的启动时间,但这不是一个好主意,因为它可能会产生意想不到的副作用。
在Tomcat服务器中运行的其他组件(例如Web应用程序)可能依赖于安全初始化的SecureRandom
实例,并且当随机数的熵不足时可能存在安全问题。
实际上,这是使用/dev/urandom
无效但/dev/./urandom
无效的原因之一。 SHA1PRNG在很大程度上依赖于良好的种子。如果种子不好,则随机数是可预测的。因此,开发人员确保为此目的/dev/random
被用作熵源,即使JVM配置为使用/dev/urandom
。有两个关于此问题的错误报告(bug 1,bug 2)。
因此,不应将熵源更改为/dev/urandom
,而应确保/dev/random
具有足够的熵。如果系统具有硬件RNG,则安装rng-tools
应该可以解决问题。否则,安装haveged
提供了非常好的熵源,不依赖于特殊的硬件RNG。在虚拟机中,rng-tools
可以通过虚拟硬件RNG使用来自主机的熵。作为替代方案,可以使用EGD,但目前该软件不包含在Ubuntu存储库中,因此使用它很麻烦。