Деплой Java-приложения

    Команда Simple-Server
    03.06.2026
    11 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Настроим предустановленную Vesta

    Использовать для деплоя Java-приложений допускается любую панель управления. Но в данном случае остановимся на варианте Vesta Control Panel. И будем подключаться к хосту через утилиту Putty, поддерживающую защищенные соединения по протоколу SSH. В ней есть особенность – при вводе пароля курсор стоит на месте, но, на самом деле, он вводится. Итак, подключимся к пользователю с правами root. На экране монитора пользователь увидит следующее:

    После знака @ будет отображен настоящий IP-адрес хоста, к которому мы подключились. Теперь введем команды:

    sudo apt update sudo apt-get install wget

    Сразу зададим настройки панели управления:

    sudo nano /usr/local/vesta/conf/vesta.conf

    Если текстовый редактор nano еще не установлен, сделаем это командой:

    sudo apt-get install nano

    Кому больше нравится редактор vi, редактируйте конфигурацию с его помощью:

    sudo vi /usr/local/vesta/conf/vesta.conf

    В открытом файле добавим строку FILEMANAGER_KEY = 'ILOVEREO' (в самый конец). И еще одну – DB_SYSTEM – меняем на DB_SYSTEM=‘mysql,pgsql’. Закроем файл с сохранением и сразу же перезапустим веб-версию панели Vesta с выходом и повторным входом в аккаунт.

    Инсталлируем БД PostgreSQL в Ubuntu и Vesta Panel

    Теперь установим PostgreSQL. Выполняется это командой:

    sudo apt-get install postgresql postgresql-contrib phppgadmin

    Следом скачаем файлы конфигурации Vesta Control Panel:

    Перезагрузим процесс PostgreSQL:

    service postgresql restart

    Есть альтернативная команда:

    systemctl restart postgresql

    И зайдем в систему под пользователем postgres:

    Пароль устанавливается разными способами. Вот один из них:

    psql -c “ALTER USER postgres WITH PASSWORD ‘pgp4sw0rd'”

    При запросе вводим желаемый пароль. Например, то же буквосочетание pgp4sw0rd. Исходя из выбранного варианта возвращаемся к пользователю root. Если запутались, проще подключиться к хосту заново под нужным аккаунтом.

    Зарегистрируем PostgreSQL в Vesta:

    v-add-database-host pgsql localhost postgres pgp4sw0rd

    Скачаем настроечные файлы для phppgadmin:

    И перезапустим веб-модули:

    service apache2 restart service vesta restart service nginx restart

    Инсталлируем Java на Ubuntu

    Java нужна для запуска тестового проекта, собранного в JAR. Инсталляция произойдет по команде:

    sudo apt update sudo apt install openjdk-8-jdk

    На экране появится примерно следующее:

    openjdk version "1.8.0_292" OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~18.04-b10) OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

    Если установили не ту версию, ее легко удалить (на примере 1.8):

    sudo apt-get remove --auto-remove openjdk sudo apt-get autoremove openjdk-8-jre sudo apt-get autoremove openjdk-8-jdk sudo apt-get purge openjdk

    Настроим Mail, User, Domain, DNS и прочее через веб-панель Vesta

    Панель управления Vesta представляет собой продукт с графическим интерфейсом, где легко разобраться даже без инструкции. И на первом шаге создадим в ней новый аккаунт. Войдите в веб-версию панели под администратором, имеющим право на регистрацию других пользователей. Во вкладке USER создайте нового, указав его название в поле [username]. После сохранения настроек надо зайти в панель управления уже под ним.

    1. Подключим сайт. Кликнем на вкладку Web и там на Add web domain. Введем доменное имя своего ресурса без HTTP.
    2. Создадим email. Зайдем на вкладку Mail и сделаем новый ящик, например, с именем admin. На него будут поступать подтверждения, SSL-сертификат.
    3. Создадим новую БД PostgreSQL. Кликнем на графу DB и на Add database. По умолчанию Vesta задает имя базы данным с префиксом в виде названия текущего аккаунта. Если такое не устраивает, БД допускается добавлять вручную через код.
    4. Настроим DNS. Внесем значения адресов в соответствии с информацией, предоставленной провайдером. Кликнем на поле Default Name Servers и введем указанные данные. Затем зайдем на вкладку DNS и по клику Edit введем в поле SOA:

    5. Приобретем и настроим SSL-сертификат. Здесь мы предположим, что тот уже есть у нас, и остается только настроить его. Кликнем на вкладку Web, далее Edit и поставим галочку на SSL support. Заполним открывшиеся поля. Нажмем Save для завершения процедуры.

    Очередной этап пригодится тем, кто планирует запускать программы через нестандартные порты вместо стандартного 8080. В нашем эксперименте изменим значение в в файле application.properties на server.port=8099. Порт 80 обычно занят Nginx или Apache. При желании есть возможность создать переадресацию через файл .htaccess.

    Теперь подключимся по протоколу SSH к удаленному хосту с использованием аккаунта root. И сразу проверим каталог созданного ранее пользователя, точно ли он существует:

    ls -l /home/YOURUSER/conf/web/

    Система выдаст примерно такое сообщение:

    ssl.yourdomain.ca ssl.yourdomain.crt ssl.yourdomain.key ssl.yourdomain.pem yourdomain.apache2.conf yourdomain.apache2.ssl.conf yourdomain.nginx.conf yourdomain.nginx.ssl.conf

    Раз мы установили сертификат SSL, нужно настроить редирект с HTTP на HTTPS. Поэтому откроем файл nginx.conf:

    sudo nano /home/YOURUSER/conf/web/YOURDOMAIN.nginx.conf

    И в конце внесем строку (перед закрывающей скобкой):

    return 301 https://YOURDOMAIN$request_uri;

    Также включим перенаправление портов:

    sudo nano /home/YOURUSER/conf/web/YOURDOMAIN.nginx.ssl.conf

    В блоке location/, в поле proxy_pass меняем значение на предложенное выше – 8099.

    location / { proxy_pass      https://7.12.12.01:8099;

    То же надо сделать в блоке location@fallback proxy_pass:

    location @fallback { proxy_pass      https:// 7.12.12.01:8099; }

    Выйдите из файла с сохранением изменений. И перезапустите процессы:

    service apache2 restart service vesta restart service nginx restart

    Подготовим приложение Java для развертывания

    Мы подошли к моменту настройки приложения Java. На этом этапе чаще и возникают ситуации, когда ряд настроек не подходит. Если это так, вам придется подбирать их самостоятельно. Здесь же придерживаемся нашего плана. А в нем подразумевается, что инсталлирована система Windows без дополнительных компонентов. Если что-то из перечисленного ниже уже есть, пропускаем соответствующую инструкцию.

    Последовательность действий:

    1. Инсталлируем git. Сначала его нужно скачать с официального сайта. Процесс не вызывает проблем, достаточно после запуска файла кликать Next до завершения настройки. При затруднениях легко найти видео с подробной инструкцией.
    2. Инсталлируем maven. Та же ситуация, что с git.
    3. Настроим проект. Скачаем файл pfx, взятый с сайта, откуда получен сертификат. Положим его в каталог, например, «scr> main> resources». Он понадобится для работы по протоколу HTTPS.
    4. Добавим в блок application.properties строки:
    server.port=8099 # Порт, на котором будет запущено приложение server.ssl.key-store-type=PKCS12 # Метод шифрования server.ssl.key-store=classpath:namefile.pfx # Путь к файлу pfx, где namefile – имя вашего домена (лучше не менять имя файла) server.ssl.key-store-password=MyPassword # Пароль к файлу pfx указан на сайте, где вам выдавали сертификат server.ssl.enabled=true # Включаем SSL trust.store=classpath:namefile.pfx # Путь к файлу pfx, где namefile – имя вашего домена (лучше не менять имя файла) trust.store.password=MyPassword # Пароль к файлу pfx указан на сайте, где вам выдавали сертификат #log4j для логирования ошибок String //. log4j.rootLogger=INFO log4j.logger.org.hibernate.type.descriptor.sql=TRACE

    trust.store исправляет в проекте некоторые проблемы с сертификацией.

    5. Далее в файле pom.xml добавим зависимости:

    6. Перейдем в класс WebSecurityConfig и добавим строки:

    @Value("${trust.store}") private Resource trustStore; @Value("${trust.store.password}") private String trustStorePassword; @Bean public RestTemplate restTemplateWithTrustStore(RestTemplateBuilder builder) throws IOException, CertificateException, NoSuchAlgorithmException, KeyStoreException, KeyManagementException { SSLContext sslContext = new SSLContextBuilder() .loadTrustMaterial(trustStore.getURL(), trustStorePassword.toCharArray()) .build(); SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext); HttpClient httpClient = HttpClients.custom() .setSSLSocketFactory(socketFactory) .build(); return builder .requestFactory(() -> new HttpComponentsClientHttpRequestFactory(httpClient)) .build(); }

    Осуществим деплой приложения Java

    Теперь о самом интересном. Начнем с подготовки скрипта для сборки и развертывания приложения. Создадим файл deploy.sh и внесем в него строки:

    #!/usr/bin/env bash mvn clean package echo 'Copy files...' scp PATHTOTARGET/target/NAMEFILE.jar \ root@IP:/home/USER/web/DOMAIN/public_shtml echo 'Restart server...' ssh -t root@IP << EOF pgrep java | xargs kill -9 nohup java -jar /home/USER/web/DOMAIN/public_shtml/NAMEFILE.jar > /home/USER/web/DOMAIN/log.txt & EOF echo 'Bye'

    Подробнее об используемых переменных:

    1. PATHTOTARGET – путь к каталогу с проектом.
    2. NAMEFILE.jar – наименование файла с приложением.
    3. IP – адрес нашего хоста.
    4. USER – наименование пользователя, созданного выше.
    5. DOMAIN – доменное имя сайта.

    Важно! Лог-файлы, в которых система записывает события запуска и работы веб-приложений, найдутся в каталоге /home/USER/web/DOMAIN/log.txt.

    Переходим к запуску созданного скрипта. Откроем ранее инсталлированный git bash, перейдем в каталог, где размещено приложение, и введем команду:

    Начнется процесс запаковки при помощи maven. Если все ранее описанное сделано без ошибок, то оно пройдет безостановочно. Система пару раз запросит пароль пользователя root – для копирования и для развертывания приложения. Все, теперь смело открывайте его через браузер.

    Разверните базу данных в облаке

    Инструментарий для развертывания веб-приложений относительно «скромный», поэтому его легко освоить даже без опытных наставников. Важно учитывать, что перечисленные выше операции при отсутствии домена можно «заточить» на IP-адрес сервера. Работать приложение будет одинаково, разницу заметят только пользователи, которым удобнее вводить доменное имя.

    Кстати, в официальном канале Simple-Server собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать.


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны