Существует множество способов настройки сервера Rails. Я не знаю, есть ли такая вещь, как «идеальный» конфиг. Я расскажу вам, как я настроил свой сервер и почему.
Операционная система : Linux , любой дистрибутив.
Это единственная серверная платформа, которая имеет какой-либо смысл. Сообщество Ruby сконцентрировано на Linux, но BSD также был бы идеальным выбором. Мне наиболее комфортно с Linux.
OSX - отличная платформа для разработки, но дополнительные затраты на самом деле ничего не покупают на стороне сервера, которую вы не можете получить в Linux. И Apple постепенно сворачивает платформу Xserve, так что, скорее всего, там нет будущего. Даже не думайте об использовании Windows .
Веб-сервер : Apache + Phusion Passenger
Я рекомендую Apache, потому что он везде . Все это знают. Получить поддержку очень просто.
Phusion Passenger - вероятно, самый простой сервер приложений для запуска. Вот пример конфигурации VirtualHost:
<VirtualHost x.x.x.x:80>
ServerName xxxx.com
DocumentRoot /var/www/xxxx/current/public
PassengerHighPerformance on
<Directory "/var/www/xxxx/current/public">
AllowOverride all
Options -MultiViews
</Directory>
AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/json
AddOutputFilterByType DEFLATE image/jpeg, image/png, image/gif
</VirtualHost>
Вот и все. (И большая часть этого не является строго необходимой)
Ruby интерпретатор : Ruby Enterprise Edition
Я использую это вместо vanilla MRI, потому что это немного более эффективно использует память, что имеет большое значение для сервера. Он также предназначен для интеграции с пассажиром.
Одним из недостатков REE является то, что он основан на 1.8.7
. Возможно, вы захотите использовать 1.9.2
вместо этого, потому что это значительно повышает производительность.
Управление драгоценными камнями : RVM
RVM позволяет создавать изолированную среду гемов для различных приложений в случае возникновения конфликтов версий. Также рекомендуется для вашей среды разработки.
Система развертывания : Capistrano
Если вы не используете Capistrano, вам следует. Это позволит вам сэкономить много времени при развертывании продукции. Это также сделает откат к предыдущей версии простым, если есть проблема.
У вас также должен быть установлен ExceptionNotifier . Если на вашем производственном сервере есть исключение, вы должны знать об этом.
Я также настоятельно рекомендую проверить NewRelic RPM для профилирования. Даже бесплатная версия предоставляет полезную информацию.