Рубрики
Без рубрики

Как установить Payara 5 с помощью NGINX и давайте зашифруем через Oracle Linux 7.x

Исходя из опыта работы на местах, я должен подтвердить, что одной из лучших и стабильных комбинаций является Java Applet… Помеченный java.

Исходя из опыта работы на местах, я должен подтвердить, что одной из лучших и стабильных комбинаций являются серверы приложений Java + Обратные прокси, хотя некоторые функциональные возможности явно пересекаются, я склонен размещать обратные прокси перед серверами приложений по следующим причинам ( пожалуйста, смотрите страницу NGINX для получения более подробной информации ):

  • Балансировка нагрузки: Обратный прокси-сервер действует как регулировщик трафика и может использоваться в качестве шлюза API для кластеризованных экземпляров/резервных служб
  • Веб-ускорение: Большинство наших приложений в настоящее время используют фреймворки SPA, поэтому стоит кэшировать все файлы js/css/html и освободить сервер приложений от этой ответственности
  • Безопасность: Большинство HTTP-запросов могут быть перехвачены обратным прокси-сервером перед любой попыткой атаковать сервер приложений, увеличивая возможность определения правил
  • Управление SSL: Проще устанавливать/управлять/развертывать сертификаты OpenSSL в Apache/NGINX по сравнению с Хранилищами ключей Java . Помимо этого, Давайте зашифруем официально поддержим NGINX с помощью плагинов.

Требования

Чтобы продемонстрировать эту функциональность, в этом руководстве объединен следующий стек классическим (не докерским) способом, однако большинство концепций могут быть полезны для развертывания Docker:

  • Пайара 5 в качестве сервера приложений
  • NGINX как обратный прокси-сервер
  • Давайте зашифруем SSL-сертификаты

Предполагается, что во время этого руководства будет использоваться чистый блок Oracle Linux 7.x (7.6), а тесты будут выполняться через Oracle Cloud с помощью root user.

Подготовка операционной системы

Поскольку Oracle Linux двоично совместим с RHEL, для получения доступа к Let’s Encrypt будет добавлен репозиторий EPEL . Также полезно обновить операционную систему в качестве предыдущего шага:

yum -y update
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

Настройка Payara 5

Для установки сервера приложений Payara потребуется несколько зависимостей, в частности Java Developer Kit. Например, OpenJDK включен в репозитории Oracle Linux.

yum -y install java-1.8.0-openjdk-headless
yum -y install wget
yum -y install unzip

Как только все зависимости установлены, пришло время загрузить, распаковать и установить Payara. Он будет расположен по адресу /opt следование стандартным соглашениям Linux для внешних пакетов:

cd /opt
wget -O payara-5.191.zip https://search.maven.org/remotecontent?filepath=fish/payara/distributions/payara/5.191/payara-5.191.zip
unzip payara-5.191.zip
rm payara-5.191.zip

Также полезно создать пользователя payara для административных целей, для администрирования домена (доменов) или для запуска Payara как службы Linux с systemd:

adduser payara
chown -R payara:payara payara5
echo 'export PATH=$PATH:/opt/payara5/glassfish/bin' >> /home/payara/.bashrc
chown payara:payara /home/payara/.bashrc

Также необходим системный блок:

echo '[Unit]
Description = Payara Server v5
After = syslog.target network.target

[Service]
User=payara
ExecStart = /usr/bin/java -jar /opt/payara5/glassfish/lib/client/appserver-cli.jar start-domain
ExecStop = /usr/bin/java -jar /opt/payara5/glassfish/lib/client/appserver-cli.jar stop-domain
ExecReload = /usr/bin/java -jar /opt/payara5/glassfish/lib/client/appserver-cli.jar restart-domain
Type = forking

[Install]
WantedBy = multi-user.target' > /etc/systemd/system/payara.service
systemctl enable payara

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

sudo -u payara /opt/payara5/bin/asadmin --host localhost --port 4848 change-admin-password
systemctl start payara
sudo -u payara /opt/payara5/bin/asadmin --host localhost --port 4848 enable-secure-admin
systemctl restart payara

Конфигурация Oracle Cloud по умолчанию создаст виртуальную машину, подключенную к вашему экземпляру, поэтому вам следует проверить правила, чтобы разрешить доступ к портам.

По умолчанию экземпляры Oracle Linux имеют ограниченный набор правил в iptables и SELinux, поэтому порты должны открываться с помощью firewalld, а SELinux должен быть настроен для разрешения обратного прокси-трафика:

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --zone=public --permanent --add-port=4848/tcp
setsebool -P httpd_can_network_connect 1

При этом гарантируется доступ к порту администратора http+https+payara.

Настройка обратного прокси-сервера NGINX

NGINX доступен в EPEL:

yum -y install nginx
systemctl enable nginx

В это время вам понадобится полное доменное имя, указывающее на ваш сервер, в противном случае проверка Let’s encrypt не будет работать. Для этого урока/| ocl.nabenik.com будет использоваться домен. Если ваш домен распространен правильно, вы должны увидеть страницу, подобную этой:

Не волнуйтесь, логотип Fedora связан с использованием EPEL, но вы используете Oracle Linux:).

Теперь пришло время настроить NGINX в качестве обратного прокси-сервера, предпочтительным вариантом развертывания является создание /etc/nginx/sites-available и /etc/nginx/sites-enabled структура внутри конфигурации NGINX, чтобы изолировать/управлять несколькими доменами с одним и тем же экземпляром (он же виртуальные хосты).

mkdir -p /etc/nginx/sites-available
mkdir -p /etc/nginx/sites-enabled
mkdir -p /var/www/ocl.nabenik.com/
chown -R nginx:nginx /var/www/ocl.nabenik.com

echo 'server {
    server_name ocl.nabenik.com;

    gzip on;
    gzip_types text/css text/javascript text/plain application/xml;
    gzip_min_length 1000;

    location ^~ /.well-known/acme-challenge/ {
        allow all;
        root /var/www/ocl.nabenik.com/;
        default_type "text/plain";
        try_files $uri =404;
    }

    location / {
        proxy_pass http://localhost:8080;
        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        send_timeout 300;
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    listen 80;
}' > /etc/nginx/sites-available/ocl.nabenik.com.conf

Чтобы включить новый хост, создается символическая ссылка на сайты с поддержкой :

ln -s /etc/nginx/sites-available/ocl.nabenik.com.conf /etc/nginx/sites-enabled/ocl.nabenik.com.conf

После этого вы должны включить следующую строку внутри /etc/nginx/nginx.conf , непосредственно перед завершением файла конфигурации.

include /etc/nginx/sites-enabled/*.conf;

Также полезно проверить вашу конфигурацию с помощью nginx -t , если все работает, вы должны достичь payara после перезагрузки NGINX.

Настройка Давайте зашифруем

Как только обратный прокси заработает, certbot должно быть достаточно для добавления SSL-сертификата, сам плагин создаст вызов по адресу ^ ~/.хорошо известный/acme-challenge/ , следовательно, исключение прокси является обязательным (как отражено в предыдущем шаге настройки).

yum install -y certbot-nginx
certbot --nginx -d ocl.nabenik.com

Одним из предостережений при использовании cert bot является зависимость от версии python. Другой альтернативой, если вы обнаружите какие-либо проблемы, является установка его с помощью pip

yum install -y python-pip
pip install certbot-nginx
certbot --nginx -d ocl.nabenik.com

Если все работает так, как ожидалось, вы должны увидеть страницу Payara в разделе SSL.

Наконец, и это самое главное, сертификаты Let’s Encrypt действительны только в течение 90 дней, поэтому вы можете добавить обновление сертификации ( crontab -e ) в качестве задачи cron

15 3 * * * /usr/bin/certbot renew --quiet

Оригинал: “https://dev.to/tuxtor/how-to-install-payara-5-with-nginx-and-let-s-encrypt-over-oracle-linux-7-x-34ke”