@funkydance

Как автоматически запускать проект при падение?

Добрый вечер.

Хочу узнать, как возможно реализовать возможность проверять статус ответа сайта, если статус отличается от успешного (200), то следом выполнять в порядке очереди следующее:

1. Проверяем статус ответа сайта, если статус отличается от успешного (200), то следом выполнять пункт 2.

2. Делать reboot now сервера.
3. Далее при поднятие сервера заходить в screen -S site
4. Внутри скрина переходить в нужный каталог cd /var/www/site.ru
5. Запускать команду yarn build && yarn start
6. Дальше мониторить пункт 1.

Никогда такого не делал, но хочется реализовать. Пока не знаю куда копать даже.

Спасибо.
  • Вопрос задан
  • 279 просмотров
Решения вопроса 1
shambler81
@shambler81 Куратор тега Linux
проблем нет но линукс это не винда тут так не принято
если падает какой-то из демонов рестартуют именно его а не всю ос.
Аптайм 1000 дней вполне себе адекватный аптайм для обычных домашних серверков.
Так что рестарт всей ос это ты брось.
Технология такая.
1. проверяешь статусы httpd nginx и mysql обьем памяти место на диске и че там тебе нужно
если они возвращяют тру то ничего если фелс то рестартуеш конкретный демон.
делается это в одну строчку
делается это очень легко
команда $$ echo "true" || echo "false"
К примеру если ты сделаешь
service httpd status | grep "running" || service httpd restart

где
&& - если команда завершилась с тру
|| если с фелс ( все это облегченый синтаксис)

линукс это конструктор тут все легко и просто главное определись что тебе нужно
так же уже есть много чего готового к примеру monit munin zabbix nagios и тд
есть сторонние сервисы которыми можно тестить я к примеру мелким товарищям вот этих рекомендую
Тут можно мониторить сервер из облака и посылать на него команд что очень удобно.
monit-it.ru
так сказать дешево и сердито. Бесплатного тарифа тебе хватит за глаза
601b0b4594a91529890390.png
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@MadridianFox
Web-программист, многостаночник
Выглядит так, будто вы уже неправильно запускаете ваш проект.
reboot now это вы хотите прям на уровне операционной системы перезагрузиться? Зачем так радикально?
Зачем заходить в скрин? Выскажу догадку - yarn start завершается когда вы выходите с сервера, и вы решили запускать его в скрине?

Ну такое.
Смотрите. Можно сделать надёжнее
1) устанавливаете pm2 - менеджер процессов для долгоживущих nodejs приложений
2) пишете простой как две копейки ecosystem файл
3) запускаете своё творение не в скрине, и выходите с сервера не опасайсь что оно упадёт

Далее можно организовать перезапуск приложения. Не сервера.
Самый простой способ - повесить на этом же сервере на крон скрипт, который будет делать curl -s -o /dev/null -w "%{http_code}". Если ответ этой команды не "200" то выполнять команду pm2 restart myApp

Кстати, если перебои в работе приложения происходят из-за того что прям процесс падает, то даже никакой крон не понадобится - pm2 сам следит за тем что приложение остановилось, и запускает его снова.
Ответ написан
Комментировать
ky0
@ky0
Миллиардер, филантроп, патологический лгун
А в чём сложность? Пишете скрипт с вашей проверкой, который делает то, что вам нужно, добавляете его в cron.
Ответ написан
Комментировать
@pfg21
ex-турист
на самом сайте сделать скрипт который через wget curl получает споределеную страничку если вместо страничкм error 200, то перезапускает програмку на которой вертится твой сайт.
зачем сервак ребутить ?? и при чем здесь пакетный менеджер yarn ??
найти точку отказа и перезапускать ее если ничего лучше в голову не приходит.

посоветую расписать что там у тебя за сайт - технически грамотный вопрос даст технически грамотный ответ.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы