Я пытаюсь выполнить концентратор 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