Điểm:-1

Không thể khởi động Mercure Hub trên Debian 11 với giám sát, ngoài hình ảnh Docker

lá cờ ca

Tôi đang cố gắng thực hiện trung tâm Mercure từ người giám sát, nhưng tôi không thể thực hiện được. Mercure nằm trong cùng một máy của máy chủ web với SSL virtualhost cho pami54.local miền.

[chương trình:mercure]
môi trường=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
tự khởi động=true
#thư mục=/tmp
tự khởi động lại=true
bắt đầu = 5
số lần bắt đầu = 10
redirect_stderr=false
stdout_capture_maxbytes=1MB
stderr_capture_maxbytes=1MB
stdout_logfile=/var/log/supervisor/mercureout.log
stderr_logfile=/var/log/supervisor/mercureerror.log

CHỈNH SỬA:

Tôi đã thành lập một giải pháp một phần. Trong Caddyfile, tôi đã hủy kích hoạt máy chủ caddy trên cổng 80, đặt chỉ thị auto_https thành 'disable_redirects', duy trì Caddyfile theo cách này:

# Tìm hiểu cách định cấu hình Mercure.rocks Hub trên https://mercure.rocks/docs/hub/config
{
   {$GLOBAL_OPTIONS}
   auto_https disable_redirects
}

pami54.local:3000

đăng nhập

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

tuyến đường {
    mã hóa zstd gzip

    đánh bóng {
        # Vận chuyển để sử dụng (mặc định là Bolt)
        transport_url {$MERCURE_TRANSPORT_URL:bolt://mercure.db}
        # Khóa JWT của nhà xuất bản
        Publisher_jwt {env.MERCURE_PUBLISHER_JWT_KEY} {env.MERCURE_PUBLISHER_JWT_ALG}
        # Khóa JWT của người đăng ký
        subscriber_jwt {env.MERCURE_SUBSCRIBER_JWT_KEY} {env.MERCURE_SUBSCRIBER_JWT_ALG}
        # Chỉ thị bổ sung
        cors_origins https://pami54.local
        xuất bản_origins *
        {$MERCURE_EXTRA_DIRECTIVES}
    }

    trả lời /healthz 200

    trả lời "Không tìm thấy" 404
}

Cấu hình máy chủ ảo của nó:

<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>

Bằng cách này, khách hàng có thể kết nối với Mercure trên https://pami54.local/.well-known/mercure, ngay cả khi mất kết nối xảy ra, máy khách đã kết nối lại thành công với trung tâm, nhưng khi máy chủ (ứng dụng web) cố gắng xuất bản thông báo trên trung tâm, lỗi nhật ký máy khách http của symfony:

[2022-04-27T19:29:40.857698-04:00] http_client.INFO: Yêu cầu: "POST https://pami54.local/.well-known/mercure" [] []
[2022-04-27T19:29:40.871491-04:00] messenger.CẢNH BÁO: Đã xảy ra lỗi khi xử lý tin nhắn App\Message\NotificacionMarcarComoLeidaMessage. Đang gửi để thử lại #1 với độ trễ 1000 ms. Lỗi: "Xử lý "Ứng dụng\Message\NotificacionMarcarComoLeidaMessage" không thành công: Không thể gửi bản cập nhật." {"message":{"App\Message\NotificacionMarcarComoLeidaMessage":[]},"class":"App\Message\NotificacionMarcarComoLeidaMessage","retryCount":1,"delay":1000,"error": "Xử lý \"Ứng dụng\Message\NotificacionMarcarComoLeidaMessage\" không thành công: Không thể gửi bản cập nhật.","Ngoại lệ":"[đối tượng] (Symfony\Component\Messenger\Exception\HandlerFailedException(code: 0) : Xử lý \"Ứng dụng\Message\NotificacionMarcarComoLeidaMessage\" không thành công: Không thể gửi bản cập nhật. tại /var/www/html/pami54.local/vendor/symfony/messenger/Middleware/HandleMessageMiddleware.php:129)\n[ ngoại lệ trước đó] [đối tượng] (Symfony\Component\Mercure\Exception\RuntimeException(code: 0): Không thể gửi bản cập nhật.tại /var/www/html/pami54.local/vendor/symfony/mercure/src/Hub.php:104)\n[ngoại lệ trước đó] [đối tượng] (Symfony\Component\HttpClient\Exception\TransportException( mã: 0): Yêu cầu không được xử lý và có thể được thử lại một cách an toàn tại /var/www/html/pami54.local/vendor/symfony/http-client/Response/CommonResponseTrait.php:148)\n[ngoại lệ trước đó] [ object] (Symfony\Component\HttpClient\Exception\TransportException(code: 0): Yêu cầu không được xử lý và có thể được thử lại an toàn tại /var/www/html/pami54.local/vendor/symfony/http- client/Chunk/ErrorChunk.php:65)\n[ngoại lệ trước] [đối tượng] (Amp\Http\Client\Connection\UnprocessedRequestException(code: 0): Yêu cầu không được xử lý và có thể thử lại an toàn tại /var/www/html/pami54.local/vendor/amphp/http-client/src/Connection/DefaultConnectionFactory.php:117)\n[ngoại lệ trước đó] [đối tượng] (Amp\Http\Client\SocketException( mã: 0): Kết nối với 'pami54.local:443' không thành công tại /var/www/html/pami54.local/vendor/amphp/http-client/ src/Connection/DefaultConnectionFactory.php:118)\n[ngoại lệ trước đó] [đối tượng] (Amp\Socket\ConnectException(code: 111): Kết nối tới tcp://pami54.local:443 bị từ chối tại /var/www /html/pami54.local/vendor/ampphp/socket/src/DnsConnector.php:108)"} []

Lỗi này có nghĩa là gì khi ném thành phần HTTP CLIENT của symfony? Tôi nghĩ rằng tôi đã giải quyết được vấn đề. Ít nhất các máy khách kết nối kết nối lại với trung tâm, bây giờ vấn đề là khi ứng dụng web cố gắng xuất bản lên trung tâm Mercure.

Tôi phải nói rằng môi trường cục bộ của tôi không có máy chủ dns, tất cả là với máy chủ ảo cục bộ và tên miền được khai báo trong /etc/hostname.conf của máy ảo Debian:

#/etc/hostname.conf     
debiandev
pami54.local
djdomi avatar
lá cờ za
và câu hỏi liên quan đến ngành nghề kinh doanh là gì? Nếu bạn đang cố truy cập dịch vụ qua máy chủ web bằng cổng mặc định, thì proxy ngược sẽ phù hợp với nhu cầu của bạn
Francisco avatar
lá cờ ca
@djdomi Tôi đã hiện thực hóa bài đăng bằng cấu hình máy chủ ảo. Vấn đề là ở mercure server (caddy), nếu mình set trong Caddyfile là nó phải chạy qua port 3000 thì tại sao từ Supervisord nó lại cố chạy qua port 80 ???
djdomi avatar
lá cờ za
điều gì đã xảy ra khi bạn dừng apache và thử khởi động dịch vụ trước? lần thứ hai sử dụng grep -R 80 /path/to/configdir nếu bạn có thể đặt nhầm cổng 80
Điểm:0
lá cờ ca

Tôi tìm thấy giải pháp một phần. Trong Caddyfile, tôi đã hủy kích hoạt máy chủ caddy trên cổng 80, cài đặt auto_https chỉ thị cho 'disable_redirects', ở lại caddyfile theo cách này:

# Tìm hiểu cách định cấu hình Mercure.rocks Hub trên https://mercure.rocks/docs/hub/config
{
   {$GLOBAL_OPTIONS}
   auto_https disable_redirects
}

pami54.local:3000

đăng nhập

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

tuyến đường {
    mã hóa zstd gzip

    đánh bóng {
        # Vận chuyển để sử dụng (mặc định là Bolt)
        transport_url {$MERCURE_TRANSPORT_URL:bolt://mercure.db}
        # Khóa JWT của nhà xuất bản
        Publisher_jwt {env.MERCURE_PUBLISHER_JWT_KEY} {env.MERCURE_PUBLISHER_JWT_ALG}
        # Khóa JWT của người đăng ký
        subscriber_jwt {env.MERCURE_SUBSCRIBER_JWT_KEY} {env.MERCURE_SUBSCRIBER_JWT_ALG}
        # Chỉ thị bổ sung
        cors_origins https://pami54.local
        xuất bản_origins *
        {$MERCURE_EXTRA_DIRECTIVES}
    }

    trả lời /healthz 200

    trả lời "Không tìm thấy" 404
}

Bây giờ, các máy khách có thể kết nối với trung tâm, nhưng ứng dụng web không thể xuất bản trên đó.

Tôi đã cập nhật bài viết.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.