Подтвердить что ты не робот

Рекомендации для сервера веб-приложений (по бюджету)

Я хотел бы создать промежуточный сервер для приложения Rails. Я использую git и github, Cap, и имею VPS с Apache/Passenger. Мне любопытно относиться к лучшим практикам настройки промежуточного уровня, как к конфигурации промежуточного сервера, так и к процессам взаимодействия с ним. Я знаю, что он должен быть как можно более идентичным серверу производства, но ограничение доступа к нему ограничит его, поэтому советы по обеспечению его только для моего использования также будут отличными.

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

4b9b3361

Ответ 1

Дешевый и простой ответ:

1) Точка staging.domainname.com на вашем VPS.

2) Добавьте в виртуальный хост для постановки, указав на промежуточную копию приложения.

3) Добавьте в настройку промежуточной среды. (Знаете ли вы, что можете определить новые среды в Rails? Fun stuff!) Я думаю, что это так же просто, как копирование production.rb на staging.rb и настройку при необходимости, а также обновление базы данных .yml.

4) В ActionController добавьте код, похожий на следующий

   if (ENV["RAILS_ENV"] == "staging")
     before_filter :verifies_admin
   end

Где verifies_admin может быть что угодно. Я предлагаю использовать базовую аутентификацию HTTP - дешево и легко.

def verifies_admin
  authenticate_or_request_with_http_basic do |username, password|
    username == "foo" && password == "bar"
  end
end

Обратите внимание, что это может привести к вашему соединению с этим сайтом платежа, если они делают для вас входящие запросы, хотя это достаточно просто, чтобы исправить (просто отключите before_filter для соответствующих контроллеров и/или действия.)

Лучший ответ:

1) Купите второй VPS, сконфигурированный с тем же изображением, что и ваш обычный VPS, и/или сконфигурированный из той же самой установки-из-без-металла script (мне нравится Capistrano и Deprec для этого).

2) Наведите указатель мыши на staging.domainname.com.

3) В противном случае он будет таким же, как и другой вариант.

О чем подумать:

1) Должен ли я иметь промежуточную базу данных? Возможно, особенно если вы собираетесь тестировать изменения схемы.

2) Должен ли я иметь какое-то средство для перемещения данных между промежуточными и производственными системами?

3) Может ли катастрофический сбой моего промежуточного приложения удалить основное приложение? Наилучшая надежда - нет.

Ответ 2

Я бы добавил к этому, что Джамис Бак, создавший Capistrano, также создал драгоценный камень специально для создания многоступенчатой ​​среды с Capistrano. Вы можете сделать это без драгоценного камня, но драгоценный камень делает его еще проще. Вы можете найти его сообщение на нем с инструкциями здесь: http://weblog.jamisbuck.org/2007/7/23/capistrano-multistage

Там также очень полезная статья в книге прагматического программиста "Advanced Rails Recipes", в которой вы узнаете, как это настроить. Я обнаружил, что ответы на этот пост в сочетании с книгой Rails Recipes сделали это невероятно легко настроить.

StackOverflow не позволит мне добавить другую ссылку, но если вы перейдете в Google Advanced Rails Recipes, книга станет первым результатом.

Ответ 3

Я предполагаю, что это зависит от того, нужен ли промежуточный сервер любому, кроме вас. Если другие люди должны иметь доступ к нему, тогда вам понадобится еще один небольшой фрагмент, а затем вы можете использовать htaccess или правила брандмауэра, чтобы ограничить доступ к нему. Если кому-то еще не нужен доступ, я бы предложил использовать VMWare. Вы можете запускать его на своей машине или в запасной коробке, которую вы используете, или на очень дешевом ПК. Мы используем бесплатный сервер VMWare Server 2 для наших тестовых серверов для развертывания и развертывания, и он отлично работает. Это также упрощает создание новых тестовых серверов, просто дублируя настройку базовой виртуальной машины. Если вы находитесь на Mac, вы можете использовать VMWare Fusion, стоит денег, но я должен использовать его уже для тестирования IE.

Ответ 4

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

Вы используете Rails, Apache и Passenger. Настройте различные конфигурации Rails (и базы данных) и установите каждый из них как именованный VirtualHost. Защитите один с помощью htaccess. Создайте запись A из своего домена (постановка. *) И укажите там.

Конечно, они не полностью изолированы друг от друга. Вы можете разрушить все. К сожалению! Это, вероятно, не имеет значения.:)

Ответ 5

Используйте два отдельных сервера (VPS или что-то еще) так же, как вы можете сделать их (аппаратное и программное обеспечение) на базовом изображении. Автоматизируйте всю конфигурацию вашей производственной среды, так что ничего не делается вручную. Используйте эту автоматизацию для создания промежуточного сервера, который идентичен вашей производственной среде. Поддерживайте автоматизацию, чтобы обе среды находились в синхронизации и могли быть реплицированы по требованию.

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

Что касается стоимости, то VPS дешевы как чипы. Количество сбоев, связанных с простоями производства, которых вы избегаете, имея промежуточный сервер, будет платить за вашу промежуточную среду в кратчайшие сроки (если вы вообще не делаете никаких денег, и в этом случае время простоя не столько проблема, и вы можете пойти гайками с поломкой).