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, который выполняет различные действия в зависимости от конфигурации.

  1. Если java.security.egd или securerandom.source указывают на "file:/dev/random" или "file:/dev/urandom", мы будем использовать NativeSeedGenerator, который вызывает super(), который вызывает SeedGenerator.URLSeedGenerator(/dev/random). (Вложенный класс в SeedGenerator.) В этой ошибке изменилось только то, что urandom также будет запускать использование этого пути кода.

  2. Если эти свойства указывают на другой существующий 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"

Комментарий от:

https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-7-on-ubuntu-14-04-via-apt-get

При использовании /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, поэтому его стоит использовать.

Другие вопросы по тегам