Pull to refresh

Быстрая автоматическая установка Ruby on Rails на IIS 7

Reading time4 min
Views7.1K
Популярность фреймворка Ruby on Rails постоянно растет, общество становится шире и, если раньше об использовании Ruby на Windows говорилось редко, то сегодня это вполне реальная практика.

Такие проекты как RubyInstaller (http://rubyinstaller.org/) и RailsInstaller (http://railsinstaller.org/) значительно упрощают создание рабочей среды на Windows. Вы можете использовать нативный MRI 1.8 и 1.9, JRuby или даже IronRuby работающий на .NET. С Windows работает большинство gem-пакетов, причем благодаря DevKit (https://github.com/oneclick/rubyinstaller/wiki/Development-Kit) «сишные» джемы можно собирать прямо из исходников.

Однако, несмотря на активное развитие средств разработки, до сих пор Windows и в частности веб-сервер IIS практически не использовались как «продакшн» решение для развертки Rails приложений. Но с появлением нового инструмента Helicon Zoo на базе Web Platform Installer – эта ситуация поменялась.

Helicon Zoo


Helicon Zoo – это репозиторий веб фреймворков и приложений, позволяющий легко устанавливать и запускать Rails, Django (фактически любые rack, wsgi или FastCGI приложения) и Mojolicious на веб-сервере IIS.

Helcon Zoo использует Microsoft Web Platform Installer (http://www.microsoft.com/web/downloads/platform.aspx). Это репозиторий и среда развертывания веб приложений и фреймворков от Microsoft, которая уже содержит в себе множество ASP.NET и PHP приложений. Для реализации функционала понадобилось лишь создать собственный feed с продуктами, чтобы пользователи получили возможность удобной и простой установки из репозитория.

Однако просто добавить продукты в репозиторий недостаточно. Ядром Helicon Zoo является native IIS модуль, по сути, играющий роль моста между веб-сервером IIS и фреймворками на Ruby, Python и Perl и др. Модуль работает по протоколу FastCGI, который уже зарекомендовал себя как надежный и быстрый метод взаимодействия с веб сервером. Ввод-вывод обрабатывается асинхронно, используя технологию IOCP. В качестве транспорта используются именованные каналы либо сокеты. В ближайшее время разработчиками планируется полностью реализовать поддержку асинхронного FastCGI (к сожалению ни один из существующих на данный момент фреймворков асинхронный FastCGI не поддерживает).

Поддерживаются IIS 7, IIS 7.5, а также IIS Express.

Устанавливаем Ruby on Rails


Скачайте Web Platform Installer (http://www.microsoft.com/web/downloads/platform.aspx) и запустите его. В появившемся окне нажмите «Options»:

clip_image002

В опциях необходимо добавить ссылку на feed Helicon Zoo: www.helicontech.com/zoo/feed

clip_image004

Теперь если выбрать вверху «Application» а в меню слева перейти на «Tools», вы увидите новые приложения: «Blank Ruby on Rails Project», «Blank Django Project», «Blank Perl Project» и «Blank Mojolicious Project»:

clip_image006

Это пустые «Hello World» заготовки, которые устанавливают необходимые зависимости для дальнейшей разработки.

Нажмите на кнопку «Add» напротив «Blank Ruby on Rails Project», а затем на кнопку «Install».

Инсталлятор предложит установить следующие зависимости:

clip_image008

После нажатия на кнопку «I Accept» нужные пакеты будут загружены и установлены, после чего вам будет предложено настроить сайт для нового приложения.

Вы можете создать новый сайт либо выбрать существующий:

clip_image010

Когда установка и настройка закончены, приложение готово к запуску:

clip_image012

Под капотом


После установки «Blank Ruby on Rails Project» web.config файл для выбранного IIS-сайта выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

<system.webServer>

<handlers>

<add name="rails.project.x86" scriptProcessor="ruby.1.9.pipe" path="*" verb="*" modules="HeliconZoo_x86" preCondition="bitness32" resourceType="Unspecified" requireAccess="Script" />

<add name="rails.project.x64" scriptProcessor="ruby.1.9.pipe" path="*" verb="*" modules="HeliconZoo_x64" preCondition="bitness64" resourceType="Unspecified" requireAccess="Script" />

</handlers>

</system.webServer>

</configuration>

По умолчанию в качестве транспорта между IIS-модулем и воркером Ruby on Rails используются именованные каналы. Чтобы использовать сокеты, достаточно заменить параметр «scriptProcessor» на «ruby.1.9.tcp».

Все доступные скрипт-процессоры описаны в секции <heliconZooServer> файла applicationHost.config.

Через web.configтакже можно влиять на работу Rails-приложения. Так, например, по умолчанию оно запускается в отладочном режиме (RAILS_ENV = development). Чтобы переключиться в продакшн режим, вы можете установить переменную RACK_ENV следующим образом:

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

<system.webServer>

<heliconZoo>

<application name="rails.project.x64" >

<environmentVariables>

<add name="RACK_ENV" value="production" />

</environmentVariables>

</application>

</heliconZoo>

Секция <heliconZoo> в файле web.config используется в основном для установки переменных окружения при вызове воркера. По сути, через секцию <environmentVariables> вы можете передавать в приложение любые необходимые параметры. В руби они будут доступны через глобальный хэш «ENV».

Что дальше?


Работа над проектом Helicon Zoo ведется очень активно, компания-разработчик HeliconTech будет рада любым замечаниям и предложениям. На данный момент готовиться обновленная версия, в которой будет поддержка MRI 1.8, JRuby, а также Rails 2.3.

Коллекция «Blank» заготовок в скором времени будет расширена другими руби-фреймворками в частности Sinatra и готовыми приложениями, такими как RedMine и другие.
Tags:
Hubs:
+21
Comments64

Articles

Change theme settings