УДК 004.4
Латыпов Э. Ф. студент 4 курса
факультет информационных систем и технологий Поволжский Государственный Университет Телекоммуникаций и Информатики
Россия, г. Самара
Latypov E.F. 4year student Faculty of Information Systems and Technologies Volga State University of Telecommunications and Informatics
Russia, Samara city НАСТРОЙКА РАБОТЫ PHP В РЕЖИМЕ FASTCGI (APACHE) Аннотация: В рамках данной статьи рассматривается конфигурирование PHP в режим FastCGI(Apache).
Ключевые слова: FastCGI, Apache, Веб-сервер, PHP.
SETTING UP PHP WORK IN THE FASTCGI MODE (APACHE) Annotation: This article discusses how to configure PHP in FastCGI (Apache) mode.
Keywords: FastCGI, Apache, Web-server, PHP.
Изначально, Common Gateway Interface, "общий интерфейс шлюза" -это стандартный протокол, который описывает, как веб-сервер должен запускать прикладные программы (скрипты), как должен передавать им параметры HTTP-запроса, как программы должны передавать результаты своей работы веб-серверу. Прикладную программу, взаимодействующую с веб-сервером по протоколу CGI принято называть шлюзом, хотя более распространено название CGI-скрипт или CGI-программа.
FastCGI - это дальнейшее развитие технологии CGI, которая является более производительной и безопасной, а также снимает множество ограничений CGI-программ.
FastCGI программа работает следующим образом: в качестве процесса программа единожды загружается в память (независимо от HTTP-сервера), а затем входит в цикл обработки запросов от HTTP-сервера. Один и тот же процесс обрабатывает несколько различных запросов один за другим, что отличается от работы в CGI-режиме, когда на каждый запрос создается отдельный процесс, выключающийся после окончания обработки.
Приступим к настройке работы сайта в режиме FastCGI(Apache). Для начала необходимо установить модуль FastCGI: [root@testserver www]# yum install mod-fcgid Далее необходимо отредактировать конфигурационный файл /etc/httpd/conf.d/fcgid.conf, добавив директиву: PHP_Fix_Pathinfo_Enable 1
Она позволяет использовать специальную обработку SCRIPT_NAME,
которая даст возможность PHP предоставлять дополнительную информацию о пути.
Раскомментируем директиву cgi.fix_pathinfo=1 в php.ini. Далее нужно создать нового пользователя и группу, от которого будут запускаться процессы PHP FastCGI.
[root@testserver www]# groupadd www-root // создаем группу [root@testserver www]# useradd www-root // создаем пользователя [root@testserver www]# passwd www-root // устанавливаем пароль для пользователя
[root@testserver www]# useradd -g www-root www-root // добавляем пользователя www-root в группу www-root
Создадим каталог /var/www/php, в котором расположим враппер (программный модуль, перехватывающий поток ввода-вывода и изменяющий его в соответствии с заложенной программой) php-cgi со следующим содержанием: #! /usr/bin/php-cgi
Изменим владельца содержимого каталога /var/www/php/ и всех файлов, расположенных в нем. Файл враппера и директория, в которую он входит должна принадлежать тому пользователю, от которого будут запущены процессы PHP FastCGI^ данном случае это пользователь/группа www-root/www-root). Для этого выполним команду:
[root@testserver www]# chown -R www-root:www-root /var/www/php/ После этого необходимо отредактировать конфигурационный файл /etc/httpd/conf/httpd.conf, добавив VirtualHost для нового сайта: <VirtualHost 127.0.0.1:80> ServerName sub1.site1.ru ServerAlias www.sub1.site1.ru
DocumentRoot /var/www/www-root/data/www/sub1.site1.ru
<IfModule mod_fcgid.c>
SuexecUserGroup www-root www-root
<Directory /var/www/www-root/data/www/sub1.site1.ru>
Options +ExecCGI
AllowOverride All
AddHandler fcgid-script .php
FCGIWrapper /var/www/php/php-cgi .php
Order allow,deny
Allow from all
</Directory>
</IfModule>
ErrorLog /var/www/log/sub1.site1.ru/error.log CustomLog /var/www/log/sub1.site1.ru/access.log combined ServerSignature Off </VirtualHost>
В директиве <IfModule mod_fcgid.c> дополнительно указали директорию с файлами сайта, а также задали директорию FCGIWrapper с созданным враппером /var/www/php/php-cgi.
Перезапустим Apache после чего проверим результат проведенной работы (рис. 1):
PHP Version 5.3.3
System
Build Date
Configure Command
Server API
Virtual
Directory
Support
Configuration File (php.ini) Path
Loaded
Configuration
File
Scan this dir for additional .ini files
Additional .ini files parsed
Linux test5erver.ru 2.6.32-042stabl23.2 #1 SMP Mon Apr 17 17:27:00 MSK 2017 x86 64
Mar 22 2017 12:26:13
'./configure1 '—build=x86_64-redhat-linux-gnu' '—host=x86_64-redhat-linux-gnu' '-target=x86_64-redhat-linux-gnu' '-program-prefix=' '-prefix=>/usr' '-exec-prefix=/usr' '-bindir=/usr/bin' '-sbindir=/usr/5bin' '-ByBconfdir=/etc' '-datadir=/u5r/share' '-¡ncljdedir=/usr/include' '-Iibdir-/usr/lib64' '--libexecdir=/usr/libexec' '—localstatedir=/var' '--5haredstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/5hare/info' '--cache-file=../config.cache' '-with-libdir=lib64' '-with-config-file-path=/etc' ,-with-config-file-scan-dlr»/etc /php.d' '-disable-debug' '—with-pic' -disable-rpath '-without-pear' '—with-bz2' '-with-exec-dir-/usr/bin' '-yvith-freetype-dir=/u5r' -with-png-dir-/usr' '-wrth-xpm-dir=/u5r' '--enable-gd-native-ttf' '--without-gdbrrT '—with-gettext' '-with-gmp' '—with-iconv' '-uvlth-jpeg-dir=/u5r' '-with-openssl' ■—with-pcre-regex=/usr' '-with-zlib' '-wrthlayout-GNU '-enable-exif '-enable-ftp' '-enable-magic-quotes' '-enable-sockets' enable-sysvsem '-enable-sysvshm' '-enable-sysvmsg' '—with-kerberos' '-enable-ucd-snmp-hack' '-enable-shmop' '-enable-calendar' '--without-sqllte' '—n¥Íth-libxml-dir-/usr' '--enable-xml' '—with-system-tzdata' '-enable-force-cgi-redirect' '-enable-pcntl' '-with-imap=shared' -wrth-imap-ssl' '-enable-mb5tring=5hared' '-enable-mbregex' '-with-gd=5hared' '-enable-bcmath-shared' '-enable-dba=shared' '-with-dbd-/usrp '--with-xmlrpc=shared' '-wrth-ldap»=shared1 '--with-ldap-sasl' —with-mysql-shared./usr' '—with-mysqli—shared,/usr/lib€4/mysq^mysql config1 '-enable-dom=shared' '-wrth-pgsql=shared' enable-wddx=shared' '-mith-5nmp=shared,/u5r' enable-soap=shared' -with-xsl=shared,/usr' '-enable-xmlreader=5hared' '-enable-xmlwriter=shared' '-with-curl.=shared,/usr' '-enable-fastcgi' '--enable-pdo=shared' '--with-pdo-odbc=5liared,unixODBC,/usr' p-wrth-pdo-mysql=shared,/usr/lib64/mysql/mysql config' '-with-pdo-pg5ql=5hared,/usr' '-with-pdo-sqllte-shared./usr' "—with-sqlite3=5hared,/u5r' '-enable-jsan^shared' '-enable-zip-shared' '-without-readline1 '—wrth-libedit' '—witb-pspell—shared' '—enable-phar—shared' '—with-tidy=shared,/u5r' '-enable-sysvmsg—shared' '--enable-5y5vshm=shared' '-enable-sysvsem-shared' '-enable-posix=shared' '-with-jnixODBC=5hared,/usr' '-enable-fileinfo=shared' '-enable-intl=shared' '-with-icu-dir=/u5r' '-with-enchant^shared,/usr' '-with-recode»=shared,/usr'
CGI/FastCGI
disabled
/etc
/etc/php.ini
/etc/php.d
/etc/php.d/curl.ini, /etc/php.d/fileinfo.ini, /etc/php.d/json.ini, /etc/php.d/phar.ini, /etc/php.d/zip.ini
Рис. 1 - Конфигурация PHP(php-fcgi)
Значение CGI/FastCGI в строке Server API указывает на то, что сайт в текущий момент работает в режиме FastCGI(Apache).
Использованные источники:
1. Хоккинс, С. Администрирование Web-сервера Apache и руководство по электронной коммерции [текст]/ С. Хоккинс - Вильямс, 2000. - 330 с.
2. Аулдс Ч. Администрирование веб-сервера Apache Linux, второе издание [текст]/ Ч. Аулдс. - Крэйг Хант лаборатория Линукс, 2002. - 624 с.