Допустим есть хостинговый сервер под управлением Debian Lenny, на котором работает apache2 и который обслуживает несколько сайтов, каждый из которых лежит в домашнем каталоге отдельного пользователя.
Разумно было бы настроить веб-сервер так, чтобы каждый виртуальный хост работал с правами отдельного пользователя, желательно того, в чьей домашней директории расположен сайт. Это позволит решить проблему с правами доступа к файлам и директориям в тех случаях, когда веб-сервер должен записывать какие либо данные на сайт (например загрузка аватаров на форумах или картинок в галерее).
Для этого удобно использовать модуль MPM (Multi-Processing Module) ITK, который является усовершенствованным вариантом MPM Prefork из стандартной поставки apache. Далее будет показано как перейти от использования MPM Prefork на MPM ITK на описываемом хостинговом сервере.
Собственно для перехода достаточно установить пакет apache2-mpm-itk:
apt-get install apache2-mpm-itk
Сразу после установки apache функционирует точно так же, как и с модулем prefork, только если раньше виртуальные хосты работали с правами пользователя www-data, то теперь, если не указано что-то другое, они работают с правами пользователя root. Чтобы все виртуальные снова работали с правами пользователя www-data нужно создать файле /etc/apache2/conf.d/def_uid.conf и добавить в него строку:
AssignUserID www-data www-data
И перезапустить apache:
invoke-rc.d apache2 reload
Переходим к управлению правами, с которыми работают виртуальные хосты. Для этого нужно дописывать в описания виртуальных хостов параметр AssignUserID. Допустим что у нас есть хост testhost.example.com, расположенный в поддиректории www домашнего каталога пользователя testhost-user. Настроим веб-сервер так, чтобы этот хост работал с правами testhost-user:webusers. В этом случае полное описание виртуального хоста будет выглдяеть примерно вот так:
<VirtualHost *> # Имя виртуального хоста ServerName testhost.example.com # Права, с которыми работает виртуальный хост AssignUserID teshost-user webusers # Корень виртуального хоста DocumentRoot /home/testhost-user/www #Опции виртуального хоста <Directory /home/testhost-user/www> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> # Логи ErrorLog /var/log/apache2/error.log LogLevel warn CustomLog /var/log/apache2/access-testhost.example.com.log combined </VirtualHost>
Остальные виртуальные хосты настраиваются по аналогии. Более подробную информацию об MPM ITK можно найти на официальной страничке проекта. На этом всё. Приятной работы!
Anonymous 2010-12-23 20:04:48 (#)
подскажите как эту штуку поставить тем у кого стоит Fedora 7(условие хостера)?
большое спасибо.