Как получить доступ к приложению rails при отключении capistrano с помощью deploy:web:disable для обновления контента?

Я использую capistrano для развертывания веб-сайта rails 3 и использую deploy:web:disable, чтобы показывать пользователям страницу обслуживания во время обновления сайта.

Есть только одна проблема, я хочу иметь доступ к сайту, чтобы добавлять на него контент через интерфейс администратора. Я использую devise в качестве решения для аутентификации.

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

Спасибо.


person lander16    schedule 11.05.2011    source источник
comment
Возможно, вы захотите рассказать нам немного о своем стеке. Что обслуживает страницу обслуживания? Нгинкс, апач?   -  person markquezada    schedule 12.05.2011


Ответы (2)


Один из способов — добавить свой собственный IP-адрес в качестве исключения в файл .htaccess. Это даст вам полный доступ к вашему приложению rails во время обслуживания, но никому другому.

Добавьте это в файл .htaccess приложения rails где-то выше RewriteRule. (очевидно, измените 127.0.0.1 на ваш фактический IP-адрес)

RewriteCond %{REMOTE_ADDR} !^127\.0\.0\.1$

Если у вас есть статический IP-адрес, вы можете просто указать его, или я, вероятно, настрою прокси-сервер SOCKS через другой сервер со статическим IP-адресом и буду использовать этот IP-адрес, чтобы вы знали, что можете получить доступ из любого места, если это необходимо.

Надеюсь это поможет.

person David Barlow    schedule 12.05.2011

Другой вариант — использовать специальный порт администратора для доступа к вашему сайту и поставить его за простой HTTP-аутентификацией. Это зависит от того, какой сервер вы используете, но по сути вам нужно что-то вроде этого (предупреждение, псевдо-конфигурация):

listen 81
AuthType Basic
AuthName "Admin site"
AuthUserFile /usr/local/apache/passwd/passwords
Require user

И просто убедитесь, что директива виртуального хоста не проверяет наличие файла Maintenance.html, как это делает ваш обычный сайт. Затем он должен аккуратно обойти обычный сайт и защитить его паролем для загрузки.

person markquezada    schedule 12.05.2011