Rails SCGI Install

Попробовал по инструкции поставить на 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 собрал

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

Для второго апача конфиги: 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