Рейтинг:-1

Не удается запустить Mercure Hub в Debian 11 с помощью supervisord, за пределами образа Docker

флаг ca

Я пытаюсь выполнить концентратор Mercure от супервизора, но это невозможно для меня. Mercure находится на той же машине веб-сервера с виртуальным хостом SSL для pami54.local домен.

[программа:меркурий]
среда = JWT_KEY = "m3rcu353cr37pa55pra53DEV"; CORS_ALLOWED_ORIGINS="https://pami54.local"; PUBLISH_ALLOWED_ORIGINS="*"; АДРЕС="pami54.local:3000"
command=/home/frizquierdo/mercureLinux/mercure run -config /home/frizquierdo/mercureLinux/Caddyfile
имя_процесса=%(имя_программы)s_$(номер_процесса)s
numprocs=1
автозапуск = истина
#каталог=/tmp
автоматический перезапуск = истина
начальные секунды=5
Старт попыток = 10
redirect_stderr = ложь
stdout_capture_maxbytes=1 МБ
stderr_capture_maxbytes=1 МБ
stdout_logfile=/var/log/supervisor/mercureout.log
stderr_logfile=/var/log/supervisor/mercureerror.log

РЕДАКТИРОВАТЬ:

Я нашел частичное решение. В Caddyfile я деактивировал caddy-сервер на порту 80, установив для директивы auto_https значение «disable_redirects», оставив Caddyfile таким образом:

# Узнайте, как настроить Mercure.rocks Hub, на странице https://mercure.rocks/docs/hub/config.
{
   {$GLOBAL_OPTIONS}
   auto_https отключить_перенаправления
}

pami54.local: 3000

журнал

tls /etc/apache2/ssl-cert/pami54.local.crt /etc/apache2/ssl-cert/pami54.local.key

маршрут {
    кодировать zstd gzip

    меркур {
        # Транспорт для использования (по умолчанию Bolt)
        transport_url {$MERCURE_TRANSPORT_URL:bolt://mercure.db}
        # Ключ JWT издателя
        publisher_jwt {env.MERCURE_PUBLISHER_JWT_KEY} {env.MERCURE_PUBLISHER_JWT_ALG}
        # JWT-ключ подписчика
        subscriber_jwt {env.MERCURE_SUBSCRIBER_JWT_KEY} {env.MERCURE_SUBSCRIBER_JWT_ALG}
        # Дополнительные директивы
        cors_origins https://pami54.local
        публикация_источники *
        {$MERCURE_EXTRA_DIRECTIVES}
    }

    ответить /healthz 200

    ответить "Не найдено" 404
}

Его конфигурация виртуального хоста:

<IfModule mod_ssl.c>
 #SSLStaplingCache "shmcb:${SRVROOT}/logs/ssl_stapling(32768)"
 <VirtualHost *:443>
   ServerName pami54.local
   ServerAlias wwww.pami54.local

   DocumentRoot "/var/www/html/pami54.local/public"
   DirectoryIndex index.php

   <Directory "/var/www/html/pami54.local/public/">
    AllowOverride All
    Order Allow,Deny
    Allow from All
    #Require local
    Require all granted

    <IfModule mod_rewrite.c>
            Options -MultiViews
            RewriteEngine On
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteRule ^(.*)$ index.php [QSA,L]
    </IfModule>
   </Directory>

   SSLEngine on
   SSLProtocol all -SSLv3 -SSLv2
   SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
   SSLCertificateFile "/etc/apache2/ssl-cert/pami54.local.crt"
   SSLCertificateKeyFile "/etc/apache2/ssl-cert/pami54.local.key"
   SSLUseStapling off

   <FilesMatch "\.(cgi|shtml|pl|asp|php)$">
    SSLOptions +StdEnvVars
   </FilesMatch>

   BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0

   SSLProxyEngine On
   ProxyRequests Off
   ProxyPreserveHost On
   #ProxyPass '/.well-known/mercure' 'https://pami54.local:3000/.well-known/mercure' connectiontimeout=300 timeout=300
   ProxyPass '/.well-known/mercure' 'https://pami54.local:3000/.well-known/mercure'
   ProxyPassReverse '/.well-known/mercure' 'https://pami54.local:3000/.well-known/mercure'
 </VirtualHost>
</IfModule>

Таким образом, клиенты могут подключаться к Mercure на https://pami54.local/.well-known/mercure, даже когда происходит отключение, клиент успешно повторно подключается к концентратору, но когда сервер (веб-приложение) пытается опубликовать уведомление на концентраторе, ошибка журнала клиента symfony http:

[2022-04-27T19:29:40.857698-04:00] http_client.INFO: Запрос: "POST https://pami54.local/.well-known/mercure" [] []
[2022-04-27T19:29:40.871491-04:00] messenger.ПРЕДУПРЕЖДЕНИЕ. Ошибка при обработке сообщения App\Message\NotificacionMarcarComoLeidaMessage. Отправка на повтор #1 с задержкой 1000 мс. Ошибка: «Обработка «App\Message\NotificacionMarcarComoLeidaMessage» не удалась: не удалось отправить обновление». {"message":{"App\Message\NotificacionMarcarComoLeidaMessage":[]},"class":"App\Message\NotificacionMarcarComoLeidaMessage","retryCount":1,"delay":1000,"error": "Обработка \"App\Message\NotificacionMarcarComoLeidaMessage\" не удалась: не удалось отправить обновление.","exception":"[object] (Symfony\Component\Messenger\Exception\HandlerFailedException(code: 0) : Ошибка обработки \"App\Message\NotificacionMarcarComoLeidaMessage\": не удалось отправить обновление. предыдущее исключение] [объект] (Symfony\Component\Mercure\Exception\RuntimeException(код: 0): не удалось отправить обновление.в /var/www/html/pami54.local/vendor/symfony/mercure/src/Hub.php:104)\n[предыдущее исключение] [объект] (Symfony\Component\HttpClient\Exception\TransportException( код: 0): запрос не был обработан и может быть безопасно повторен в /var/www/html/pami54.local/vendor/symfony/http-client/Response/CommonResponseTrait.php:148)\n[предыдущее исключение] [ объект] (Symfony\Component\HttpClient\Exception\TransportException(код: 0): запрос не был обработан и может быть безопасно повторен в /var/www/html/pami54.local/vendor/symfony/http- client/Chunk/ErrorChunk.php:65)\n[предыдущее исключение] [объект] (Amp\Http\Client\Connection\UnprocessedRequestException(код: 0): запрос не был обработан и может быть безопасно повторен в /var/www/html/pami54.local/vendor/ampphp/http-client/src/Connection/DefaultConnectionFactory.php:117)\n[предыдущее исключение] [объект] (Amp\Http\Client\SocketException( код: 0): Ошибка подключения к pami54.local:443 в /var/www/html/pami54.local/vendor/ampphp/http-client/ src/Connection/DefaultConnectionFactory.php:118)\n[предыдущее исключение] [объект] (Amp\Socket\ConnectException(код: 111): соединение с tcp://pami54.local:443 отклонено в /var/www /html/pami54.local/vendor/ampphp/socket/src/DnsConnector.php:108)"} []

Что означает эта ошибка, которая вызывает компонент symfony HTTP CLIENT? Я думал, что решил проблему. По крайней мере, клиенты подключаются повторно к концентратору, теперь проблема заключается в том, что веб-приложение пытается опубликоваться в концентраторе Mercure.

Я должен сказать, что в моей локальной среде нет DNS-сервера, все с локальным виртуальным хостом и именем домена, объявленным в /etc/имя хоста.conf виртуальной машины Debian:

#/etc/имя_хоста.conf     
debiandev
pami54.local
djdomi avatar
флаг za
а что за бизнес-вопрос? Если вы пытаетесь получить доступ к сервису через веб-сервер по порту по умолчанию, вам подойдет обратный прокси-сервер.
Francisco avatar
флаг ca
@djdomi Я актуализировал пост с конфигурацией виртуального хоста. Проблема с сервером mercure (caddy), если я установил в Caddyfile, что он должен работать через порт 3000, почему из supervisord он пытается запустить через порт 80???
djdomi avatar
флаг za
что произошло, когда вы остановили apache и попытались сначала запустить службу? во-вторых, используйте grep -R 80 /path/to/configdir, если вы, возможно, по ошибке установили порт 80
Рейтинг:0
флаг ca

Я нашел частичное решение. В Caddyfile я деактивировал caddy-сервер на порту 80, установив auto_https директива 'disable_redirects', оставаясь Caddyfile на этом пути:

# Узнайте, как настроить Mercure.rocks Hub, на странице https://mercure.rocks/docs/hub/config.
{
   {$GLOBAL_OPTIONS}
   auto_https отключить_перенаправления
}

pami54.local: 3000

журнал

tls /etc/apache2/ssl-cert/pami54.local.crt /etc/apache2/ssl-cert/pami54.local.key

маршрут {
    кодировать zstd gzip

    Меркурий {
        # Транспорт для использования (по умолчанию Bolt)
        transport_url {$MERCURE_TRANSPORT_URL:bolt://mercure.db}
        # Ключ JWT издателя
        publisher_jwt {env.MERCURE_PUBLISHER_JWT_KEY} {env.MERCURE_PUBLISHER_JWT_ALG}
        # JWT-ключ подписчика
        subscriber_jwt {env.MERCURE_SUBSCRIBER_JWT_KEY} {env.MERCURE_SUBSCRIBER_JWT_ALG}
        # Дополнительные директивы
        cors_origins https://pami54.local
        публикация_источников *
        {$MERCURE_EXTRA_DIRECTIVES}
    }

    ответить /healthz 200

    ответить "Не найдено" 404
}

Теперь клиенты могут подключаться к концентратору, но веб-приложение не может публиковаться на нем.

Я обновил пост.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.