Установка GlassFish с Nginx на Debian 11

GlassFish — это сервер приложений с открытым исходным кодом для развёртывания Java-приложений. Он поддерживает JPA, JavaServer Faces, JMS, RMI и другие Java-технологии. Доступно как веб-интерфейс, так и командная строка для управления приложениями и компонентами. GlassFish позволяет создавать переносимые и масштабируемые приложения, которые можно интегрировать с устаревшими системами.
Предварительные требования
- Сервер с Debian 11.
- Действительный домен, указывающий на IP сервера.
- Настроен root-пароль или привилегии sudo.
Установка Java
GlassFish требует установленную JDK. Установите её и unzip командой:
apt-get install default-jdk unzip -yПроверьте установку Java:
java --versionОжидаемый пример вывода:
openjdk 11.0.13 2021-10-19
OpenJDK Runtime Environment (build 11.0.13+8-post-Debian-1deb11u1)
OpenJDK 64-Bit Server VM (build 11.0.13+8-post-Debian-1deb11u1, mixed mode, sharing)После успешной установки переходите к загрузке GlassFish.
Загрузка GlassFish
Скачайте последнюю версию GlassFish с сайта Eclipse (пример для версии 6.1.0):
wget https://download.eclipse.org/ee4j/glassfish/glassfish-6.1.0.zipРаспакуйте архив в каталог /opt:
unzip glassfish-6.1.0.zip -d /opt/Создание systemd-сервиса для GlassFish
Создайте unit-файл systemd для управления сервисом:
nano /usr/lib/systemd/system/glassfish.serviceВставьте в него:
[Unit]
Description = GlassFish Server v6.1.0
After = syslog.target network.target
[Service]
User = root
ExecStart = /usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar start-domain
ExecStop = /usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar stop-domain
ExecReload = /usr/bin/java -jar /opt/glassfish6/glassfish/lib/client/appserver-cli.jar restart-domain
Type = forking
[Install]
WantedBy = multi-user.targetСохраните файл и перезагрузите демон systemd:
systemctl daemon-reloadЗапустите сервис и включите автозапуск:
systemctl start glassfish
systemctl enable glassfishПроверьте статус:
systemctl status glassfishПример ожидаемого фрагмента вывода показывает, что domain1 запущен и доступен (Admin Port: 4848).
Установка пароля администратора GlassFish
По умолчанию GlassFish доступен без пароля. Защитите админ-интерфейс и включите secure admin:
/opt/glassfish6/bin/asadmin --port 4848 change-admin-passwordПри запросе укажите имя пользователя (по умолчанию admin), затем текущий пароль (Enter, если не задан) и новый пароль дважды. Вы должны увидеть сообщение об успешном завершении:
Command change-admin-password executed successfully.Затем включите защищённый доступ (HTTPS) для админ-интерфейса:
/opt/glassfish6/bin/asadmin --port 4848 enable-secure-adminВведите имя пользователя и пароль. Затем перезапустите GlassFish:
systemctl restart glassfishВажно: после включения secure-admin требуется перезапуск всех серверов GlassFish.
Доступ к веб-интерфейсу GlassFish
По умолчанию веб-интерфейс GlassFish слушает порт 8080, админ-интерфейс — 4848.
Откройте:
- http://your-server-ip:8080 — публичный веб-интерфейс

- https://your-server-ip:4848 — админ-интерфейс (потребует логин)

Войдите с помощью admin и установленного пароля. После входа вы увидите панель управления GlassFish:

Переход в раздел server покажет общую информацию и кнопки управления:

Раздел Nodes покажет информацию о нодах кластера:

Настройка Nginx как обратного прокси для GlassFish
Чтобы доступ к приложениям был по стандартному порту 80/443, настройте Nginx как reverse proxy.
Установите Nginx:
apt-get install nginx -yСоздайте конфигурацию виртуального хоста:
nano /etc/nginx/conf.d/glassfish.confДобавьте:
upstream glassfish {
server 127.0.0.1:8080 weight=100 max_fails=5 fail_timeout=5;
}
server {
listen 80;
server_name glassfish.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
systemctl restart nginx
systemctl status nginxЕсли всё настроено верно, ваш сайт станет доступен по адресу http://glassfish.example.com.
Важно: в proxy_pass конечный слэш влияет на поведение маршрутизации. Тестируйте пути приложения.
Безопасность и рекомендации по hardening
Важно уделить внимание безопасности при развёртывании:
- Запустите GlassFish от непользователя root. Создайте системного пользователя например glassfish и поменяйте User в unit-файле.
- Разрешите доступ к админ-порту 4848 только из доверенных подсетей (firewall или iptables).
- Включите HTTPS перед публичным доступом: используйте Certbot для получения сертификата Let’s Encrypt и интеграции с Nginx.
- Установите certbot: apt-get install certbot python3-certbot-nginx -y
- Выполните: certbot –nginx -d glassfish.example.com
- Закройте неиспользуемые порты и ограничьте доступ через firewall (ufw или iptables).
- Регулярно обновляйте систему и JDK: apt-get update && apt-get upgrade.
- Включите аудит логов и мониторинг (например, Prometheus + Grafana или ELK).
Альтернативные подходы и масштабирование
- Использовать Apache httpd вместо Nginx как обратный прокси.
- Разворачивать GlassFish в контейнере Docker и ставить Nginx/Ingress поверх Kubernetes для оркестрации.
- Использовать HAProxy перед GlassFish для балансировки нагрузки.
- Если приложение лёгкое и контейнеризовано, лучше использовать Tomcat/Jetty или облачный PaaS.
Когда этот подход не подходит
- Для микросервисов и облачных нативных приложений лучше Kubernetes.
- Если требуется высокая плотность многоплатформенных контейнеров — контейнеризация предпочтительнее.
- Если у вас нет опыта управления JVM-серверами — рассмотрите управляемые сервисы.
Критерии приёмки
- systemctl status glassfish показывает Active: active (running).
- Веб-интерфейс по http://your-server-ip:8080 отвечает.
- Админ-интерфейс доступен по HTTPS: https://your-server-ip:4848 и требует логин.
- Домен glassfish.example.com корректно резолвится и отдаёт приложение через Nginx.
- Логи GlassFish не содержат критических ошибок при запуске (проверить /opt/glassfish6/glassfish/domains/domain1/logs/server.log).
Чек-листы по ролям
Администратор:
- Установить JDK и GlassFish.
- Создать systemd-сервис и запустить сервис.
- Настроить firewall и HTTPS.
Операции (Ops):
- Настроить мониторинг и бэкапы.
- Регулярные обновления и проверка логов.
Разработчик:
- Проверить корректность проксирования путей приложения.
- Тестировать деплой приложения в домене domain1.
Методология развертывания — краткий план
- Установить JDK и unzip.
- Скачать и распаковать GlassFish в /opt.
- Создать systemd unit, запустить сервис.
- Установить админ-пароль и включить secure admin.
- Установить Nginx и настроить virtual host.
- Настроить HTTPS и firewall.
- Тестирование и приёмка.
Частые проблемы и способы устранения
- GlassFish не стартует: проверьте права доступа в /opt/glassfish6 и лог /opt/glassfish6/glassfish/domains/domain1/logs/server.log.
- Конфликт порта 8080: проверьте, не занят ли порт другой службой (ss -tulpn | grep 8080).
- Nginx возвращает 502 Bad Gateway: проверьте, слушает ли GlassFish на 127.0.0.1:8080 и корректен ли upstream.
- Проблемы с проксированием путей: проверьте trailing slash в proxy_pass.
Краткая памятка (fact box)
- Порты: HTTP 8080, Admin 4848, Nginx 80/443.
- Рекомендуемая минимальная JDK: 11.
- Путь установки: /opt/glassfish6.
Словарь в одну строку
- GlassFish — сервер приложений Java EE / Jakarta EE.
- Nginx — высокопроизводительный веб-сервер и обратный прокси.
- asadmin — CLI-инструмент управления GlassFish.
- domain — логическая область в GlassFish, содержащая конфигурацию и приложения.
- reverse proxy — прокси, который принимает внешние запросы и пересылает их внутренним серверам.
Заключение
Поздравляем — вы установили GlassFish и настроили Nginx как обратный прокси на Debian 11. Далее протестируйте доступ к приложениям, настройте HTTPS и мониторинг. Если возникнут вопросы по ошибкам запуска, проксированию или безопасности — уточните подробности окружения, и я помогу с диагностикой.
Важно: после публичного развёртывания обязательно ограничьте доступ к админ-интерфейсу и примените HTTPS.
Сводка шагов для быстрой проверки:
- systemctl status glassfish
- curl -I http://localhost:8080
- curl -I http://glassfish.example.com
- sudo tail -n 200 /opt/glassfish6/glassfish/domains/domain1/logs/server.log
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента