Какой умный способ реализовать страницу обслуживания в приложении Heroku? - PullRequest
11 голосов
/ 02 сентября 2011

Есть ли чистый, элегантный способ реализовать страницу обслуживания в приложении Heroku? Так что, если что-то сломается, вы можете очень легко повернуть переключатель и страница обслуживания откроется для всех запросов? Желательно, чтобы путь не требовал толчка?

Идеи? Спасибо

Ответы [ 5 ]

13 голосов
/ 02 сентября 2011

ПРИМЕЧАНИЕ. Этот ответ касается настроек nginx или Rack, так как он был написан до того, как редактирование исходного вопроса дало понять, что он ищет ответ, специфичный для Heroku.Принятый ответ лучше всего подходит для приложений Heroku.


Когда вы говорите «в своем приложении», вы действительно имеете в виду в вашем приложении?

Потому что, как правило, решение состоит в том, чтобы поместить файл обслуживания в корневой веб-каталог.Если файл найден, он сразу же получает 503 Service Not Available.Запрос даже не попадает в ваше приложение, которое, по-видимому, «отключено на техническое обслуживание».

В nginx что-то вроде этого:

    location / {
       if (-f $document_root/maintenance.html) {
            return 503;
       }

       # continued server directives
     }

    error_page 503 @maintenance;
    location @maintenance {
            rewrite ^(.*)$ /maintenance.html break;
    }

Это на самом деле не требует нажатияСамо по себе, но, возможно, простая задача с граблями или что-то, чтобы добавить / удалить этот файл обслуживания из вашего приложения.Вы также можете заменить любое заданное имя файла в проверке -f и просто touch пустой произвольный файл maintenance.whatever в своем веб-корне, который затем направит nginx на обслуживание mainenance.html.

Если вы не хотите (или не можете) бездельничать с конфигурацией сервера, это очень простое промежуточное программное обеспечение Rack, по сути, делает то же самое: https://github.com/ddollar/rack-maintenance

7 голосов
/ 02 сентября 2011

или используйте собственный режим обслуживания Heroku именно для этого сценария - http://devcenter.heroku.com/articles/maintenance-mode

1 голос
/ 09 октября 2012

Чтобы добавить ответ Эмануэля:

Trackman помогает с вашими страницами обслуживания от разработчика до продукта.

Вы можете

  • Скомпоновать их, используя свой текущий макет сайта(~ 0 html edit)
  • Свяжите ваши текущие ресурсы со статической страницей
  • Посмотрите на макет вашей страницы в вашей среде разработки

Он развернет все на S3когда вы нажимаете на Heroku и вам даже не нужно настраивать учетную запись на S3.

Вы также должны запустить

rake trackman:setup

Таким образом, Heroku указывает на ваши страницы S3 в режиме обслуживания.

http://www.trackman -addon.com

0 голосов
/ 17 августа 2012

Ответы выше подходят для базового сценария.

Для умной части вашего вопроса здесь есть аддон, который доставит вас туда:

https://addons.heroku.com/trackman

0 голосов
/ 02 сентября 2011

Этого, вероятно, легко достичь, добавив before_filter в начале цепочки фильтров, который проверяет состояние режима обслуживания и перенаправляет на страницу обслуживания при необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...