Tomcat7 запускается слишком поздно в Ubuntu 14.04 x64 [Digitalocean]
Я использую digitalocean и пытаюсь установить и запустить Tomcat в Ubuntu, но, к сожалению, я не могу этого сделать. (создал новые капли и попробовал 10 раз)
1 ГБ оперативной памяти 30 ГБ SSD-диск Амстердам 2 Ubuntu 14.04 x64
Когда я запускаю Tomcat, он говорит: "Tomcat запущен". Но я не могу получить доступ к странице из браузера. и./shutdown.sh возвращает ошибку.
В чем может быть проблема?
Я кое-что заметил сейчас. Пока я пишу этот вопрос, отображается страница кота. отображение страницы заняло 28 минут
catalina.out говорит: INFO: создание экземпляра SecureRandom для генерации идентификатора сеанса с использованием [SHA1PRNG] заняло [1 718 769] миллисекунд.
Вот мои шаги по установке (эти шаги работают на разных виртуальных серверах, но не работают с цифровыми морскими каплями):
Установите оракул 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
3 ответа
Замена 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/random). (Вложенный класс в SeedGenerator.) В этой ошибке изменилось только то, что urandom также будет запускать использование этого пути кода.
Если эти свойства указывают на другой существующий URL, мы инициализируем SeedGenerator.URLSeedGenerator(url). Вот почему "file:///dev/urandom", "file:/./dev/random" и т. Д. Будут работать.
Из Википедии в / dev / random:
В этой реализации генератор сохраняет оценку количества битов шума в пуле энтропии. Из этого энтропийного пула создаются случайные числа. При чтении устройство / dev / random будет возвращать только случайные байты в пределах предполагаемого количества битов шума в пуле энтропии. / dev / random должен подходить для случаев, когда требуется случайность с очень высоким качеством, например, для однократной подстановки или генерации ключа.
Когда пул энтропии пуст, чтение из / dev / random будет блокироваться до тех пор, пока не будет собран дополнительный шум окружающей среды. Намерение состоит в том, чтобы служить криптографически безопасным генератором псевдослучайных чисел, обеспечивающим максимально возможную энтропию. Это предлагается для использования при генерации криптографических ключей для надежной или долгосрочной защиты.
Экологический шум?
Генератор случайных чисел собирает шум окружающей среды от драйверов устройств и других источников в пул энтропии. Генератор также сохраняет оценку количества битов шума в пуле энтропии. Из этого энтропийного пула создаются случайные числа.
Это означает, что на практике можно заблокировать 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 (например, веб-приложения), могут зависеть от SecureRandom
Например, могут возникнуть проблемы с безопасностью, когда энтропия для случайных чисел недостаточна.
На самом деле, это одна из причин, почему использование /dev/urandom
не работает, но /dev/./urandom
делает. SHA1PRNG сильно зависит от хорошего семени. Если начальное число не является хорошим, случайные числа предсказуемы. Поэтому разработчик позаботился о том, чтобы для этой цели /dev/random
используется в качестве источника энтропии, даже если JVM настроена на использование /dev/urandom
, Есть два сообщения об ошибках ( ошибка 1, ошибка 2).
Таким образом, вместо изменения источника энтропии на /dev/urandom
лучше убедиться, что /dev/random
имеет достаточно энтропии. Если система имеет аппаратный ГСЧ, установка rng-tools
должен сделать свое дело. В противном случае установка haveged
обеспечивает очень хороший источник энтропии, который не зависит от наличия специального аппаратного RNG. В виртуальной машине rng-tools
Можно использовать энтропию от хоста через виртуальный аппаратный ГСЧ. В качестве альтернативы этому можно использовать EGD, но на данный момент это программное обеспечение не включено в репозитории Ubuntu, поэтому его стоит использовать.