Запуск разных виртуальных хостов под разными uid/gid с использованием apache2-mpm-itk

по статье MooSE 2010-05-18 01:59:53

Запуск разных виртуальных хостов под разными uid/gid с использованием apache2-mpm-itk

Дано: хостинговый сервер на Debian Lenny или позже, на котором работает apache2 и который обслуживает несколько сайтов и каждый из которых лежит в домашнем каталоге отдельного пользователя.

Разумно сделать так, чтобы каждый виртуальный хост работал с правами отдельного пользователя в чьей домашней директории расположен сайт. Это решение проблем с правами доступа к файлам и директориям.

Удобно использовать модуль MPM (Multi-Processing Module) ITK, который является усовершенствованным вариантом MPM Prefork из стандартной поставки apache.
Собственно для перехода достаточно установить пакет apache2-mpm-itk:

1
2
3
#apt-cache search apache2-mpm-itk
apache2-mpm-itk - multiuser MPM for Apache 2.2
#apt-get install apache2-mpm-itk

Сразу после установки apache2 функционирует точно так же, как и с модулем prefork, только если раньше виртуальные хосты работали с правами пользователя www-data, то теперь, если не указано что-то другое, они работают с правами пользователя root. Чтобы все виртуальные снова работали с правами пользователя www-data нужно создать файле /etc/apache2/conf.d/def_uid.conf и добавить в него строку:

1
AssignUserID www-data www-data

И перезапустить apache:

1
invoke-rc.d apache2 reload

Переходим к управлению правами, с которыми работают виртуальные хосты. Для этого нужно дописывать в описания виртуальных хостов параметр AssignUserID. Допустим что у нас есть хост testhost.example.com, расположенный в поддиректории www домашнего каталога пользователя testhost-user. Настроим веб-сервер так, чтобы этот хост работал с правами testhost-user:webusers. В этом случае полное описание виртуального хоста будет выглдяеть примерно вот так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<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 можно найти на официальной страничке проекта. На этом всё. Приятной работы!


Leave a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Загрузка...
Menu Title