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

()

Допустим есть хостинговый сервер под управлением 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 можно найти на официальной страничке проекта. На этом всё. Приятной работы!

Ключевые слова: apache2, apache2-mpm-itk.

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

Anonymous 2010-12-23 20:04:48 (#)

Здравствуйте!
подскажите как эту штуку поставить тем у кого стоит Fedora 7(условие хостера)?
большое спасибо.

MooSE 2010-12-24 00:03:19 (#)

Цитата:

Здравствуйте!
подскажите как эту штуку поставить тем у кого стоит Fedora 7(условие хостера)?
большое спасибо.


Можно поискать в гугле
Новый комментарий



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