Как выбрать хостинг для Rails

Опубликовано 27.04.2009

После установки на сайте чата ко мне стали периодически стучаться люди и задавать разные вопросы. Особенно часто я получаю вопрос о том, где лучше всего хостить Rails-приложения. Вопрос, прямо скажем, очень похож на “какую машину лучше всего купить”. Ответ на него очень сильно зависит от того, что вы собираетесь с этой машиной делать – дрифтовать по улицам, лазать по горам, возить холодильники или катать инвестиционных банкиров. Выбор хостингы в этом отношении нисколечки не отличается и тоже очень сильно зависит от того, какие приложения вы собираетесь хостить. Давайте рассмотрим наиболее важные параметры, которые нужно учесть при выборе хостинга.

Расположение

Перед тем, как выбирать хостинг-провайдера, вы должны четко осознавать, где живут ваши основные посетители. Если это россияне или жители СНГ – нет смысла покупать хостинг в США. Равно как и наоборот. Несмотря на то, что скорость каналов растет, разница будет сильно чувствоваться, особенно если в вашем проекте много графики, видео или другого тяжелого контента. Поэтому хостера лучше выбирать среди тех, чьи сервера располагаются в стране, в которой живут ваши посетители.

Тип хостинга

Платформа Rails гораздо более требовательна в плане хостинга, чем, скажем, PHP, поэтому далеко не каждый провайдер поддерживает эту платформу. А среди тех провайдеров, которые заявляют о поддержке, далеко не все предлагают приемлимый вариант развертывания. Поэтому shared-хостинг – не лучший вариант для размещения рельсового приложения. Если вы действительно очень сильно ограничены в средствах (хотя я уверен, что выделить лишние $10 на нормальный хостинг – надуманная проблема), то при выборе shared-хостинга с поддержкой Rails обратите внимание на то, чтобы хостинг-провайдер предоставлял для развертывания модуль Passenger, а не FastCGI или CGI. Два последних варианта – большой геморрой. Если не уверены в том, каким образом вам предстоит поднимать приложения на данном провайдере – обязательно проконсультируйтесь со службой поддержки.

Если все же нашлась лишняя десятка, то уже можно покупать VPS – виртуальный сервер с позможностью настройки. Этот вариант хорош тем, что вы не ограничены тем набором программного обеспечения, которое хостер счел необходимым, и вольны устанавливать необходимое ПО по своему вкусу. VPS приемлем для небольших и средних проектов со сравнительно небольшой нагрузкой и является идеальным вариантом для старта нового проекта.

Если же проект достаточно крупный или ресурсоемкий, то вам потребуется выделенный сервер (dedicaded) или даже cloud-платформа вроде Amazon EC2. Хотя, если вы работаете с таким проектом, вы наверняка уже все знаете сами :)

Далее речь пойдет преимущественно о VPS и Dedicaded.

Специализация

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

Объем памяти

Среднее Rails-приложение занимает в оперативной памяти порядка 100 мегабайт на один процесс, на меньшее вряд ли стоит рассчитывать (особенно если вы используете RMagic, но тут готовьтесь к худшему). Поэтому минимальный объем оперативной памяти, который можно считать приемлимым – 256 мегабайт. С ростом посещаемости вам придется поддерживать несколько процессов одновременно, поэтому оперативной памяти потребуется больше.

Объем дискового пространства

Необходимый объем дискового пространства зависит от того, будет ли в вашем проекте возможность загрузки изображений, видео и других файлов. Если нет – объем диска для вас практически не важен, само приложение занимает очень мало места. Если загрузка файлов имеет место, то объем диска нужно рассчитывать из общего количества файлов и их среднего объема. Например, для изображений с фотоаппарата можно посчитать так: до 5 мегабайт на изображение плюс еще 1 мегабайт на уменьшенные копии. Итого на каждые 1000 картинок – порядка 6 гигабайт.

Бэкап

Для VPS и dedicaded-хостинга весьма актуально то, как организовано резервное копирование данных. Если хостер берет эти заботы на себя и это включено в план – очень хорошо. Некоторые хостеры предлагают резервное копирование в качестве дополнительной услуги за небольшую плату. Если же резервного копирования не предусмотрено вовсе – можно относительно недорого организовать резервное копирование на Amazon S3. Так или иначе, этот момент обязательно нужно учитывать.

Масштабируемость

Хорошим проектам свойственно вырастать. Заранее покупать сверхмощный сервер не стоит, однако о возможности роста стоит задуматься заранее. При выборе хостера обратите постарайтесь узнать, насколько легко будет, например, увеличить объем оперативной памяти для проекта или объем диска. Если вы арендуете выделенный сервер, узнайте, насколько быстро хостер сможет поставить новый сервер для переезда.

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

Поддержка

Рано или поздно какие-то вопросы или проблемы с хостингом все равно возникнут, поэтому лучше выбрать хостера, который заранее дает ответы на наиболее часто возникающие вопросы. Установка и настройка ПО, обновление, бэкапы, масштабирование – чем больше ответов известно заранее, тем меньше нервов вы потратите в трудных ситуациях. Для решения особо сложных вопросов вам придется обращаться в службу поддержки, поэтому лучше заранее удостовериться, что с ней можно иметь дело. Сделать это проще всего попросив поделиться опытом тех, кто уже пользуется услугами выбранной вами компании.

Цена

Стоимость хостинга не должна являться оределяющим фактором. Если стоимость хостинга для вас важнее, чем надежность – возможно, вы выбрали не ту платформу. Подумайте, может еще не поздно перейти на PHP, его можно хостить практически бесплатно :)

Если вы все же уверены, что Rails – это ваш выбор, будьте готовы к тому, что стоимость нормального хостинга начинается где-то от $20. Это стоимость VPS с 256МБ оперативной памяти и 10ГБ диска. Найти дешевле довольно сложно, но можно.

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


Внимание! Это последняя заметка, которую вы можете прочитать в старой RSS-ленте. Если вам нравится читать Записки из тех.отдела через RSS – подпишитесь на новую ленту по адресу http://feeds2.feedburner.com/railorz

Хостинг Rails на VPS Linode

Опубликовано 07.10.2008

Данной заметкой в Записках открывается новая рубрика - гостевые посты. Сегодня у меня в гостях Анатолий Михайлов, ruby-разработчик из Омска, один из членов нашей команды на предстоящем турнире Rails Rumble 2008.


Как правильно выбрать и настроить хостинг с нуля!

  1. Цели и задачи, для выполнения которых мне необходим хостинг
  2. Выбор хостинг-провайдера, а также типа сервера (shared, vds, ds)
  3. Пошаговая инструкция со скриншотами
  4. Заключение

В процессе написания данной статьи я руководствовался следующими принципами: четкое и ясное понимание цели, детальное и пошаговое объяснение моих действий, и наконец, здравый смысл в решении данной задачи.

Итак, начнем. Хостинг мне нужен для того, чтобы:

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

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

Выбор был очень трудоемким и сложным процессом. В итоге выбран в качестве хостера был

Ниже перечислю источники, из которых я черпал информацию, а также имена программистов, которые помогли принять решение

  • http://groups.google.com/group/ror2ru/browse_thread/thread/62e8386d117a115a?hl=en
  • Иван Немытченко: “Перепробовал разных хостеров. В итоге переехал с slicehost.com на linode.com. Чем slicehost не угодил? - админка слабее гораздо, памяти меньше за ту же цену - гемы нормально не ставятся на 256 ”
  • Ryan Bates: “Although I haven’t tried it, I’m pretty sure Linode will work great. It’s similar to SliceHost which is what I have used in the past and have been very happy with it. Either one should be able to run the app fine on a 256 MB VPS. You may need to go higher if you have a lot of traffic.”
  • и др.

Почему я не рассматриваю российские хостинг-компании?

Ответ простой: долгое время я работал админом, в результате чего степень готовности, отказоустойчивости оборудования и канала интернет для меня играет первостепенную роль. Не то чтобы российские хостеры страдают хроническими поломками железа и плохими интернет-каналами, но зарубежные хостинг-провайдеры явно выделяются на их фоне. Пожалуйста, без споров. :)

Идем на сайт linode.com и проходим формальную регистрацию. Советую приобрести карту Visa Virtuon (банк-эммитент – Банк Москвы, например) для оплаты товаров и услуг в сети интернет.

Далее - минимум комментариев, скриншоты скажут сами за себя. Пошагово процесс регистрации и первоначальной настройки сервера:

Выбираем тарифный план

Вводим контактные данные

Получаем пиьсмо и подтверждаем регистрацию

Начинается самое интересное. Пройдя аутентификацию перед нами сногшибательный dashboard

Нажимаем Deploy a Linux Distribution

Перейдя в раздел Console задаем рутовый пароль для созданного образа

Раздел Network расскажет все о вашем сетевом интерфейсе

Далее несколько полезных функций

Поздравляю со счастливым приобретением!

Настройка Nginx+Thin. Все очень просто, ребята из SliceHost уже написали хорошую инструкцию :)

Безопасность - хорошая тема для разговора. Я применяю методы, описанные в данной статье


Если у вас есть какие-либо вопросы к Анатолию - вы можете задать их в комментариях или связаться с Анатолием напрямую:

E-mail / google_talk: mikhailov.anatoly(собака)gmail.com
Skype: mikhailov.anatoly
Блог: http://railsgeek.com

Если вам есть что рассказать читателям Записок о веб-разработке на Ruby - свяжитесь со мной по skype: rene-dekart

Ruby on Rails на хостинге Agava VPS (через mod_rails)

Опубликовано 26.08.2008

Один из старых клиентов, для которых я разрабатывал движок, решили переехать к новому хостеру. Путем недолгих изысканий был выбран VPS хостинг от Agava, план VPS Basic. В этой заметке я вкратце опишу процесс развертывания Rails-приложения на сервере Агавы с использованием Passenger (он же mod_rails). Для развертывания мы выбрали сервер под управлением операционной системы CentOS 5.2, контрольная панель ISPManager Lite.

Установка GCC

Сразу после регистрации сервера вам может потребоваться установить GNU C++ Compiler. Когда я первый раз настраивал аккаунт на Агаве, он был уже установлен, однако на новом аккаунте он почему-то отсутствовал. Поэтому его потребовалось установить:

yum install gcc-c++

При установке может возникнуть ошибка Error: Missing Dependency: kernel-headers >= 2.2.1 is needed by package. В этом случае необходимо обновить пакет kernel-headers. Я его ставил отсюда:

wget ftp://ftp.pbone.net/mirror/ftp.centos.org/5.2/os/i386/CentOS/kernel-headers-2.6.18-92.el5.i386.rpm
rpm -i kernel-headers-2.6.18-92.el5.i386.rpm

После этого все должно ставиться нормально.

Установка Ruby

Изначально на сервер не установлен интерпретатор Ruby, поэтому нам необходимо его установить. Чтобы сделать эксперимент максимально интересным, будем ставить не стандартный MRI, а Ruby Enterprise Edition оптимизированный для работы с Passenger.

Качаем архив с официального сайта, распаковываем и запускаем инсталлятор:

./installer

Следуем инструкциям в инсталляторе, там все прозрачно.

Установка MySQL

Следующий этап - установка gem’а для работы с MySQL. Сам сервер MySQL уже установлен, нужно только поставить дополнительные библиотеки:

yum install mysql-devel

Затем ставим сам gem:

gem install mysql

Идем дальше

Установка RMagick

Следующий этап - установка ImageMagick и RMagick. Я при установке следовал инструкциям, предложенным в этой статье, копипастить не буду :)

Установка Passenger (mod_rails)

Затем приступаем к установке Passenger. Для начала нам надо поставить дополнительные библиотеки для Apache:

yum install httpd-devel

Затем, чтобы Passenger нашел все исполняемые файлы, которые идут в составе Ruby, нам надо добавить путь до бинарников в наш .bash_profile:

PATH=$PATH:$HOME/bin:/opt/ruby-enterprise-1.8.6-20080810/bin

Вам необходимо поставить тот путь, куда вы установили Ruby.

Затем ставим gem и модуль для Apache:

gem install passenger
passenger-install-apache2-module

Подключаем модуль в нашем файле httpd.conf (у меня он находится по адресу /etc/httpd/conf/httpd.conf):

LoadModule passenger_module /opt/ruby-enterprise-1.8.6-20080810/lib/ruby/gems/1.8/gems/passenger-2.0.3/ext/apache2/mod_passenger.so
PassengerRoot /opt/ruby-enterprise-1.8.6-20080810/lib/ruby/gems/1.8/gems/passenger-2.0.3
PassengerRuby /opt/ruby-enterprise-1.8.6-20080810/bin/ruby

Через панель управления создаем нового пользователя и под его именем создаем новый WWW-домен. В httpd.conf автоматически добавится VirtualHost. Чтобы по на этом хосте заработали рельсы, нам необходимо поменять DocumentRoot таким образом, чтобы он указывал на папку public в нашем проекте:

<VirtualHost 123.45.67.89:80>
  ServerName mysite.ru
  DocumentRoot /var/www/mysite/data/www/mysite.ru/public
  SuexecUserGroup mysite mysite
  CustomLog /var/www/httpd-logs/mysite.ru.access.log combined
  ErrorLog /var/www/httpd-logs/mysite.ru.error.log
  ServerAlias www.mysite.ru mysite.ru
  ServerAdmin webmaster@mysite.ru
</VirtualHost>

Установка git

Для установки Git из исходников нам потребуются дополнительные библиотеки:

yum install gettext-devel expat-devel curl-devel zlib-devel openssl-devel

Поставив библиотеки, качаем и ставим сам git:

wget http://kernel.org/pub/software/scm/git/git-1.6.0.tar.gz
tar zxvf git-1.6.0.tar.gz
cd git-1.6.0
make all
make install

Как видите, все просто, с настройкой справится даже человек, не искушенный в настройке серверов (типа меня). Цены на хостинг тоже вполне доступные - от 559 рублей