Установка Apache MPM-ITK на CentOS и ISPmanager
Раздел(ы): GNU Linux - CentOS / Debian
Просмотры: 14545
Комментарии: 0
Apache MPM-ITK, это патч к стандартному apache версии 2.2, который позволяет запускать скрипты, выполняемые вебсервером от имени пользователя — владельца сайта.
У меня интерес к apache2-mpm-itk возник не из-за вопросов безопасности. А ввиду того, что пользователи сервера теряют владельца на компоненты своих CMS при установке внутренними CMS-инструментами. О такой неприятной ситуации с WordPress я подробно описал в статье WordPress просит FTP доступ или работаем с WordPress без FTP.
Один из вариантов решения — это использование модуля Apache Mod_ruid2. А второй, который я опишу в данной статье — это использовать патч Apache MPM-ITK.
Проверка наличия mpm-itk
Проверим, есть ли бинарный файл mpm-itk на сервере, который обычно расположен в /usr/sbin/httpd.itk:
# stat /usr/sbin/httpd.itk File: `/usr/sbin/httpd.itk' Size: 363168 Blocks: 712 IO Block: 4096 regular file Device: 6801h/26625d Inode: 5512117 Links: 1 Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2014-09-29 17:00:18.420030023 +0400 Modify: 2014-08-18 18:54:55.000000000 +0400 Change: 2014-09-29 16:48:48.768699179 +0400
Если имеется, то приступаем к настройкам, в противном случае начинаем установку.
Установка MPM-ITK
Apache MPM-ITK отсутствует в стандартном репозитории. Все популярные руководства по его устанвке ссылаются на репозиторий CentAlt, который в последнее время недоступен. Однако существуют и другие альтернативные решения. Для CentOS версии 6.Х Apache MPM-ITK присутствует в репозитории Epel.
Подключение репозитория для установки Apache MPM-ITK
Подключение репозитория EPEL для CentOS 6.5 x64:
# rpm --import http://mirror.yandex.ru/epel/RPM-GPG-KEY-EPEL-6 # rpm -ihv http://mirror.yandex.ru/epel/6/x86_64/epel-release-6-8.noarch.rpm
Подключение репозитория EPEL для CentOS 6.5 x32:
# rpm --import http://mirror.yandex.ru/epel/RPM-GPG-KEY-EPEL-6 # rpm -ihv http://mirror.yandex.ru/epel/6/i386/epel-release-6-8.noarch.rpm
Установка Apache MPM-ITK на CentOS
Для установки из репозитория EPEL выполните следующее:
# yum install httpd-itk
Настройка файлов конфигурации
Отредактируйте файл /etc/sysconfig/httpd — раскомментируйте либо добавьте строчку:
HTTPD=/usr/sbin/httpd.itk
Отредактируйте конфигурацию Apache, для этого добавьте в файл /etc/httpd/conf.d/php.conf следующие строки:
<IfModule itk.c> LoadModule php5_module modules/libphp5.so </IfModule>
Если на сервере уже присутствуют домены и настроены какие-либо VirtualHost, то отредактируйте файл /etc/httpd/conf/httpd.conf, для этого поменяйте в нем SuexecUserGroup на AssignUserID (если такие записи имеются). Процесс можно автоматизировать одной из команд:
# perl -p -i -e 's/SuexecUserGroup/AssignUserID/g' /etc/httpd/conf/httpd.conf
либо:
# sed -i -e 's/SuexecUserGroup/AssignUserID/g' /etc/httpd/conf/httpd.conf
Отредактируйте файл /etc/httpd/conf/httpd.conf, добавьте в него по аналогии с <IfModule prefork.c> следующее:
# MPM-ITK <IfModule itk.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 </IfModule>
Внимание! У вас могут быть совсем другие значения! Конкретные данные берите по аналогии со своим блоком <IfModule prefork.c>.
Перезапустите вебсервер Apache:
# service httpd restart
Убедитесь, что Apache MPM-ITK работает:
# ps ax|grep htt 13554 ? S 0:00 /usr/sbin/httpd.itk 13580 ? S 0:00 /usr/sbin/httpd.itk 13588 ? S 0:00 /usr/sbin/httpd.itk
в выводе в конце строк обязательно должно быть itk.
Настройка конфигурации панели ISPmanager
Отредактируйте файл /usr/local/ispmgr/etc/ispmgr.conf, добавьте в его начало следующее:
Option ApacheMPM ApacheProcName httpd.itk
Это необходимо для корректной работы панели ISPManager с MPM-ITK, и чтобы при добавлении новых доменов в
Перезапустите панель:
# killall ispmgr
На этом установка и настройка закончены.
Конфигурация сервера CentOS и ISPmanager
Инструкция протестирована на CentOS 6.5 x86_64 с панелью ISPmanager-Lite 4.4.10.23. PHP работает на сервере как модуль Apache.
Инструкция подходит не только для PHP, но и для Perl скриптов.