Как настроить Apache с FastCGI и Ruby?

Как настроить Apache с FastCGI и Ruby?

Я прочитал много сообщений на форумах, руководств и т. д. о настройке apache под linux с fastcgi. Я пытаюсь запустить fcgi для некоторых моих разработок на ruby ​​(не rails), но я думаю, что это должно быть применимо к любому языку. Обратите внимание, что у меня уже установлены apache, fastcgi, ruby-fcgi и т. п. на моем веб-боксе.

Концептуально у меня с этим проблемы. Apache запускает указанные процессы fcgi по мере необходимости? Мне запускать их вместе с Apache? По сути, я пытаюсь добраться до точки, где я смогу задавать правильные вопросы, поэтому извините, если заголовок вводит в заблуждение.

решение1

Ну, между тем, я разобрался с этим. Поскольку на эту тему не было краткого описания, вот его начало. Когда я устраню все ошибки, я отправлю это на несколько обучающих сайтов.

  1. Убедитесь, что установлен базовый модуль fastcgi apache. Если вы используете ArchLinux, как я,mod_fcgid на aurработает. В других дистрибутивах установите mod_fcgid или mod_fastcgi. (Для тех, кому интересно, в чем разница, я не думаю, что она большая, поэтому я выбрал тот, который более активен.)

  2. В файле httpd.conf активируйте модуль, добавив строку в начало определений LoadModule. Не уверен, имеет ли это значение для каких дистрибутивов, но в Arch это былоLoadmodule fcgid_module modules/mod_fcgid.so

  3. Добавьте новый раздел в ваш httpd.conf. Я поместил его сразу под разделом cgid_module, но я почти уверен, что расположение будет произвольным.

    <IfModule fcgid_module>
      AddHandler fcgid-script .fgci
    </IfModule>
    
  4. Теперь, насколько я понимаю, любой файл с расширением .fcgi в каталоге, помеченном ExecCGI, теперь будет обрабатываться установленным модулем fastcgi. Я установилэтотпакет для предоставления Ruby привязок fastcgi, внутри каталога ExecCGI я написал этот тестовый скриптtest.rb.fcgi

    #!/usr/bin/ruby -w
    require 'fcgi'
    
    count = 0
    FCGI.each_cgi do
      puts "Content-type: text/html\n\n"
      puts "Hello, Ruby! FastCGI(#{count})"
      count = count + 1
    end
    

Теперь, когда вы переходите на эту страницу в вашем браузере, поскольку countона находится вне цикла fastcgi, она должна увеличиваться с каждым просмотром страницы. Если это так, fcgi настроен правильно.

решение2

Вам следует рассмотреть возможность использованияПассажирдля управления вашим приложением rails (даже если вы не используете функции rails, такие как ActiveRecord и т. д.). На нем работает множество веб-сайтов (плюс у них Rails Enterprise, меньше памяти, лучшая производительность)

решение3

Apache должен порождать их с помощью интерфейса fastcgi. Однако это оставит их работающими на некоторое время, и каждый процесс должен обработать более одного запроса, прежде чем он будет завершен Apache.

решение4

Apache запускает указанные fcgi-процессы по мере необходимости? Мне запускать их вместе с apache?

Apache создаст их для вас. Вы можете установить минимальное и максимальное количество процессов для создания в httpd.conf, и он создаст новые и удалит устаревшие в зависимости от объема входящих запросов. Пока у вас есть входящие запросы, ваш процесс будет продолжать работать.

Связанный контент