-1

より多くのオプションが提供されるため、supervisord の代わりに monit を使用して laravel-websocket を監視しようとしています。

#!/bin/bash
case $1 in
        start)
                echo $$ > /var/run/laravelwebsocket.pid;
                exec 2>&1 php /home/rabter/core/artisan websockets:serve  1>/tmp/laravelwebsocket.out
                ;;
        stop)  
                kill `cat /var/run/laravelwebsocket.pid` ;;
        *)  
                echo "usage: laravelwebsocket.sh {start|stop}" ;;
esac
exit 0

そして、etc/monit.d で cwp.laravelwebsocket という名前のファイルをコードで作成しました

check process laravelwebsocket with pidfile /var/run/laravelwebsocket.pid
start program "/bin/bash -c  /home/rabter/laravelwebsocket.sh start"
stop program "/bin/bash -c  /home/rabter/laravelwebsocket.sh stop"
if failed port 6001 then restart
if 4 restarts within 8 cycles then timeout

残念ながら、monit を実行するとすべてが monitord を取得し始めますが、laravel websocket は開始されず、一度も開始されず、monit テーブルの前に表示 Process - laravelwebsocket Execution failed | Does not exist されます。monit モニターを作成し、起動時および失敗時、エラーまたはクラッシュ時に laravel-websocket を開始するにはどうすればよいですか?

Monitor a Laravel Queue Worker with Monit を調べました が、うまくいきません!

4

1 に答える 1

1

bash スクリプトは、独自の pid を pid ファイルに挿入します。さらに、monit はスーパーバイザではなく監視ツールであるため、monit を使用する場合は、php プロセスをバックグラウンドに送信する必要があります。

#!/usr/bin/env bash

case $1 in
    start)
        php /home/rabter/core/artisan websockets:serve & 2>&1 >/tmp/laravelwebsocket.out
        echo $! > /var/run/laravelwebsocket.pid;
        ;;
    stop)
        kill $(cat /var/run/laravelwebsocket.pid) ;;
    *)
        echo "usage: $(basename $0) {start|stop}" ;;
    esac
exit 0

次に、そのファイルを実行可能にしchmod +x FILEPATHます。

これで動作するはずです:

check process laravelwebsocket with pidfile /var/run/laravelwebsocket.pid
    start program "/home/rabter/laravelwebsocket.sh start"
    stop program "/home/rabter/laravelwebsocket.sh stop"

    if failed port 6001 then restart
    if 4 restarts within 8 cycles then timeout

コンテナーの init-system として monit を使用しますか? もしそうなら、私に知らせてください。次に、さらにいくつかの詳細が適用されます。

于 2020-03-04T19:21:56.830 に答える