Как установить java на vds
Перейти к содержимому

Как установить java на vds

  • автор:

Установка Java

Часто пользователь хочет запустить программное обеспечение, написанное на Java, но в результате получает ошибку. Причина проста — отсутствие программных пакетов, которые нужны для корректной работы этого ПО. В данной статье расскажем, как правильно установить Java на Linux.

Требования к VDS

Установка производится на выделенные серверы или VDS с виртуализацией KVM на тарифах с объёмом оперативной памяти не менее 2048 Мб.

Debian\Ubuntu

Установка последних версий Java

Обновляем информацию о пакетах:

Устанавливаем последнюю версию:

Установка OpenJDK 7, 8, 9

Бывают случаи, когда нужна не самая последняя версия, а, например, JDK7. Для Ubuntu\Debian актуальных репозитариев с данной версией уже нет. Поэтому для решения данной проблемы скачиваем нужную версию с официального сайта Oracle. Для того чтобы скачать JDK7 с сайта Oracle, необходимо зарегистрироваться на нем. После регистрации скачиваем архив на свой компьютер и любым удобным способом загружаем его на ваш сервер (с помощью rsync или scp, либо с помощью FTP-клиента) в директорию /usr/lib/java/ .

Далее на примере OpenJDK 7 покажем, как установить нужную версию. Установка OpenJDK 8 и 9 происходит аналогично.

Создадим директорию и перейдем в неё:

Скачаем архив и разархивируем его.

Если у вас компьютер с ОС Linux, можно сделать это, запустив с него rsync ( /home/user/downloads — путь к директории, где лежит архив с JDK7, а root@1.2.3.4 — пользователь и IP вашего сервера):

Если у вас компьютер с ОС Windows, можно использовать FTP. Подробнее про настройку FTP можно почитать здесь.

Далее на сервере, на котором необходимо установить JDK7, распаковываем архив:

Проверим версию Java:

В результате получим вывод:

Создаём символическую ссылку для того, чтобы не обращаться по полному пути к бинарному файлу:

CentOS 7\AlmaLinux 8\ RockyLinux 8\AlmaLinux 9\RockyLinux 9

Для CentOS, AlmaLinux и RockyLinux ситуация другая — в репозиториях хранятся только версии Java 1.7 и 1.8, установить их можно одной командой. Например, чтобы установить JDK 7-ой версии, введите команду:

В то же время, если нам требуется OpenJDK 8-ой версии, достаточно выполнить команду:

Рассмотрим установку более свежих версий OpenJDK на ОС CentOS, AlmaLinux и RockyLinux.

Для этого достаточно включить репозиторий epel:

После чего устанавливаем необходимую версию OpenJDK. Для установки версии 1.10 введите:

Установка и настройка Java на VDS

2. Ставим JavaDevelopmentKit следующей командой:

Подтверждаем установку

3. Ожидаем окончания установки Java и зависимостей

4. Проверяем установленную версию командой:

Различия в версиях

Существуют три различных версии Java различающихся между собой по назначению. Java SE (Standart Edition) — именно ей и посвящена данная статья Java EE (Enterprise Edition) Java ME (Micro Edition) Для каждой из версий есть две реализации базирующихся на сходной кодовой базе. Первая разрабатывается и поддерживается компанией Oracle, она содержит в себе некоторое количество проприетарного кода. Вторая же, известная как Open JDK, имеет полностью открытый исходный код и разрабатывается силами сообщества. Большинство Java приложений будут прекрасно работать с обоими реализациями. Так же хотелось бы обратить внимание на различия в пакетах которые необходимо установить в зависимости от потребностей. Существуют две разновидности: JDK и JRE.

  • JRE (Java Runtime Enviroment) — пакет содержащий в себе необходимое окружение и саму JVM (Java Virtual Machine), специальное ПО которое позволяет запускать Java приложения и апплеты вне зависимости от системы на которой вы это делаете.
  • JDK (Java Development Kit) — инструменты для разработчиков ПО, содержит в себе JRE.

Open JDK/JRE

Centos 7

Установить Open JRE в Centos 7 очень просто! Вам даже не придётся подключать дополнительные репозитории. Что бы увидеть все доступные версии openjdk, выполните нижеприведенную команду (здесь и далее приводится не полный вывод команд)

Всё что остётся сделать это выбрать необходимую версию и установить

В случае, если вам необходим Java Develompent Kit, просто добавьте -devel к имени пакета. Наример:

Debian 8

Перейдём к установке тех же пакетов в Debian. Актуальной на момент написания данной статьи является именно восьмая версия дистрибутива, процесс установки в Debian 7 или более ранних может немного отличаться. Для установки Open JDK или Open JRE, так же не потребуется подключать дополнительные источники.

В зависимости от задачи, устанавливаем интересующий мета-пакет, зависимости будут разрешены автоматически. Например установим JRE:

Ubuntu Server 14.04

Процесс установки будет мало чем отличаться от Debian 8, так как оба дистрибутива используют один и тот же менеджер пакетов apt. Имена пакетов так же идентичны, то есть вам остаётся выполнить всего два шага:

В обоих случаях, выбор пакетов default-jre / default-jdk, приведёт к установке стабильной, по мнению разработчиков дистрибутива, версии Java VM для данной платформы. В 99% случаев данный вариант подойдёт для вашего приложения. Если имеется необходимость использовать более новую версию пакета, тогда необходимо будет подключить репозитории с более свежими версиями пакетов для вашего дистрибутива. Однако в таком гарантировать стабильную работу приложений никто не сможет.

Oracle Java

Теперь давайте рассмотрим ситуацию, как происходит установка реализации Oracle Java.

Centos 7

К счастью, Oracle подготовили для нас rpm-пакет. Всё что от вас требуется это скачать и установить его с помощью rpm и wget. Покажем на примере установки Oracle Java 8, последней доступной версии с официального сайта. При этом, не имеет разницы что будем устанавливать JDK или JRE, различаются только ссылки на скачивание. Они будут приведены ниже, обратите внимание на параметры передаваемые в wget. Загружаем:

Ссылки для скачивания:

Debain 8

В случае установки Java Oracle, необходимо добавить репозиторий в систему. JDK 8 и JRE 8 устанавливаются одним пакетом

Ubuntu 14.04

Установка ещё проще чем в Debian, добавляем ppa, обновляем список пакетов и устанавливаем!

Как развернуть Java+MySQL (Docker) за полчаса и не уронить сервер

MySQL и Java-приложение (docker)

В качестве среды исполнения Java-приложений обычно используются серверы, у которых минимум 2 Гб оперативной памяти (не считая выделенной под ОС). Рассмотрим вариант запуска Java-приложения с базой данных MySQL на VDS-сервере «Danny» от Timeweb (1 Гб ОЗУ) без получения хорошо известной каждому «джависту» ошибки «Out of memory». Весь процесс от регистрации до запуска работающего Java-приложения с базой данных займет не более 15 минут!

Первым делом создаем VDS.

Выбираем конфигурацию ПО сервера – в нашем случае ОС Ubuntu (можно любую другую из предложенных) и «Docker».

Выбираем конфигурацию сервера «Danny» (2.8 ГГц CPU, 1Гб ОЗУ, 10Гб дискового пространства), которая является на момент написания статьи самым бюджетным вариантом.

Итак, мы создали сервер с установленным ПО «Docker».

Теперь нам необходима среда исполнения для нашего Java-приложения. Думали, дальше будет «оченьмноготекста» по установке и настройке Apache Tomcat? Нет. Думаю, на просторах интернета предостаточно материалов на данную тему, поэтому, чтобы не тратить время на полную установку Apache Tomcat, мы используем spring boot с embedded tomcat.

Далее нам необходима установленная версия Java для запуска приложения. Но мы, все по тем же причинам в духе «у меня нет времени, клиенты ждут работающий сайт еще до того как придумали Java как можно скорее», не будем устанавливать Java. Мы создадим docker-образ с нашим Java-приложением на основе docker-образа с уже установленной Java Runtime Environment 11 (JRE-11). Также такой подход делает наше приложение максимально портативным и хорошо масштабируемым.

Создаем простейший Dockerfile:

В данном файле описаны:

Копирование в docker-образ нашего приложения demo-1.0.war.

Установка рабочей директории «/usr/app».

Публикация порта 8080.

Команда, которая выполнится при запуске docker-контейнера.

Собираем docker-образ с помощью команды docker build и публикуем в своем репозитории.

Для разворачивания БД MySQL будем использовать официальный docker-образ «mysql:8.0.21».

Таким образом, у нас имеется:

Docker-образ нашего Java-приложения.

Docker-образ MySQL БД.

Теперь заходим удаленно (например, через Putty) на созданный VDS. С помощью команды docker pull загружаем docker-образы:

Вместо username необходимо написать свой docker-аккаунт.

Теперь запускаем docker-контейнеры (предварительно заменив some_name_mysql/some_password_mysql/some_name_java/username на свои значения):

Проверяем (IP-адрес берем из панели управления сервером):

Ура! Работает! Но где же «java.lang.OutOfMemoryError: Java heap space»?

Приведу скриншот показателей загрузки, полученных командой htop:

Для большей практической ценности показатели взяты с сервера, на котором установлено функционирующее боевое приложение (достаточно небольшое, но все же активно используемое). Как видите, суммарное потребление оперативной памяти превышает 1Гб, хотя на старте приложения это значение было

800Мб. Повышение потребления ОЗУ в ходе эксплуатации произошло в связи с созданием множества необходимых объектов и постоянным хранением их в памяти в целях оптимизации. Все это приводило к достижению лимита heap size и ошибке «Out of memory». Решение, как вы видите, состоит в подключении swap-пространства. Для этого выполните набор следующих команд:

Подведем итог. Мы получили работающее Java-приложение с базой данных MySQL на сервере Danny менее чем за 30 минут! И никаких непредвиденных «OutOfMemory».

Стоит добавить, что самое лучшее решение с точки зрения оптимизации – повышение конфигурации сервера до «Scarlett», на котором и дискового пространства в 3 раза больше (30Гб), и ОЗУ в 2 раза больше (2Гб), чего должно хватить для большинства небольших проектов.

Но с целью апробации услуг VDS, предоставляемых компанией Timeweb, временное решение, описанное в данной статье, более чем актуально даже для владельцев крупных enterprise-приложений (при необходимости можно увеличить размер swap-файла).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *