Идеальный сервер Rails

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

Должен ли он использовать apache или nginx?

Ruby Enterprise Edition или просто обычный Ruby?

Идеальный дистрибутив Linux?

MySQL, PostgreSQL или что-то еще?

Как должны быть выложены каталоги (где разместить ваши rails сайты или что-нибудь еще)?

Варианты развертывания?

Что-нибудь еще?

7
задан Thomas Owens 16 August 2010 в 00:12
поделиться

2 ответа

Следует использовать apache или nginx? Nginx кажется здесь предпочтительным путем, если вам не нужны определенные функции Apache. Если вы используете Passenger, поддерживаются как Apache, так и Nginx. Подробнее о Passenger здесь .

Ruby Enterprise Edition или просто обычный Ruby? Я почти уверен, что REE доступен только для Ruby 1.8, который больше не является предпочтительной версией для Rails 3. У Rails 3 были некоторые проблемы с 1.8, но они, возможно, уже исправили их. Однако в целом Ruby 1.9.2 хорошо работает с Rails 3.

Идеальный дистрибутив Linux? На самом деле это не имеет значения. Если вы не уверены, Ubuntu - хороший выбор, так как есть много знаний и довольно проста в использовании. На Slicehost есть множество отличных статей о том, как начать работу с VPS, и многие из них посвящены конкретно Ubuntu: http://articles.slicehost.com/ .

MySQL, PostgreSQL или что-то еще? Это определенно субъективно. MySQL определенно является наиболее распространенным из существующих, и если вы действительно не уверены, это хорошая отправная точка.Однако люди часто утверждают, что PostgreSQL чище и проще в использовании MySQL. Если вы только начинаете, я бы порекомендовал MySQL только из-за большого количества информации.

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

Варианты развертывания? Капистрано популярен. Вы просто фиксируете свои изменения и cap deploy , и все готово.

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

14
ответ дан 6 December 2019 в 11:45
поделиться

Я думаю, что kyl подытожил это довольно хорошо. Но я решил, что расскажу вам о том, что именно я использую со времен rails beta4 (и теперь с RC). Эта установка хорошо работает для меня:

Облачные серверы Rackspace Cloud - Дает вам полный контроль над сервером. Вы можете изменять размеры серверов на лету. Вы также можете делать снимки, если хотите продублировать свою установку для другого сайта. Это дешево и, на мой взгляд, лучше, чем облако Amazon.

CentOS 5.4 - надежный, но, как сказал kyl, возможно, любой дистрибутив будет работать нормально.

Ruby 1.9.2RC 2 - пока никаких проблем на Rails 3. Определенно буду использовать Ruby Enterprise, когда они портируют его на 1.9.2 (не уверен, что это в разработке, хотя??)

Nginx - быстрый и легкий. Мне он нравится гораздо больше, чем apache. Хорошо работает перед Passenger, mongrel и thin.

MySQL - просто личные предпочтения. Я использую его уже много лет. Легко настроить конфигурацию master/slave или master/master, если вам нужно масштабирование. Некоторые люди успешно используют sqlite, но я предпочитаю что-то более надежное.

Github - для меня это обязательный элемент контроля исходного кода. Bundler очень хорошо работает с github

Сервер приложений - я все еще обсуждаю, что с этим делать. Я был счастлив с Passenger 2.2.15, пока не увидел, сколько времени требуется для порождения новых процессов ruby для обработки параллелизма. У меня на порождение нового процесса уходит до 30 секунд, и приложение блокируется, так что никакие запросы не могут пройти, пока оно порождается. Сейчас я выясняю, в чем дело: в моем приложении или в Rails 3, который так долго загружается. Эта проблема исправлена в Passenger 3. Надеюсь, он будет выпущен в ближайшее время. В результате этого я, вероятно, буду использовать Thin или Mongrel до выхода Passenger 3.

Capistrano - отлично работает на Rails 3. Я бы рекомендовал найти несколько рецептов для версионирования вашего приложения с помощью git-тегов... или просто написать свой собственный.

Что-нибудь еще? Не совсем связано с сервером, но я бы рекомендовал использовать новый API плагинов для любой части вашего приложения, которая является многоразовой. Почитайте о рельсах и движках. Очень просто создать gem с помощью Jeweler и версионировать его на github с помощью jeweler rake tasks. Затем вы можете развернуть его из тега github или из master, добавив gem и источник github в свой Gemfile и установив или обновив его с помощью bundle. Недавно я перенес весь код моих общих приложений (блог, аутентификация и т.д.) на движки Rails 3, и он отлично работает. И каждый раз, когда мне нужно повторно использовать этот код, я просто бросаю его в Gemfile нового приложения.

3
ответ дан 6 December 2019 в 11:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: