apache php fastcgi windows

Apache 2.x on Microsoft Windows

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

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

Вам настоятельно рекомендуется ознакомиться с » Документацией по 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.

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

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

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

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

Запуск PHP как CGI

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

Для запуска 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

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Apache + mod_fcgi

Цель данной статьи показать как добавить поддержку запуска PHP как модуля FastCGI. По результатам некоторых тестов, данная конфигурация является более быстрой чем PHP как модуль Apache (mod_php) и как модуля CGI (mod_cgi). Результаты моих тестов показали, что сайт, где php работает как модуль Apache проигрывает в производительности 1 мс сайту с FastCGI. Так же, конфигурация FastCGI безопаснее, т.к. позволяет запускать Apache от пользователя, отличного от пользователя веб-сервера.

Читайте также:  мойка двигателя диэлектриком что это

Более детально о том, что такое FastCGI нам может рассказать интернет. Привожу цитату из wikipedia:

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

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

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

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

lighttpd включает в себя внутренний распределитель нагрузки FastCGI, который может использоваться для распределения сразу на несколько FastCGI-серверов. В отличие от иных решений, в кластере должен находиться только FastCGI-процесс, а не целый веб-сервер. Это позволяет использовать FastCGI-процессу больше ресурсов, что характерно, например, для load-balancer+apache+mod_php.

При сравнении php-FastCGI с apache+mod_php, необходимо обращать внимание на то, что FastCGI обеспечивает дополнительную безопасность, как, например, запуск FastCGI процесса под пользователем, отличным от пользователя web-сервера, а также может находиться в chroot’е, отличном от chroot’а веб-сервера.

При сравнении perl-FastCGI с apache+mod_perl(1,2), то, кроме вышеуказанного, заметно, что для разделяемого использования памяти между процессами, реализуемого в mod_perl через startup.pl, необходим FastCGI — менеджер процессов, реализованный на Perl. Это реализуется модулем FCGI::ProcManager и надстройкой над ним, FCGI::Spawn.

Установка

Ставить будем из портов:

Так же важно убедиться, что PHP поддерживает FastCGI:

Вы должны увидеть следующую строчку:

Если этого нет, то надо будет пересобрать PHP с поддержкой FastCGI.

Источник

Windows Apache PHP FastCGI Setup

If you’re like me, you prefer installing Apache and PHP on your own without the use of WAMPServer. The goal is to setup the latest Apache server with PHP 5 and PHP 4 using FastCGI.

If you’re like me, you prefer installing Apache and PHP on your own without the use of WAMPServer. Typically I install PHP as an Apache module, but this time I wanted to try using FastCGI and get acquainted with the setup. I’ve just finished setting up my laptop as an extra dev machine and have been using it with no issues.

The Goal

The goal is to setup the latest Apache server (2.2.17 as of this writing) with PHP 5 and 4 (5.3.3 and 4.4.9) using FastCGI (2.3.6). I will be making the assumption that you’re pretty familiar with computers and perhaps have done this once or twice before.

Getting It All Installed

You will first need to get the install packages/binaries for Apache, PHP 5 (read the V6/V9 instructions carefully), PHP 4 (or other releases) and FastCGI.

The PHP 5 installation is also pretty straight forward, I like to use the MSI installer to make things go a little quicker and I like being able to select/deselect the extensions I want activated.

During the wizard setup you will be prompted select a web server setup, select “Other CGI” (if Apache is currently running, stop the service so the installer can properly access the httpd.conf file). I generally install PHP at “C:/bin/php”.

Apache Setup

Open up “C:/bin/apache/conf/httpd.conf” and do the following:

At the bottom of your httpd.conf file add the following, my PHP installation is at “C:/bin/php” (if yours is different you may need to make adjustments):

If you are having problems restarting the apache service, I find that a computer reboot helps.

Virtual Hosts Setup, With PHP 4

I am going to show you the way I setup virtual hosts on my system. I use the “httpd-vhosts.conf” file to define the vhosts that I need. I typically assign a project to its own dedicated virtual host.

I also use the system “hosts” file to assign custom domain names to each vhost. I use “.dev” as the TLD for all my vhosts (you’ll see what I mean shortly).

First off lets setup the vhosts, here is my “httpd-vhosts.conf” file:

Читайте также:  магнитные бури что такое кратко

So lets talk about the file … you’ll notice that I setup a “projects” folder at “C:/bin/apache/projects”. Each of my projects are then subdivided in this folder, see “farinspace” and “wpalchemy”.

Also notice the ServerName and ServerAlias directives, when I type “http://farinspace.dev” or “http://wpalchemy.dev” in my browser I am able to access each vhost by name (remember, before you can do this you will still need to setup your “hosts” file, see below).

Here is my “hosts” file:

As you add more Apache vhosts, simply modify your “hosts” file with new names (you will likely need administrator rights to edit this file, run your editor as administrator).

At this point you will need to restart Apache and create yourself a “phpinfo.php” file to test your installation.

Related posts

14 responses to “Windows Apache PHP FastCGI Setup”

Thanks Dimas!
I’ve always ran php as an apache module, but since 5.3, the thread safe versions and the zend debuggers no longer agree. So like many other windows zend debugger users, I’m switching to CGI. I didn’t realize how much faster fastcgi is until I followed your excellent instructions and got it going.

Thanks again for sharing!

With my existing apache 2.2.9 – I don’t know in this case Apache version matters – I installed php5.3.4 on my Vista box as you described. Everything worked fine, but only the non thread safe v6 version worked, the thread safe version broke with unmature end of script headers.
V F

thank you very much for your information on installing fastcgi for apache.
i run it on windows 7, everything fine as your recommend.
khamla

Thanks for documenting this. I have tried several times unsuccessfully to get this working, but this tutorial took the confusion out of the process.

I am running Apache 2.2 with PHP 5.3.3 VC9 NTS on Windows 7.

Worked great and fixed my ZendDebugger issue.

I am running Apache 2.217 with PHP5.3.6 VC9 NTS on Win Vista.

You don’t have permission to access /phpmyadmin/index.php on this server.

it works fine with index.html files so I suppose something is wrong with the php installation or something else? but I already tried editing the apache config and googling a lot with no success…

and yes I did do: DirectoryIndex index.php, idk how to fix this please help me.

@gijs, before trying to get started with your phpmyadmin, do a basic test with a phpinfo.php file. Apache config has never been my strong point, but I am persistent. You may need to get it to a working point and then slowly add/remove directives to see what works and what doesn’t. Additionally I have been puzzled at times and a reboot (for what ever reason) has helped clear issues.

This might be late but gijs might be missing the ExecCGI option in his httpd directory configuration

I found I had to add Indexes and ExecCGI options to and also to the directory block for the document root in order to make this work.

Thanks — very helpful!

Thanks for an easy-to-follow guide on this set-up. It is perfect for someone new to working with Apache.

I am having trouble understanding one part. In the Installation section step 4, you say to unpack the FastCGI files and place the manual and modules folders in the Apache directory. Those directories already exist. Should I assume I am to move files from the FastCGI directories into these folders as they fit? Can you elaborate a bit on where exactly these files go, please?

Thanks a lot! This is the only guide that actually worked for me.

I am beginning to return to web programming after a substantial hiatus (due to extreme illness) and am working on setting up Apache 2.4 along with all else I need for web programming. First question: “Has anything of significance changed in these packages or the server since this was written?”

Most of my web programming experience, from years ago, was done using Perl (which I am getting back to), but I also have an interest in PHP, python and ruby. I never had set up anything for cgi programming except mod_cgi. But I want to experiment with FastCGI, so this page is priceless to me. But what is the relation between this package (mod_fcgid) an modules I have seen, but not yet downloaded, such as mod_FastCGI, mod_perl, mod_php, mod_ruby, mod_python, &c. I want to strengthen my understanding of PHP and learn ruby and python.

Читайте также:  К чему снится печь кексы во сне для женщины

I also want to do a bit of experimenting, testing and comparing each package that purports to provide FastCGI services (on my Windows box) with the ancient default of mod_cgi.

Also, I need to know, if anyone here knows, whether or not the FastCGI libraries will work properly with products out there such as WordPress.

Any guidance will be appreciated. Thanks.

Ted, while I haven’t used this exact setup in years, Apache and FastCGI/FPM are still relevant, my article may be outdated, so I do encourage you and others to continue to search. However, the one tech I would recommend investing some time in would be “Docker”. Additionally, “nodejs” has interwoven itself into nearly every part of my dev process. Good luck!

Источник

Apache, fastcgi и c++: «Hello, world»

Вступление: FastCGI

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

Веб-сервер

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

Возможные альтернативы:
Nginx и Lighttpd имеют «родную» поддержку интерфейса fastcgi и их использование более предпочтительно на «продакшн»-серверах. Можно также использовать MS IIS.

Mod_fastcgi, mod_fcgid

Мне известно два модуля при помощи которых осуществляется поддержка fastcgi-интерфейса в апаче, это mod_fastcgi и mod_fcgid.
Mod_fastcgi разрабатывается компанией Open Market c 1997года. Последняя версия 2.4.6 была обновлена 13го ноября 2007 и, как уверяют авторы, является очень стабильной.
Mod_fcgi, судя по домену, разрабатывается китайскими программистами. Последняя версия 2.2 датирована 31июля 2007. Отличительными особенностями от mod_fastcgi являются: новая модель управления fastcgi-программами, обнаружение ошибок в работе fastcgi-программ. Модуль имеет бинарную совместимость и поэтому перекомпилировать программы, работающие под mod_fastсgi нет необходимости.
Используя development kit с fastcgi.com для разработки программ, я решил, что более уместно будет использовать mod_fastcgi, т.к. они используют общую библиотеку libfcgi.

Типы запуска fastcgi-программ

Используя mod_fastcgi можно запускать программы тремя различными способами: динамически, статически и удаленно.

Методы взаимодействия:

Меня интересует прежде всего работа с tcp socket’ом и удаленным способом запуска fastcgi-программы, потому что это дает совместимость работы с другими веб-серверами, а также предоставляет более простую возможность отладки.

Fastcgi libraries

Не так уж и много существует библиотек помогающих создавать fastcgi-программы на C/C++. Наиболее популярна libfcgi.lib, которая поставляется в составе development kit от fastcgi.com. Библиотека, честно сказать, предоставляет небогатый функционал для работы.
Существует также Fastcgi++ библиотека классов на С++.
Так как это моя первая fastcgi-программа, то я буду использовать старую, проверенную библиотеку libfcgi.lib.

Hello_world.fcgi

Программа использует для коммуникации TCP Socket, открывая порт номер 9000. В браузере выводится строка «Fastcgi: Hello, world».
Используемые функции:
int FCGX_Init( void );
— Инициализация библиотеки FCGX
int FCGX_OpenSocket( const char *path, int backlog);
— Открывает слушающий сокет (Параметры: path – имя сокета, backlog – глубина стека запросов ).
int FCGX_InitRequest(FCGX_Request *request, int sock, int flags);
— Инициализируем структуру запроса для использования внутри FCGX_ Accept_r (Параметры: request – указатель на структуру запроса, sock – слушающий сокет используемый совместно с request, flags – флаг запроса (доступные флаги: FCGI_FAIL_ACCEPT_ON_INTR – не вызывать повторно accept при разрыве ).
int FCGX_Accept_r(FCGX_Request *request);
— Получает новый запрос на обработку.

Полный текст программы:
#include

int main( int argc, char * const argv[] )

std::string port= «:9000» ; //Задаем номер порта TCP

int listenQueueBacklog = 400; //Глубина стека запросов

FCGX_Stream *in, *out, *err;

if (FCGX_Init()) exit(1); //Инициализируем библиотеку перед работой.

int listen_socket = FCGX_OpenSocket(port.c_str(), listenQueueBacklog); //Открываем новый слушающий сокет

if (listen_socket if (FCGX_InitRequest(&request, listen_socket, 0)) exit(1); //Инициализируем структуру запроса

while (FCGX_Accept_r(&request) == 0)

FCGX_FPrintF(request.out, «Content-type: text/html\r\n\r\n fastcgi \n

Fastcgi: Hello world.

FCGX_Finish_r(&request); //Завершаем запрос

Vhosts.conf

NameVirtualHost 127.0.0.1: 80
VirtualHost 127.0.0.1: 80 >
ServerAdmin mail@localhost
DocumentRoot «C:/Apache2/cgi-bin»
ServerName «helloworld.local»

Источник

Образовательный портал