Încerc să execut hubul Mercure de la supervizor, dar nu este posibil pentru mine. Mercure se află în aceeași mașină de server web cu virtualhost SSL pentru pami54.local
domeniu.
[program:mercure]
mediu=JWT_KEY="m3rcu353cr37pa55pra53DEV"; CORS_ALLOWED_ORIGINS="https://pami54.local"; PUBLISH_ALLOWED_ORIGINS="*"; ADDR="pami54.local:3000"
command=/home/frizquierdo/mercureLinux/mercure run -config /home/frizquierdo/mercureLinux/Caddyfile
process_name=%(program_name)s_$(process_num)s
numprocs=1
autostart=true
#directory=/tmp
pornire automată=adevărat
startsecs=5
startretry=10
redirect_stderr=fals
stdout_capture_maxbytes=1MB
stderr_capture_maxbytes=1MB
stdout_logfile=/var/log/supervisor/mercureout.log
stderr_logfile=/var/log/supervisor/mercureerror.log
EDITAȚI | ×:
Am găsit o soluție parțială. În Caddyfile am dezactivat serverul caddy de pe portul 80, setând directiva auto_https la „disable_redirects”, rămânând Caddyfile în acest fel:
# Aflați cum să configurați Mercure.rocks Hub pe https://mercure.rocks/docs/hub/config
{
{$GLOBAL_OPTIONS}
auto_https disable_redirects
}
pami54.local:3000
Buturuga
tls /etc/apache2/ssl-cert/pami54.local.crt /etc/apache2/ssl-cert/pami54.local.key
traseu {
codificați zstd gzip
mercure {
# Transport de utilizat (implicit la Bolt)
transport_url {$MERCURE_TRANSPORT_URL:bolt://mercure.db}
# Cheie JWT pentru editor
publisher_jwt {env.MERCURE_PUBLISHER_JWT_KEY} {env.MERCURE_PUBLISHER_JWT_ALG}
# Cheie JWT abonatului
subscriber_jwt {env.MERCURE_SUBSCRIBER_JWT_KEY} {env.MERCURE_SUBSCRIBER_JWT_ALG}
# Directive suplimentare
cors_origins https://pami54.local
publish_origins *
{$MERCURE_EXTRA_DIRECTIVES}
}
răspunde /healthz 200
răspunde „Nu a fost găsit” 404
}
Configurația sa virtualhost:
<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>
În acest fel, clienții se pot conecta la Mercure https://pami54.local/.well-known/mercure
, chiar și atunci când are loc o deconectare, clientul se reconecta cu succes la hub, dar când serverul (aplicația web) încearcă să publice o notificare pe hub, eroare symfony http client log:
[2022-04-27T19:29:40.857698-04:00] http_client.INFO: Solicitare: „POST https://pami54.local/.well-known/mercure” [] []
[2022-04-27T19:29:40.871491-04:00] messenger. AVERTISMENT: Eroare aruncată la manipularea mesajului App\Message\NotificacionMarcarComoLeidaMessage. Se trimite pentru reîncercare #1 folosind o întârziere de 1000 ms. Eroare: „Gestionarea „App\Message\NotificacionMarcarComoLeidaMessage” a eșuat: a eșuat la trimiterea unei actualizări.” {"message":{"App\Message\NotificacionMarcarComoLeidaMessage":[]},"class":"App\Message\NotificacionMarcarComoLeidaMessage","retryCount":1,"delay":1000,"error": „Gestionarea \"App\Message\NotificacionMarcarComoLeidaMessage\” a eșuat: a eșuat trimiterea unei actualizări.","exception":"[obiect] (Symfony\Component\Messenger\Exception\HandlerFailedException(cod: 0) : Gestionarea \"App\Message\NotificacionMarcarComoLeidaMessage\" a eșuat: a eșuat trimiterea unei actualizări. la /var/www/html/pami54.local/vendor/symfony/messenger/Middleware/HandleMessageMiddleware.php:129)\n[ excepție anterioară] [obiect] (Symfony\Component\Mercure\Exception\RuntimeException(cod: 0): Nu s-a putut trimite o actualizare.la /var/www/html/pami54.local/vendor/symfony/mercure/src/Hub.php:104)\n[excepția anterioară] [obiect] (Symfony\Component\HttpClient\Exception\TransportException( cod: 0): Solicitarea nu a fost procesată și poate fi reîncercată în siguranță la /var/www/html/pami54.local/vendor/symfony/http-client/Response/CommonResponseTrait.php:148)\n[excepția anterioară] [ obiect] (Symfony\Component\HttpClient\Exception\TransportException(cod: 0): Solicitarea nu a fost procesată și poate fi reîncercată în siguranță la /var/www/html/pami54.local/vendor/symfony/http- client/Chunk/ErrorChunk.php:65)\n[excepție anterioară] [obiect] (Amp\Http\Client\Connection\UnprocessedRequestException (cod: 0): cererea nu a fost procesată și poate fi reîncercată în siguranță la /var/www/html/pami54.local/vendor/amphp/http-client/src/Connection/DefaultConnectionFactory.php:117)\n[excepția anterioară] [obiect] (Amp\Http\Client\SocketException( cod: 0): conexiunea la „pami54.local:443” a eșuat la /var/www/html/pami54.local/vendor/amphp/http-client/ src/Connection/DefaultConnectionFactory.php:118)\n[excepția anterioară] [obiect] (Amp\Socket\ConnectException(cod: 111): Conexiune la tcp://pami54.local:443 refuzată la /var/www /html/pami54.local/vendor/amphp/socket/src/DnsConnector.php:108)"} []
Ce înseamnă această eroare că aruncă componenta Symfony HTTP CLIENT? Credeam că am rezolvat problema. Cel puțin clienții conectează o reconectare la hub, acum problema este când aplicația web încearcă să publice în hub-ul Mercure.
Trebuie să spun că mediul meu local nu are un server dns, totul este cu virtualhost local și numele de domenii declarat în /etc/hostname.conf
de mașină virtuală Debian:
#/etc/hostname.conf
debiandev
pami54.local