Текущая страница: ГлавнаяНастройка сервера → Свой пользователь для каждого сайта - директива AssignUserId

Свой пользователь для каждого сайта — директива AssignUserId

Сначала уточним как и под каким пользователем работает Apache.
Смотрим файл /etc/apache2/envvars
Видим там строки вида

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

Смотрим файл /etc/apache2/apache2.conf
Видим там строки вида

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_USER}

Смотрим в консоли

top -U www-data

или так

ps -aux | grep apache

Видим некоторое количество процессов apache запущенные из-под пользователя www-data
Создаем пользователя для нашего сайта
(если это новый сайт, то сразу создаем каталог, пользователя и группу)

mkdir -p /var/www/example-site.ru/public_html
groupadd example-group
useradd -g example-group -d /var/www/example-site.ru example-user
chown -R example-user:example-group /var/www/example-site.ru
chmod -R 0700 /var/www/example-site.ru/public_html

Открываем конфиг нашего сайта /etc/apache2/sites-available/example-site.ru.conf
В секцию VirtualHost прописываем

AssignUserId <example-user>   <example-group>

далее рестартуем apache

service apache2 restart

смотрим вывод команды top

top -U <example-user>

обновляем страницу сайта — видим процесс apache запущенный под этим пользователем, когда страница обновится процесс соответственно завершится.
За всю эту кухню отвечаем модуль mod_itk. В моей версии apache2 этот модуль установлен и включен по уполчанию, достаточно установить Apache.
Замечание 1
Установка: aptitude install apache2-mpm-itk
Однако на моей системе обнаружилось что как-то особенно устанавливать его не надо...можно даже сделать aptitude purge apache2-mpm-itk ничего не изменится, видимо в текущей версии этот модуль как-то предустанавливается вместе с apache.
Замечание 2:
MPM движок в Apache может работать в режиме Prefork или Worker. В зависимости от того, что установлено.
apt-get install apache2-mpm-worker
либо
apt-get install apache2-mpm-prefork
Настройки компиляции Apache можно посмотреть через apachectl -V, там будет строка вида
Server MPM:Prefork
Так вот, если у вас Server MPM:Worker модуль mod-itk работать не будет.
Список загруженных модулей можно посмотреть через phpinfo();
Текущий пользователь под которым работает php скрипт get_current_user();
Замечание 3:
В phpinfo даже при заданном AssignUserId вы можете увидеть
Секция apache2handler User/Group www-data(33)/33
При этом функция get_current_user() выдает вашего пользователя.
С чем это связано не очень понятно....

Добавить комментарий