Я прочитал много сообщений на форумах, руководств и т. д. о настройке apache под linux с fastcgi. Я пытаюсь запустить fcgi для некоторых моих разработок на ruby (не rails), но я думаю, что это должно быть применимо к любому языку. Обратите внимание, что у меня уже установлены apache, fastcgi, ruby-fcgi и т. п. на моем веб-боксе.
Концептуально у меня с этим проблемы. Apache запускает указанные процессы fcgi по мере необходимости? Мне запускать их вместе с Apache? По сути, я пытаюсь добраться до точки, где я смогу задавать правильные вопросы, поэтому извините, если заголовок вводит в заблуждение.
решение1
Ну, между тем, я разобрался с этим. Поскольку на эту тему не было краткого описания, вот его начало. Когда я устраню все ошибки, я отправлю это на несколько обучающих сайтов.
Убедитесь, что установлен базовый модуль fastcgi apache. Если вы используете ArchLinux, как я,mod_fcgid на aurработает. В других дистрибутивах установите mod_fcgid или mod_fastcgi. (Для тех, кому интересно, в чем разница, я не думаю, что она большая, поэтому я выбрал тот, который более активен.)
В файле httpd.conf активируйте модуль, добавив строку в начало определений LoadModule. Не уверен, имеет ли это значение для каких дистрибутивов, но в Arch это было
Loadmodule fcgid_module modules/mod_fcgid.so
Добавьте новый раздел в ваш httpd.conf. Я поместил его сразу под разделом cgid_module, но я почти уверен, что расположение будет произвольным.
<IfModule fcgid_module> AddHandler fcgid-script .fgci </IfModule>
Теперь, насколько я понимаю, любой файл с расширением .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, и он создаст новые и удалит устаревшие в зависимости от объема входящих запросов. Пока у вас есть входящие запросы, ваш процесс будет продолжать работать.