Rails SCGI Install

Установка на Linux

Попробовал по инструкции поставить на FC4.
Такая же связка заработала на RHEL4

Что делал, что получилось:

1. gem install cmdparse
2. gem install highline
3. gem install scgi_rails (Может понадобиться wget http://www.zedshaw.com/downloads/scgi_rails/scgi_rails-0.4.3.gem я сначала скачал)
4. Потом при помощи checkinstall собрал

http://flatsourcing.com/~timurv/ruby/scgi/mod_scgi-20060221-1.i386.rpm

Для второго апача конфиги: http://flatsourcing.com/~timurv/ruby/scgi/scgi.conf -> /etc/httpd/conf.d/ http://flatsourcing.com/~timurv/ruby/scgi/hab.tsweb.toa -> /etc/httpd/conf.d/vhosts/ или по вкусу

Все замечательно заработало.

Остались вопросы, надо придумать какой то скриптик который положить в init.d чтобы поднимался scgi вместе с апачем + еще какой то монитор чтобы это все не отваливалось

Установка на win32

вот главная страничка: http://www.zedshaw.com/projects/scgi_rails/

здесь для установки на win32: http://www.zedshaw.com/projects/scgi_rails/win32.html

Curt Hibbs сделал скомпилированные версии scgi модуля (mod_scgi.so) для apache1/apache2 — их можно скачать. прямая ссылка: http://www.zedshaw.com/downloads/scgi_rails/apache2-mod_scgi-1.7a-win32.zip

вот установка:

в httpd.conf после mod_rewrite модуля (который должен быть разкоментирован), добавить (соотв. mod_scgi.so — должен быть переписан в папку modules):

LoadModule scgi_module modules/mod_scgi.so

далее добавляем "точку связи":

SCGIMount / 127.0.0.1:9999

это означает что процесс SCGI с которым apache2 будет общаться — расположен на той же самой машине и запущен на 9999 порту, т.е. отсюда следует что можно запустить SCGI процесс на другой машине и т.д.

также слэш — ‘/’ это точка "монтирования" для урлов, т.е. запросы на корневой урл, будут "транслироваться" SCGI процессу, можно "смонтировать" ну другой, к примеру:

SCGIMount /rails/cookbook 127.0.0.1:9999

тогда только запросы начинающиеся с "/rails/cookbook" попадали к SCGI. причем в этом случае возможно потребутеся корректировка routes.rb, но это уже другая история.

здесь — http://www.zedshaw.com/downloads/scgi_rails/httpd.conf можно посмотреть пример конфигурации.

далее необходимо скачать сам модуль SCGI для руби: http://www.zedshaw.com/downloads/scgi_rails/scgi_rails-0.4.3.zip

устанавливаем:

* разархивируем папку "scgi_rails-0.4.3"
* заходим внутрь и набираем: ruby setup.rb
* устанавливаются 3 файла в c:/ruby/bin/ :
o scgi_cluster
o scgi_ctrl
o scgi_service

для работы с "scgi_ctrl" дополнительно нужны

cmdparse: http://rubyforge.org/frs/download.php/5587/cmdparse-2.0.0.zip — скачиваем, разархивируем, устанавливаем:

ruby setup.rb config
 ruby setup.rb setup
 ruby setup.rb install

highline: http://rubyforge.org/frs/download.php/8696/highline-1.0.2.zip — скачиваем, разархивируем, устанавливаем:

ruby setup.rb

теперь в идеале должна работать команда "scgi_ctrl", — она будет работать если linux, но для win надо сделать .bat файл:

заходим в c:/ruby/bin/

создаем файл "scgi_ctrl.bat", с содержимым:

@ruby "c:/ruby/bin/scgi_ctrl" %*

теперь переходим в корень, нашего любого rails приложения и набираем

scgi_ctrl

должен вывестись хелп (т.к. нет команд):

Error while parsing command line:
 No command given

Usage: scgi_ctrl [options] COMMAND [options] [COMMAND [options] ...] [args]

Available commands:
 config Configure the SCGI server
 help Provide help for individual commands
 monitor Monitor the application
 reconfig Reconfigure the SCGI servers with a new config
 restart Restart the application
 start Start the application
 status Get status
 stop Stop the application
 version Show the version of the program

Global options:
 -u, --control-url URL DRuby URL to run control on (same as SCGI -1000)
 -c, --config PATH Config file to use (#{SCGI::DEFAULT_CONFIG})
 -h, --help Show help
 -v, --version Show the version of the program

теперь надо запустить конфигурацию, причем для win32 надо указать ключик -S, т.к. работа с сигналами на данной платформе будет отключена:

scgi_ctrl config -S

будет запрошен пароль.

после этого создастся файлик — ./config/scgi.yaml

который содержит настройки для scgi процесса (порт/хост/режим).

теперь пробуем запустить scgi процесс (находясь всё в той же корневой папке rails проекта):

для linux систем это будет

scgi_ctrl start
 scgi_ctrl stop

но для win32 это будет:

scgi_service

предварительно надо сделать файлик "scgi_service.bat" в c:/ruby/bin/ папке, с содержимым:

@ruby "c:/ruby/bin/scgi_service" %*

после запуска

scgi_service

появляется процесс "ruby" и в логе "./log/scgi.log" запись:

[INF][816] POSIX signal control disabled.
 [INF][816] Running in production mode on 127.0.0.1:9999

для остановки scgi набираем Ctrl+Break