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

Что делает этот гид
- Пошаговая установка и настройка 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:
- Приложение: http://your-server-ip:8080

Админ-консоль доступна на порту 4848:
- Админ: http://your-server-ip:4848

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

Деплой приложения на 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

Настройка 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.comCertbot автоматически обновит конфигурацию Nginx и настроит редирект с HTTP на HTTPS.
Важно: не проксируйте административную консоль через публичный Nginx без дополнительной защиты.
Рекомендации по безопасности
- Отключите или ограничьте доступ к порту 4848 (админ) через firewall или прокси только для доверенных адресов.
- Обновляйте Java и компоненты ОС регулярно.
- Используйте strong ciphers и HSTS в конфигурации Nginx.
- Настройте резервное копирование каталога domain и файлов конфигурации GlassFish.
Техническая памятка и чеклист для оперативного развёртывания
- Подготовка сервера: обновить пакеты, установить wget, unzip.
- Установить и зарегистрировать Java 8.
- Распаковать GlassFish в /opt и создать systemd unit.
- Запустить glassfish, установить admin password и enable-secure-admin.
- Деплой WAR через asadmin.
- Установить Nginx, создать виртуальный хост и настроить проксирование.
- Получить HTTPS сертификат и ограничить доступ к консоли.
Алгоритм отката и отработка инцидента
Если после изменений приложение перестало работать:
- Проверить логи GlassFish: /opt/glassfish5/glassfish/domains/domain1/logs/server.log
- Проверить статус службы systemd: systemctl status glassfish
- Откат последних изменений конфигурации Nginx (удалить новый vhost) и перезапустить Nginx.
- Восстановить конфигурацию domain из бэкапа (если есть) и перезапустить glassfish.
- При проблемах с 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 и ограничении доступа к административной панели.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента