我正在使用digitalocean并尝试在ubuntu上安装并启动tomcat,但是不幸的是我做不到。(创建新的液滴并尝试了10次)
1GB Ram 30GB SSD磁盘Amsterdam 2 Ubuntu 14.04 x64
当我启动tomcat时,它说“ Tomcat已启动”。但是我无法从浏览器访问页面。和./shutdown.sh返回错误。
可能是什么问题?
我现在注意到了。 当我编写此问题时,将显示tomcat页面。显示该页面花费了28分钟
catalina.out表示: 信息:使用[SHA1PRNG]创建用于生成会话ID的SecureRandom实例花费了[1,718,769]毫秒。
这是我的安装步骤(这些步骤适用于不同的vps,但不适用于Digitalocean Droplet):
安装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分钟或更长时间后显示]
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并导航到http://5.XXX.XXX.XX/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
securerandom.source=file:/dev/urandom用securerandom.source=file:/dev/./urandomin 替换$JAVA_PATH/jre/lib/security/java.security已解决了我的问题。
securerandom.source=file:/dev/urandom
securerandom.source=file:/dev/./urandom
$JAVA_PATH/jre/lib/security/java.security
即使file:/dev/urandom已指定,JRE仍将/dev/random用于SHA1PRNG(请参见Bug JDK-4705093):
file:/dev/urandom
/dev/random
在SHA1PRNG中,有一个SeedGenerator,它根据配置执行各种操作。 如果java.security.egd或securerandom.source指向“ file:/ dev / random”或“ file:/ dev / urandom”,我们将使用NativeSeedGenerator,它调用super(),后者调用SeedGenerator.URLSeedGenerator(/ dev / random )。(SeedGenerator中的一个嵌套类。)此bug唯一改变的是urandom也将触发此代码路径的使用。 如果这些属性指向存在的另一个URL,我们将初始化SeedGenerator.URLSeedGenerator(url)。这就是为什么“ file:/// dev / urandom”,“ file:/./ dev / random”等将起作用的原因。
在SHA1PRNG中,有一个SeedGenerator,它根据配置执行各种操作。
如果java.security.egd或securerandom.source指向“ file:/ dev / random”或“ file:/ dev / urandom”,我们将使用NativeSeedGenerator,它调用super(),后者调用SeedGenerator.URLSeedGenerator(/ dev / random )。(SeedGenerator中的一个嵌套类。)此bug唯一改变的是urandom也将触发此代码路径的使用。
如果这些属性指向存在的另一个URL,我们将初始化SeedGenerator.URLSeedGenerator(url)。这就是为什么“ file:/// dev / urandom”,“ file:/./ dev / random”等将起作用的原因。
从Wikipedia上的/ dev / random:
在该实现中,生成器保持熵池中噪声位数的估计。根据该熵池,创建随机数。读取时,/ dev / random设备将仅返回熵池中估计的噪声位数内的随机字节。 / dev / random 应该适合需要 非常高质量的随机性的应用, 例如一次性填充或密钥生成。 当熵池为空时,从/ dev / random的读取 将被阻塞, 直到收集到其他环境噪声为止。目的是充当加密安全的伪随机数生成器,以尽可能大的熵传递输出。建议将其用于生成用于高价值或长期保护的加密密钥。
在该实现中,生成器保持熵池中噪声位数的估计。根据该熵池,创建随机数。读取时,/ dev / random设备将仅返回熵池中估计的噪声位数内的随机字节。 / dev / random 应该适合需要 非常高质量的随机性的应用, 例如一次性填充或密钥生成。
当熵池为空时,从/ dev / random的读取 将被阻塞, 直到收集到其他环境噪声为止。目的是充当加密安全的伪随机数生成器,以尽可能大的熵传递输出。建议将其用于生成用于高价值或长期保护的加密密钥。
环境噪音?
随机数发生器将 来自设备驱动程序和其他来源的 环境噪声 收集到一个熵池中。发生器还保持熵池中噪声位数的估计。根据该熵池,创建随机数。
这意味着在实践中,有可能在未知的时间内阻止tomcat。