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