Laravel-echo-server 无法使用 https 协议启动生产

Posted

技术标签:

【中文标题】Laravel-echo-server 无法使用 https 协议启动生产【英文标题】:Laravel-echo-server failed to start in production with https protocol 【发布时间】:2019-09-13 09:32:55 【问题描述】:

我在 digitalocean 中托管了我的项目。我正在使用 laravel echo 服务器,它在 http 上运行良好,但是当我设置了letsencrypt 时,laravel echo 服务器无法启动。

这里是 laravel echo 服务器配置。

   
    "authHost": "https://example.com/api/",
    "authEndpoint": "/broadcasting/auth",
    "clients": [
            
                "appId": "86f96c2b2ca85e8a",
                "key": "0e917607d0910b9e2670d281a0e2b254"
            
    ],
    "database": "redis",
    "databaseConfig": 
    
        "redis": ,
        "sqlite": 
        
            "databasePath": "/database/laravel-echo-server.sqlite"
        
    ,
    "devMode": true,
    "host": null,
    "port": "6001",
    "protocol": "https",
    "socketio": ,
    "sslCertPath": "/etc/letsencrypt/csr/0000_csr-certbot.pem",
    "sslKeyPath": "/etc/letsencrypt/keys/0000_key-certbot.pem",
    "sslCertChainPath": "",
    "sslPassphrase": "",
    "subscribers": 
    
        "http": true,
        "redis": true
    ,
    "apiOriginAllow": 
    
        "allowCors": true,
        "allowOrigin": "http://localhost:80",
        "allowMethods": "GET, POST",
        "allowHeaders": "Origin, Content-Type, X-Auth-Token, X-Requested-With, Accept, Authorization, X-CSRF-TOKEN, X-Socket-Id"
    

我希望 laravel echo 服务器能够启动并监听事件,但无法启动并显示此错误。

L A R A V E L  E C H O  S E R V E R

version 1.5.0

⚠ Starting server in DEV mode...

(node:22827) UnhandledPromiseRejectionWarning: Error: error:0909006C:PEM routines:get_name:no start line
    at Object.createSecureContext (_tls_common.js:136:17)
    at Server (_tls_wrap.js:870:27)
    at new Server (https.js:62:14)
    at Object.createServer (https.js:85:10)
    at Server.httpServer (/usr/local/lib/node_modules/laravel-echo-server/dist/server.js:60:36)
    at /usr/local/lib/node_modules/laravel-echo-server/dist/server.js:34:35
    at process._tickCallback (internal/process/next_tick.js:68:7)
(node:22827) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:22827) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

【问题讨论】:

【参考方案1】:

我在生产环境中运行 Laravel Echo 服务器时遇到了完全相同的问题。

尝试对 laravel-echo-server.json 文件进行以下更改:

"sslCertPath": "/etc/nginx/ssl/YOURPROJECT/601901/server.crt",
"sslKeyPath": "/etc/nginx/ssl/YOURPROJECT/601901/server.key",

使用您的域更新 YOURPROJECT。如果你使用 Laravel Forge,这应该可以解决问题。

【讨论】:

以上是关于Laravel-echo-server 无法使用 https 协议启动生产的主要内容,如果未能解决你的问题,请参考以下文章

laravel-echo-server 用户未加入,未订阅套接字服务器

使用 Laravel Echo、laravel-echo-server 和 socket.io 广播将不起作用

Laravel 事件广播没有被拾取 laravel-echo-server

Laravel-echo-server 码头化问题

Socket.io 在带有 redis 和 Laravel-echo-server 的 Web 浏览器 chrome 中没有显示任何内容

在 laravel-echo-server 中找不到模块“node-v46-linux-x64/node_sqlite3.node”错误