Развертывание исполняемого кода на сервере (деплой, от англ. – deploy), где ему предстоит работать, часто вызывает массу вопросов у начинающих разработчиков и системных администраторов. В этом материале мы собрали необходимый гайд, способный помочь развернуть проект без участия коллег с большим опытом. Понятно, что он не совсем универсальный, в ряде случаев придется интерпретировать информацию по-своему, с ориентиром на специфику системы.
Эксперименты можно проводить на облачных серверах провайдера Timeweb Cloud, у которого есть различные тарифы. Есть предложения по готовым решениям и чистые виртуальные машины. Для деплоя Java-приложения на сервер понадобится работающее приложение, созданное на Java с использованием фреймворка Spring Boot. Предполагаем, что разработка ведется на платформе Windows 10 с установленными PostgreSQL, Apache, Maven, Git Bash.
На удаленном хосте должны быть установлены Ubuntu, Nginx, сертификат SSL и панель управления Vesta. Сразу отметим, что в зависимости от версии Java возможны «нестыковки» с операционкой, поэтому при использовании другого релиза вы, возможно, столкнетесь с ошибками. Тогда каждый разбирается в ситуации самостоятельно или с помощью специалистов техподдержки провайдера.
Настроим предустановленную Vesta
Использовать для деплоя Java-приложений допускается любую панель управления. Но в данном случае остановимся на варианте Vesta Control Panel. И будем подключаться к хосту через утилиту Putty, поддерживающую защищенные соединения по протоколу SSH. В ней есть особенность – при вводе пароля курсор стоит на месте, но, на самом деле, он вводится. Итак, подключимся к пользователю с правами root. На экране монитора пользователь увидит следующее:
После знака @ будет отображен настоящий IP-адрес хоста, к которому мы подключились. Теперь введем команды:
Сразу зададим настройки панели управления:
Если текстовый редактор nano еще не установлен, сделаем это командой:
Кому больше нравится редактор vi, редактируйте конфигурацию с его помощью:
В открытом файле добавим строку FILEMANAGER_KEY = 'ILOVEREO' (в самый конец). И еще одну – DB_SYSTEM – меняем на DB_SYSTEM=‘mysql,pgsql’. Закроем файл с сохранением и сразу же перезапустим веб-версию панели Vesta с выходом и повторным входом в аккаунт.
Инсталлируем БД PostgreSQL в Ubuntu и Vesta Panel
Теперь установим PostgreSQL. Выполняется это командой:
Следом скачаем файлы конфигурации Vesta Control Panel:
Перезагрузим процесс PostgreSQL:
Есть альтернативная команда:
И зайдем в систему под пользователем postgres:
Пароль устанавливается разными способами. Вот один из них:
Вот второй:
При запросе вводим желаемый пароль. Например, то же буквосочетание pgp4sw0rd. Исходя из выбранного варианта возвращаемся к пользователю root. Если запутались, проще подключиться к хосту заново под нужным аккаунтом.
Зарегистрируем PostgreSQL в Vesta:
Скачаем настроечные файлы для phppgadmin:
И перезапустим веб-модули:
DBaaS
оптимизируйте процессы DevOps и CI/CD.
Инсталлируем Java на Ubuntu
Java нужна для запуска тестового проекта, собранного в JAR. Инсталляция произойдет по команде:
Проверим версию Java:
На экране появится примерно следующее:
Если установили не ту версию, ее легко удалить (на примере 1.8):
Настроим Mail, User, Domain, DNS и прочее через веб-панель Vesta
Панель управления Vesta представляет собой продукт с графическим интерфейсом, где легко разобраться даже без инструкции. И на первом шаге создадим в ней новый аккаунт. Войдите в веб-версию панели под администратором, имеющим право на регистрацию других пользователей. Во вкладке USER создайте нового, указав его название в поле [username]. После сохранения настроек надо зайти в панель управления уже под ним.
Последующие шаги:
- Подключим сайт. Кликнем на вкладку Web и там на Add web domain. Введем доменное имя своего ресурса без HTTP.
- Создадим email. Зайдем на вкладку Mail и сделаем новый ящик, например, с именем admin. На него будут поступать подтверждения, SSL-сертификат.
- Создадим новую БД PostgreSQL. Кликнем на графу DB и на Add database. По умолчанию Vesta задает имя базы данным с префиксом в виде названия текущего аккаунта. Если такое не устраивает, БД допускается добавлять вручную через код.
- Настроим DNS. Внесем значения адресов в соответствии с информацией, предоставленной провайдером. Кликнем на поле Default Name Servers и введем указанные данные. Затем зайдем на вкладку DNS и по клику Edit введем в поле SOA:
5. Приобретем и настроим SSL-сертификат. Здесь мы предположим, что тот уже есть у нас, и остается только настроить его. Кликнем на вкладку Web, далее Edit и поставим галочку на SSL support. Заполним открывшиеся поля. Нажмем Save для завершения процедуры.
Настроим Nginx
Очередной этап пригодится тем, кто планирует запускать программы через нестандартные порты вместо стандартного 8080. В нашем эксперименте изменим значение в в файле application.properties на server.port=8099. Порт 80 обычно занят Nginx или Apache. При желании есть возможность создать переадресацию через файл .htaccess.
Теперь подключимся по протоколу SSH к удаленному хосту с использованием аккаунта root. И сразу проверим каталог созданного ранее пользователя, точно ли он существует:
Система выдаст примерно такое сообщение:
Раз мы установили сертификат SSL, нужно настроить редирект с HTTP на HTTPS. Поэтому откроем файл nginx.conf:
И в конце внесем строку (перед закрывающей скобкой):
Также включим перенаправление портов:
В блоке location/, в поле proxy_pass меняем значение на предложенное выше – 8099.
То же надо сделать в блоке location@fallback proxy_pass:
Выйдите из файла с сохранением изменений. И перезапустите процессы:
Подготовим приложение Java для развертывания
Мы подошли к моменту настройки приложения Java. На этом этапе чаще и возникают ситуации, когда ряд настроек не подходит. Если это так, вам придется подбирать их самостоятельно. Здесь же придерживаемся нашего плана. А в нем подразумевается, что инсталлирована система Windows без дополнительных компонентов. Если что-то из перечисленного ниже уже есть, пропускаем соответствующую инструкцию.
Последовательность действий:
- Инсталлируем git. Сначала его нужно скачать с официального сайта. Процесс не вызывает проблем, достаточно после запуска файла кликать Next до завершения настройки. При затруднениях легко найти видео с подробной инструкцией.
- Инсталлируем maven. Та же ситуация, что с git.
- Настроим проект. Скачаем файл pfx, взятый с сайта, откуда получен сертификат. Положим его в каталог, например, «scr> main> resources». Он понадобится для работы по протоколу HTTPS.
- Добавим в блок application.properties строки:
trust.store исправляет в проекте некоторые проблемы с сертификацией.
5. Далее в файле pom.xml добавим зависимости:
6. Перейдем в класс WebSecurityConfig и добавим строки:
Осуществим деплой приложения Java
Теперь о самом интересном. Начнем с подготовки скрипта для сборки и развертывания приложения. Создадим файл deploy.sh и внесем в него строки:
Подробнее об используемых переменных:
- PATHTOTARGET – путь к каталогу с проектом.
- NAMEFILE.jar – наименование файла с приложением.
- IP – адрес нашего хоста.
- USER – наименование пользователя, созданного выше.
- DOMAIN – доменное имя сайта.
Важно! Лог-файлы, в которых система записывает события запуска и работы веб-приложений, найдутся в каталоге /home/USER/web/DOMAIN/log.txt.
Переходим к запуску созданного скрипта. Откроем ранее инсталлированный git bash, перейдем в каталог, где размещено приложение, и введем команду:
Начнется процесс запаковки при помощи maven. Если все ранее описанное сделано без ошибок, то оно пройдет безостановочно. Система пару раз запросит пароль пользователя root – для копирования и для развертывания приложения. Все, теперь смело открывайте его через браузер.
Разверните базу данных в облаке
447 ₽/мес
711 ₽/мес
Выводы
Инструментарий для развертывания веб-приложений относительно «скромный», поэтому его легко освоить даже без опытных наставников. Важно учитывать, что перечисленные выше операции при отсутствии домена можно «заточить» на IP-адрес сервера. Работать приложение будет одинаково, разницу заметят только пользователи, которым удобнее вводить доменное имя.
Кстати, в официальном канале Timeweb Cloud собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать.
