Гид по технологиям

Установка GlassFish на Debian 10 с Nginx в качестве обратного прокси

• 5 min read • DevOps • Обновлено 24 Nov 2025
GlassFish на Debian 10 с Nginx
GlassFish на Debian 10 с Nginx

Иллюстрация сервера GlassFish

Что делает этот гид

  • Пошаговая установка и настройка GlassFish v5 на Debian 10.
  • Настройка Nginx как обратного прокси, чтобы внешние запросы шли на порт 80, а GlassFish слушал 8080.
  • Создание systemd‑сервиса, включение secure admin, деплой примера и проверка работоспособности.

Требования

  • Сервер с Debian 10.
  • Доступ root или пользователь с sudo.

Перед началом

Обновите систему до актуального состояния и перезагрузите сервер при необходимости:

apt-get update -y  
apt-get upgrade -y

Перезагрузите сервер, если обновления включали ядро или критические службы.

Установка Java

GlassFish требует Java 8. Если у вас установлена более новая Java (например, OpenJDK 11), удалите её перед установкой Java 8.

Удаление OpenJDK 11:

apt-get remove openjdk-11-jre-headless

Скачайте JDK 8 с официального сайта Oracle или используйте архив, который у вас есть. После загрузки распакуйте его в каталог /usr/lib/jvm:

mkdir /usr/lib/jvm/  
tar -zxvf jdk-8u221-linux-x64.tar.gz -C /usr/lib/jvm/

Зарегистрируйте установленную Java как альтернативу по умолчанию:

update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_221/bin/java 1

Ожидаемый вывод:

update-alternatives: using /usr/lib/jvm/jdk1.8.0_221/bin/java to provide /usr/bin/java (java) in auto mode

Проверьте версию Java:

java -version

Ожидаемый вывод:

java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)

Важно: используйте Java 8, иначе GlassFish 5 может работать некорректно.

Установка GlassFish

Установите утилиты для загрузки и распаковки архива:

apt-get install wget unzip -y

Скачайте GlassFish (пример указан для 5.0.1 nightly):

wget http://download.oracle.com/glassfish/5.0.1/nightly/latest-glassfish.zip

После загрузки распакуйте в /opt:

unzip latest-glassfish.zip -d /opt/

Создание systemd‑сервиса для GlassFish

Создайте unit-файл systemd, чтобы управлять сервером как службой:

nano /etc/systemd/system/glassfish.service

Добавьте следующее содержимое (сохраните файл):

[Unit]
Description = GlassFish Server v5.0
After = syslog.target network.target

[Service]
ExecStart=/opt/glassfish5/bin/asadmin start-domain
ExecReload=/opt/glassfish5/bin/asadmin restart-domain
ExecStop=/opt/glassfish5/bin/asadmin stop-domain
Type = forking

[Install]
WantedBy = multi-user.target

Перезагрузите демон systemd и запустите службу:

systemctl daemon-reload
systemctl start glassfish
systemctl enable glassfish

Проверка статуса:

systemctl status glassfish

Ожидаемый образец вывода (сокращён):

? glassfish.service - GlassFish Server v5.0
   Loaded: loaded (/etc/systemd/system/glassfish.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-09-19 04:54:25 EDT; 42s ago
  Process: 15205 ExecStart=/opt/glassfish5/bin/asadmin start-domain (code=exited, status=0/SUCCESS)
 Main PID: 15217 (java)

Включение административной консоли и secure admin

По умолчанию пароль администратора не установлен. Установите пароль:

/opt/glassfish5/bin/asadmin change-admin-password

Вас попросят ввести имя пользователя и пароль. После этого включите secure admin:

/opt/glassfish5/bin/asadmin enable-secure-admin

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

systemctl restart glassfish

Важно: включение secure admin защищает административные операции и обязательно при публикации сервера в интернет.

Доступ к GlassFish

Приложение по умолчанию доступно на порту 8080:

Страница по умолчанию GlassFish

Админ-консоль доступна на порту 4848:

Страница входа в админку GlassFish

После входа вы увидите консоль управления:

Консоль администрирования GlassFish

Деплой приложения на GlassFish

Пример: скачиваем и деплоим hello.war

wget https://github.com/dmatej/Glassfish/raw/master/v2/www/downloads/quickstart/hello.war
/opt/glassfish5/bin/asadmin deploy hello.war

В процессе деплоя вы увидите вывод с информацией о сертификате и подтверждение успешного деплоя. После этого приложение будет доступно по адресу:

http://your-server-ip:8080/hello

Hello World app on GlassFish

Настройка Nginx как обратного прокси

Установите Nginx:

apt-get install nginx -y

Создайте конфигурационный файл для виртуального хоста:

nano /etc/nginx/sites-available/glassfish.conf

Пример содержимого:

upstream glassfish {
  server 127.0.0.1:8080 weight=100 max_fails=5 fail_timeout=5;
}

server {
  listen          80;
  server_name     example.com;

  location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://glassfish/hello/;
  }
}

Проверьте конфигурацию Nginx и перезапустите:

nginx -t
ln -s /etc/nginx/sites-available/glassfish.conf /etc/nginx/sites-enabled/
systemctl restart nginx

Теперь приложение будет доступно по адресу http://example.com.

Примечание: замените example.com на ваш домен. При необходимости настройте DNS и firewall.

Защита и выпуск HTTPS сертификата

Рекомендуется не оставлять публичный GlassFish без HTTPS и ограничить доступ к административной консоли по IP или VPN.

Короткая инструкция по HTTPS с помощью Certbot и Nginx:

apt-get install certbot python3-certbot-nginx -y
certbot --nginx -d example.com

Certbot автоматически обновит конфигурацию Nginx и настроит редирект с HTTP на HTTPS.

Важно: не проксируйте административную консоль через публичный Nginx без дополнительной защиты.

Рекомендации по безопасности

  • Отключите или ограничьте доступ к порту 4848 (админ) через firewall или прокси только для доверенных адресов.
  • Обновляйте Java и компоненты ОС регулярно.
  • Используйте strong ciphers и HSTS в конфигурации Nginx.
  • Настройте резервное копирование каталога domain и файлов конфигурации GlassFish.

Техническая памятка и чеклист для оперативного развёртывания

  1. Подготовка сервера: обновить пакеты, установить wget, unzip.
  2. Установить и зарегистрировать Java 8.
  3. Распаковать GlassFish в /opt и создать systemd unit.
  4. Запустить glassfish, установить admin password и enable-secure-admin.
  5. Деплой WAR через asadmin.
  6. Установить Nginx, создать виртуальный хост и настроить проксирование.
  7. Получить HTTPS сертификат и ограничить доступ к консоли.

Алгоритм отката и отработка инцидента

Если после изменений приложение перестало работать:

  1. Проверить логи GlassFish: /opt/glassfish5/glassfish/domains/domain1/logs/server.log
  2. Проверить статус службы systemd: systemctl status glassfish
  3. Откат последних изменений конфигурации Nginx (удалить новый vhost) и перезапустить Nginx.
  4. Восстановить конфигурацию domain из бэкапа (если есть) и перезапустить glassfish.
  5. При проблемах с Java — временно переключиться на альтернативную установленную версию через update-alternatives.

Критерии приёмки

  • GlassFish запущен и активен: systemctl status glassfish показывает active (running).
  • Приложение доступно на http://example.com и на http://your-server-ip:8080/hello.
  • Админ-консоль доступна только для авторизованных и защищена HTTPS.

Альтернативные подходы

  • Запуск GlassFish в контейнере Docker. Удобно для изоляции и упрощённого мигрирования.
  • Использование Apache httpd вместо Nginx в роли обратного прокси, если в инфраструктуре уже используется Apache.
  • Переход на Payara (форк GlassFish с коммерческой поддержкой) для продакшн‑окружений с SLA.

Роли и чеклисты

Администратор сервера:

  • Убедиться в наличии резервных копий.
  • Проверить порты и правила firewall.
  • Обновлять пакеты и Java.

Разработчик приложения:

  • Подготовить WAR-файл.
  • Тестировать приложение локально на Tomcat/GlassFish.
  • Выполнять деплой через asadmin и проверять логи.

Краткий глоссарий

  • GlassFish — сервер приложений Java EE/Jakarta EE.
  • asadmin — командная утилита управления GlassFish.
  • WAR — Web ARchive, формат упаковки Java web-приложений.

Частые ошибки и как их решить

  • Проблема: «Address already in use» при запуске GlassFish. Причина: порт 8080 занят — проверьте процессы и остановите конфликтующий сервис.
  • Проблема: Nginx возвращает 502 Bad Gateway. Причина: GlassFish не запущен или слушает другой адрес/порт.
  • Проблема: Админ-консоль недоступна после включения secure admin. Решение: убедитесь, что GlassFish перезапущен и firewall не блокирует 4848.

Короткое руководство по масштабированию

  • Для масштабирования приложений используйте несколько инстансов GlassFish за балансировщиком (Nginx или аппаратный LB).
  • Храните сессии вне процессов (Redis, Sticky sessions при необходимости) для обеспечения устойчивости.

Итог

Вы успешно установили GlassFish на Debian 10 и настроили Nginx как обратный прокси. Дальше можно автоматизировать развертывание с помощью скриптов/Ansible, добавить мониторинг и централизованные логи для продакшн‑окружения.

Важно: перед публикацией в интернет убедитесь в корректной настройке HTTPS и ограничении доступа к административной панели.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро