Использование apache mod_ruid2 для запуска разных виртуальных хостов под разными uid/gid

()

Часто возникает необходимость организовать обработку запросов веб-сервером с различным парами uid/gid, в зависимости от виртуального хоста или даже пути. В определённых ситуациях можно использовать MPM-ITK, который замечательно работает на большинстве популярных платформ, хотя и не отличается высокой производительностью.

Но что делать если нам нужна производительность? Тут нам на помощь придёт mod_ruid2, который заметно быстрее, хотя и работает только на Linux, так как завязан на ряд специфичных для Linux технологий. Далее будет показано как можно настроить mod_ruid2 на хостинге под управлением Ubuntu LTS.

По сравнению с mpm-itk mod_ruid2 позволяет использовать Keep-Alive соединения между браузером и веб-сервером, а при использовании mod_php можно будет использовать устойчивые ("persistent") соединения с MySQL, memcached и проч.

Всё написанное далее проверено на Ubuntu 14.04 с установленным apache2, работающем в режиме prefork (установлен модуль apache2-mpm-prefork).

Переходим к установке и настройке. Для начала установим модуль ruid2:

apt-get install libapache2-mod-ruid2

Теперь нужно добавить в файл /etc/apache2/apache2.conf "дефолтные" настройки, которые будут применяться если не указано другого. Это делается добавлением в указанный файл строки:

RUidGid ${APACHE_RUN_USER} ${APACHE_RUN_GROUP}

И наконец в конфигурации виртуальных хостов добавить строки вида:

RUidGid someuser somegroup

Например вот так:

    <VirtualHost *:80>
        ServerAdmin webmaster@somedomain.com
        ServerName somedomain.com
        ServerAlias www.somedomain.com
        RUidGid webadmin admins

        DocumentRoot /var/www/somedomain.com/html
        <Directory /var/www//somedomain.com/html>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
        </Directory>

        ErrorLog /var/log/apache2/somedomain.com-error.log
        LogLevel warn
        CustomLog /var/log/apache2/somedomain.com-access.log combined
    </VirtualHost>

И после этого остаётся перезапустить веб-сервер:

invoke-rc.d apache2 reload

Если установлен и настроен mod_php то проверить работу можно загрузив на сервер PHP-скрипт:

<php
print `id`;

При открытии этого скрипта в браузере вы должны будете увидеть примерно такой текст:

uid=1002(webadmin) gid=1000(admins) groups=1000(admins),33(www-data)

Здесь uid и gid должны соответствовать тем, которые указаны для этого виртуального хоста с помощью директивы RUidGid. Если же будет что-то другое то надо ещё раз проверить все настройки.

Приятной работы!

Ключевые слова: apache2, mod_ruid2, suexec, ruid, ruid2.

Комментарии:

Новый комментарий



© 2006-2016 Вадим Калинников aka MooSE

Элит. сайт сантехники http://santehnika-all.ru/ .