私はdigitaloceanを使用していて、ubuntuにTomcatをインストールして起動しようとしていますが、残念ながらできません。 (新しい液滴を作成し、10回試行しました)
1GB Ram 30GB SSD Disk Amsterdam 2 Ubuntu 14.04 x64
Tomcatを起動すると、「Tomcatが起動しました」と表示されます。しかし、ブラウザからページにアクセスできません。 ./shutdown.shはエラーを返します。
何が問題になりますか?
何かに気づきました。この質問を書いている間、Tomcatページが表示されます。ページを表示するのに28分かかりました
catalina.outのコメント:情報:[SHA1PRNG]を使用したセッションID生成用のSecureRandomインスタンスの作成には[1,718,769]ミリ秒かかりました。
ここに私のインストール手順があります(これらの手順は異なるvpsで動作しますが、デジタルオーシャンの液滴では動作しません):
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)
Set Java path
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でWebサイトを開く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
securerandom.source=file:/dev/urandom
のsecurerandom.source=file:/dev/./urandom
を$Java_PATH/jre/lib/security/Java.security
に置き換えると、問題が解決しました。
file:/dev/urandom
が指定されている場合でも、JREは引き続きSHA1PRNGに対して/dev/random
を使用します(バグ JDK-470509 を参照)。
SHA1PRNGには、設定に応じてさまざまな処理を行うSeedGeneratorがあります。
Java.security.egdまたはsecurerandom.sourceが「file:/ dev/random」または「file:/ dev/urandom」を指す場合、NativeSeedGeneratorを使用します。これはSeedGenerator.URLSeedGenerator(/ dev/randomを呼び出すsuper()を呼び出します)。 (SeedGenerator内のネストされたクラス。)このバグで変更された唯一のことは、urandomもこのコードパスの使用をトリガーすることでした。
これらのプロパティが存在する別のURLを指している場合、SeedGenerator.URLSeedGenerator(url)を初期化します。これが、「file:/// dev/urandom」、「file:/./ dev/random」などが機能する理由です。
この実装では、ジェネレーターはエントロピープール内のノイズのビット数の推定値を保持します。このエントロピープールから乱数が作成されます。読み取られると、/ dev/randomデバイスは、エントロピープール内のノイズの推定ビット数内のランダムバイトのみを返します。 /dev/random は、ワンタイムパッドやキー生成など、非常に高品質のランダム性を必要とする用途に適している必要があります。
エントロピープールが空の場合、/ dev/randomから読み取りwill block追加の環境ノイズが収集されるまで。可能な限り大きなエントロピーで出力を生成する数値ジェネレーター。これは、価値の高い、または長期的な保護のための暗号化キーの生成に使用することをお勧めします。
環境騒音?
乱数ジェネレーターは、環境ノイズデバイスドライバーおよびその他のソースからエントロピープールに収集します。ジェネレーターは、エントロピープール内のノイズのビット数の推定値も保持します。このエントロピープールから乱数が作成されます。
つまり、実際には、Tomcatを未知の時間ブロックすることが可能です。
これも機能します:
実際、/ etc/default/Tomcat7で以下を設定することにより、私は大丈夫でした:
Java_OPTS = "-Djava.security.egd = file:/ dev /./ urandom -Djava.awt.headless = true -Xmx1024m -XX:MaxPermSize = 512m -XX:+ UseConcMarkSweepGC"
からのコメント:
エントロピーのソースとして/dev/urandom
を使用することは、Tomcatの起動時間を短縮する回避策ですが、意図しない副作用が生じる可能性があるため、お勧めできません。
Tomcatサーバーで実行される他のコンポーネント(Webアプリケーションなど)は、安全に初期化されたSecureRandom
インスタンスに依存する場合があり、乱数のエントロピーが十分でない場合にセキュリティ上の問題が発生する可能性があります。
実際、これは/dev/urandom
の使用が機能しないが、/dev/./urandom
が機能する理由の1つです。 SHA1PRNGは、良好なシードに大きく依存しています。シードが良くない場合、乱数は予測可能です。したがって、開発者は、JVMが/dev/random
を使用するように構成されている場合でも、この目的で/dev/urandom
がエントロピーのソースとして使用されるようにしました。これについて2つのバグレポートがあります( bug 1 、 bug 2 )。
したがって、エントロピーのソースを/dev/urandom
に変更する代わりに、/dev/random
に十分なエントロピーがあることを確認する必要があります。システムにハードウェアRNGがある場合、rng-tools
をインストールするとうまくいきます。そうでない場合、haveged
をインストールすると、存在する特別なハードウェアRNGに依存しないエントロピーの非常に優れたソースが提供されます。仮想マシンでは、rng-tools
は仮想ハードウェアRNGを介してホストからのエントロピーを使用できます。これに代わるものとして、 [〜#〜] egd [〜#〜] を使用できますが、現時点ではこのソフトウェアはUbuntuリポジトリに含まれていないため、使用するのは面倒です。