Tomcat7 начинает слишком поздно на Ubuntu 14.04 x64 [Digitalocean]
Я использую digitalocean и пытаюсь установить и запустить tomcat на ubuntu, но, к сожалению, я не могу этого сделать. (создал новые капли и попробовал 10 раз)
1GB Ram 30GB SSD Disk Amsterdam 2 Ubuntu 14.04 x64
Когда я запускаю tomcat, он говорит: "Tomcat начал". Но я не могу получить доступ к странице из браузера. и. /shutdown.sh возвращает ошибку.
В чем может быть проблема?
Я заметил что-то сейчас. Пока я пишу этот вопрос, отображается страница tomcat. для отображения страницы
потребовалось 28 минут.
catalina.out говорит: INFO: создание экземпляра SecureRandom для генерации идентификатора сеанса с использованием [SHA1PRNG] заняло [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 немедленно
Я проверил каталину. Когда я вижу страницу в браузере, она говорит:
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
Замена 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 указывают на "файл:/dev/random" или "файл:/dev/urandom", мы будем использовать NativeSeedGenerator, который вызывает super(), который вызывает SeedGenerator.URLSeedGenerator(/DEV/случайный). (Вложенный класс внутри SeedGenerator.) Единственное, что изменилось в этой ошибке, было то, что urandom также инициирует использование этого пути кода.
-
Если эти свойства указывают на другой существующий URL, мы инициализируем SeedGenerator.URLSeedGenerator(url). Вот почему "файл:///dev/urandom", "файл:/./dev/random" и т.д. будут работать.
Из Википедия на /dev/random:
В этой реализации генератор сохраняет оценку числа бит шума в энтропийном пуле. Из этого энтропийного пула случайный числа создаются. При чтении устройство /dev/random будет только возвращать случайные байты в пределах оцененного количества бит шума в энтропийный пул. /dev/random должен быть подходящим для использования, которое необходимо очень качественная случайность, например, одноразовая клавиатура или генерация ключей.
Когда пул энтропии пуст, чтение из /dev/random будет блокироваться пока не будет собран дополнительный экологический шум. Цель состоит в том, чтобы служат в качестве криптографически надежного генератора псевдослучайных чисел, обеспечивая максимальную производительность с энтропией. Это предлагается для использования в генерации криптографических ключей для высокоценных или долгосрочных защита.
Экологический шум?
Генератор случайных чисел собирает экологический шум с устройства драйверов и других источников в энтропийный пул. Генератор также хранит оценку количества бит шума в пуле энтропии. Из этого энтропийного пула создаются случайные числа.
Это означает, что на практике возможно заблокировать tomcat в течение неизвестного времени.
Ответ 2
Это также работает:
Собственно, установив следующее в /etc/default/tomcat 7, я был в порядке:
JAVA_OPTS = "- Djava.security.egd = файл:/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
Ответ 3
При использовании /dev/urandom
, поскольку источником энтропии является обходной путь, который уменьшает время запуска Tomcat, это не очень хорошая идея, потому что это может иметь непреднамеренные побочные эффекты.
Другие компоненты, запущенные на сервере Tomcat (например, веб-приложения), могут зависеть от надежного инициализированного экземпляра SecureRandom
, и могут возникнуть проблемы с безопасностью, если энтропия для случайных чисел недостаточна.
Собственно, это одна из причин, почему использование /dev/urandom
не работает, но /dev/./urandom
делает. SHA1PRNG сильно зависит от хорошего семени. Если семя не хорошо, случайные числа предсказуемы. Поэтому разработчик гарантировал, что для этой цели /dev/random
используется как источник энтропии, даже если JVM настроен на использование /dev/urandom
. Об этом сообщается два сообщения об ошибках (ошибка 1, ошибка 2).
Поэтому вместо изменения источника энтропии до /dev/urandom
следует убедиться, что /dev/random
имеет достаточную энтропию. Если в системе имеется аппаратный RNG, установка rng-tools
должна сделать трюк. В противном случае установка haveged
обеспечивает очень хороший источник энтропии, который не полагается на специальный аппаратный RNG. В виртуальной машине rng-tools
может использовать энтропию с хоста через виртуальный аппаратный RNG. В качестве альтернативы этому можно было бы использовать EGD, но на данный момент это программное обеспечение не входит в репозитории Ubuntu, поэтому его надоедливо использовать.