Apache php fastcgi windows

Установка PHP как FastCGI под Apache (Windows 10)

При установке Битрикс столкнулся с необходимостью изменять настройки PHP в файле php.ini . Например, вот эти

Но, поскольку у меня PHP установлен как модуль Apache, эти изменения затронули все виртуальные хосты. Из-за этого перестал работать phpMyAdmin. Пришлось устанавливать PHP как FastCGI, чтобы для каждого виртуального хоста был свой файл php.ini .

Интерфейс FastCGI — клиент-серверный протокол взаимодействия вебсервера и приложения, дальнейшее развитие технологии CGI. По сравнению с CGI является более производительным и безопасным.

FastCGI ликвидирует множество ограничений CGI-программ. Проблема CGI-программ в том, что они должны быть перезапущены веб-сервером при каждом запросе, что приводит к понижению производительности.

FastCGI убирает это ограничение, сохраняя процесс запущенным и передавая запросы этому постоянно запущенному процессу. Это позволяет не тратить время на запуск новых процессов.

В то время как CGI-программы взаимодействуют с сервером через STDIN и STDOUT запущенного CGI-процесса, FastCGI-процессы используют Unix Domain Sockets или TCP/IP для связи с сервером. Это значит, что FastCGI-программы могут быть запущены не только на этом же сервере, но и где угодно в сети. Также возможна обработка запросов несколькими FastCGI-процессами, работающими параллельно.

Для начала скачиваем модуль mod_fcgid с сайта apachelounge.com, распаковываем и кладем в директорию modules сервера Apache. У меня это C:/wamp/apache/modules . Далее, переходим в директорию apache/conf и вносим изменения в файл конфигурации Apache httpd.conf :

В конец файла дописываем:

Последняя директива означает, что файл php.ini расположен в директории C:/wamp/php71 . Это будет файл конфигурации PHP по умолчанию. Строки, которые отвечают за работу PHP как модуля Apache, удаляем или комментируем:

Теперь редактируем файл виртуальных хостов httpd-vhosts.conf . У меня он расположен в C:/wamp/apache/conf/extra :

Для каждого виртуального хоста добавляем одну строчку, которая переопределяет переменную среды PHPRC . После этого берем дефолтный php.ini из директории C:/wamp/php71 и копируем в директорию каждого хоста. У меня это

  • D:/work/localhost
  • D:/work/localhost1
  • D:/work/localhost2
  • D:/work/localhost3

В каждом файле php.ini находим строки

и установливаем значение doc_root :

Теперь у каждого виртуального хоста будет свой php.ini . Осталось только перезапустить Apache, чтобы изменения вступили в силу.

Разные версии PHP

Если для какого-то проекта нужно использовать другую версию PHP, вносим изменения в файл httpd-vhosts.conf

У меня PHP 5.6 установлен в директории C:/wamp/php56 , поэтому именно оттуда я взял php.ini и скопировал в D:/work/localhost4 .

Чуть позже столкнулся с ошибкой при тестировании системы в Битрикс (Настройки • Инструменты • Проверка системы):

Проверил настройки php.ini , связанные с загрузкой файлов:

Вроде все в порядке. Тогда посмотрел еще логи Apache, и там увидел ошибку:

Значение по умолчанию FcgidMaxRequestLen равно 131072 байт (128 Кб). Добавил в конец файла httpd.conf :

Этого должно быть достаточно, но есть еще и другие настройки:

Режимы работы PHP: mod_php, FastCGI и PHP-FPM на VPS

Веб-серверы могут обрабатывать php-скрипты в разных режимах. Если выбрать подходящий вариант взаимодействия PHP и веб-сервера на сайте, например, PHP как CGI или Apache-модуль, это положительно отразится на его производительности.

Читайте также:  Файл конфигурации сети windows

Выбрать режим работы PHP можно на VPS с панелью управления ISPmanager и Plesk. На виртуальном хостинге REG.RU по умолчанию используется режим FastCGI.

Подробнее о том, какие режимы PHP поддерживаются на хостинге REG.RU, читайте в статье.

В этой статье мы рассмотрим основные режимы работы PHP.

PHP как модуль Apache (mod_php)

Модуль для веб-сервера Apache, который позволяет ему обрабатывать все запросы PHP, не используя сторонние модули.

Можно вводить переменные PHP в .htaccess.

отдельные пользователи на сервере с mod_php не могут вносить изменения, если у них нет прав доступа на все процессы, с которыми он работает. Иными словами, права веб-сервера должны выдаваться всем пользователям на сервере;

Низкий уровень безопасности, так как нельзя определить пользователя, который запустил конкретный процесс (все процессы выполняются анонимно под пользователем apache);

Ошибки в скриптах могут парализовать работу всего сервера;

Веб-серверы с mod_php медленно обрабатывают статические данные.

PHP в режиме CGI и FastCGI

PHP CGI — один из первых сценариев обработки php-скриптов сервером с помощью модуля mod_cgi. Сейчас он используется редко и считается устаревшим.

В этом режиме каждый php-запрос выполняется отдельным процессом. Из-за этого производительность сайта снижается, и на обработку скриптов требуется больше времени.

При создании сценария FastCGI учли медленную скорость обработки скриптов в CGI, поэтому в этом режиме используется циклическая обработка нескольких запросов одним процессом. FastCGI — это экономия оперативной памяти за счет сокращения количества запущенных процессов.

Пользователь обладает правами на выполнение всех скриптов на своем www-домене;

Безопасность (каждый запрос выполняется под отдельным пользователем, запуск небезопасного php-скрипта не повлияет на файлы других пользователей, которые находятся на одном с ним сервере);

Каждый пользователь на сервере может выбрать персональную версию PHP;

Отсутствие сбоев сервера при наличии ошибок в скриптах;

Обработка правил конфигурационного файла .htaccess, который поддерживается популярными CMS (WordPress, Joomla, 1C-Битрикс и пр.).

Чуть меньшая производительность по сравнению с модулем Apache;

Медленная обработка статических данных без связки с веб-сервером Nginx.

PHP в режиме FPM

FPM (FastCGI Process Manager) — альтернативная реализация PHP FastCGI. PHP FPM — это единственный модуль, который подходит для чистого веб-сервера Nginx.

Как работает PHP FPM:

Быстрая обработка статических данных;

Отсутствует необходимость в веб-сервере Apache;

Меньшее потребление оперативной памяти.

  • Отсутствует поддержка конфигурационного файла .htaccess. Это требует самостоятельной настройки аналогичных правил на стороне веб-сервера Nginx.

О выборе режима PHP

Выбор режима PHP зависит от требований ваших сайтов и доступных ресурсов сервера. В большинстве случаев мы рекомендуем использовать клиентам режим FastCGI, так как он подходит для корректной работы большинства CMS и требует меньше действий со стороны пользователя.

Закажите сервер с чистой CentOS или панелью управления ISPmanager всего за пару минут.

Apache php fastcgi windows

Профиль | Отправить PM | Цитировать

Здравствуйте.
Очень сильно интересует данный вопрос, необходимо произвести установку FastCGI.
Для установки использовал мануал http://dev.catalyst.perl.org/wiki/de. lyst_framework

Используемый Apache версии 2.2.11
Strawberry Perl for Windows 5.10.1.0

Все проделал по инструкции, трабл только при конфиге самого апача. =\

Суть в том, что у меня на сервере уже до этого были настройки под использование Cgi
Может кто из бывалых администраторов подсказать как правильно подкорректировать конфиг, дабы разделить Cgi скрипты и fast-cgi?

Читайте также:  Как настроить сенсорный экран windows 10

Только возникает одна проблема, после проделывания всех шагов
Страница с приложением webapp_fastcgi.pl открывается нормально, не понятно почему не грузиться простая картинка
путь до которой прописан в самой странице>> хттп http://localhost:10101/static/images/catalyst_logo.png
путь на диске D:\Home\www\WebApp\root\static\images\

так же не понятно почему, перестает работать просто путь до cgi-bin который указан в этом же конфиге.

Может кто из знающих дать совет, как оставить старое расположение cgi-bin вместе с используемыми программами читаемыми из конфига D:/home/cgi/ и в то же время развернуть новый путь localhost/fcgi-bin/ где будут лежать скрипты для fast cgi

З.ы. если возникает вопрос: Почему пытаюсь, остаться на апаче?
из-за того, что прикручен svn))) Дабы не плодить инсталяции веб-серверов, хотелось бы разобраться с инсталяцией фаст-сиджиай под Апач, сам по себе веб сервер не плохой, ед. минус норм мануала не нашел =\

Apache 2.x on Microsoft Windows

Этот раздел содержит инструкции по установке PHP для Apache 2.x на системы Microsoft Windows. Мы также имеем инструкции для пользователей Apache 1.3.x на отдельной странице.

Замечание: Поддержка Apache 2.2

Пользователям Apache 2.2 следует обратить внимание на то, что DLL файл для Apache 2.2 называется php5apache2_2.dll , а не php5apache2.dll и он доступен только для PHP 5.2.0 и более поздних версий.

Вам настоятельно рекомендуется ознакомиться с » Документацией по Apache, чтобы получить базовые знания о Apache 2.x Server. Также перед чтением данной справки обратите внимание на » Рекомендации для Windows по Apache 2.x.

Apache 2.x предназначен для работы в серверных версиях Windows, таких как Windows NT 4.0, Windows 2000, Windows XP или Windows 7. Хотя Apache 2.x может использоваться на Windows 9x, эти платформы не поддерживаются полностью, и некоторые функции не будут работать правильно. Исправление этой ситуации не планируется.

Скачайте наиболее актуальную версию » Apache 2.x и подходящую версию PHP. Следуйте Пошаговому руководству по установке и вернитесь для продолжения интеграции PHP и Apache.

Существует три пути установки PHP для Apache на Windows. Вы можете запустить PHP как обработчик, как CGI, или под FastCGI.

Замечание: Помните, что при указании путей в конфигурационных файлах Apache под Windows, все обратные слеши, например, c:\directory\file.ext должны быть изменены на прямые: c:/directory/file.ext . Для путей с директориями также может понадобиться слеш в конце.

Установка PHP как обработчика под Apache

Вам необходимо добавить следующие строки в ваш конфигурационный файл Apache httpd.conf для загрузки PHP-модуля для Apache 2.x:

Пример #1 PHP как обработчик Apache 2.x

Замечание: Не забудьте указать актуальный путь к директории PHP вместо C:/php/ в приведенном примере. Позаботьтесь, чтобы в директиве LoadModule использовались либо php5apache2.dll либо php5apache2_2.dll и удостоверьтесь, что указанный файл фактически находится по пути, который вы указали в директиве.

Приведенная выше конфигурация позволит PHP обработать любой файл, который имеет расширение .php, даже если имеются другие расширения. К примеру, файл с именем example.php.txt будет запущен обработчиком PHP. Чтобы гарантировать, что только файлы, которые имеют расширение .php будут запущены, используйте следующую конфигурацию:

Запуск PHP как CGI

Вы должны обратиться к документации » Apache CGI для более полного понимания о запуске CGI под Apache.

Читайте также:  Hdd partition tool windows

Для запуска PHP как CGI, вам необходимо поместить ваши php-cgi файлы в директорию, обозначенную как директория CGI, используя директиву ScriptAlilas.

После этого вам необходимо добавить строку #! в PHP файлы, указывающую на местоположение исполняемого файла PHP.

Пример #2 PHP как CGI под Apache 2.x

Используя установку CGI, ваш сервер открыт перед несколькими возможными уязвимостями. Пожалуйста, ознакомьтесь с разделом «Безопасность CGI» чтобы узнать, как можно защитить себя от таких атак.

Запуск PHP под FastCGI

Запуск PHP под FastCGI имеет ряд преимуществ по сравнению с запуском как CGI. Установка же довольно проста:

Получить mod_fcgid здесь: » http://httpd.apache.org/mod_fcgid/. исполняемые файлы под Win32 доступны для скачивания с этого сайта. Установите модуль в соответствии с прилагаемыми инструкциями.

Настроить свой веб сервер как указано ниже, позаботившись о соответствии всех путей установки на вашей конкретной системе:

Пример #3 Конфигурация Apache для запуска PHP как FastCGI

Менеджер процессов FastCGI (FPM)

Содержание

FPM (FastCGI Process Manager, менеджер процессов FastCGI) является альтернативной реализацией PHP FastCGI с несколькими дополнительными возможностями обычно используемыми для высоконагруженных сайтов.

Эти возможности включают в себя:

продвинутое управление процессами с корректной (graceful) процедурой остановки и запуска;

возможность запуска воркеров с разными uid/gid/chroot/окружением, а также запуска на различных портах с использованием разных php.ini (замещение safe_mode);

логирование стандартных потоков вывода (stdout) и ошибок (stderr);

аварийный перезапуск в случае внезапного разрушения opcode-кеша;

поддержка ускоренной загрузки (accelerated upload);

«slowlog» — логирование необычно медленно выполняющихся скриптов (не только их имена, но также и их трассировки. Это достигается с помощью ptrace и других подобных утилит для чтения данных исполнения удалённых процессов);

fastcgi_finish_request() — специальная функция для завершения запроса и сброса всех буферов данных, причём процесс может продолжать выполнение каких-либо длительных действий (конвертирование видео, обработка статистики и т.п.);

Динамическое/статическое порождение дочерних процессов;

Базовая информация о статусе SAPI (аналогично Apache mod_status);

Конфигурационный файл, основанный на php.ini.

User Contributed Notes 8 notes

Init script setup
===

You will probably want to create an init script for your new php-fpm. Fortunately, PHP 5.3.3 provides one for you, which you should copy to your init directory and change permissions:

/sapi/fpm/init.d.php-fpm.in /etc/init.d/php-fpm
$ chmod 755 /etc/init.d/php-fpm

It requires a certain amount of setup. First of all, make sure your php-fpm.conf file is set up to create a PID file when php-fpm starts. E.g.:
—-
pid = /var/run/php-fpm.pid
—-
(also make sure your php-fpm user has permission to create this file).

Now open up your new init script (/etc/init.d/php-fpm) and set the variables at the top to their relevant values. E.g.:

prefix=
exec_prefix=
php_fpm_BIN=/sbin/php-fpm
php_fpm_CONF=/etc/php-fpm.conf
php_fpm_PID=/var/run/php-fpm.pid

Your init script is now ready. You should now be able to start, stop and reload php-fpm:

$ /etc/init.d/php-fpm start
$ /etc/init.d/php-fpm stop
$ /etc/init.d/php-fpm reload

The one remaining thing you may wish to do is to add your new php-fpm init script to system start-up. E.g. in CentOS:

$ /sbin/chkconfig php-fpm on

Disclaimer: Although I did just do this on my own server about 20 mins ago, everything I’ve written here is off the top of my head, so it may not be 100% correct. Also, allow for differences in system setup. Some understanding of what you are doing is assumed.

Оцените статью