Отслеживайте laravel веб-сокет с монитором - PullRequest
0 голосов
/ 01 марта 2020

Я пытаюсь контролировать laravel -websocket с monit вместо supervisord из-за дополнительных опций, которые он предоставляет. Так что в моем /home/rabter/laravelwebsocket.sh:

#!/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 Как настроить монитор и запустить laravel -websocket при запуске и при сбоях, ошибках или сбоях?

Я изучил Мониторинг Laravel Работника очереди с Monit но не повезло!

1 Ответ

1 голос
/ 04 марта 2020

Ваш bash скрипт вставляет свой собственный pid в ваш файл pid. Кроме того, процесс php следует отправлять в фоновый режим при использовании monit, поскольку monit - это инструмент мониторинга, а не супервизор.

#!/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

Используете ли вы monit как init-system для контейнера? Если это так, пожалуйста, дайте мне знать. Затем примените еще несколько деталей.

...