Виртуальный хостинг на MySQL

Модуль: mod_mysql_vhost

Автор: ada@riksnet.se
Дата: 2004-08-29
Версия: 1.1

Суть

Этот модуль позволяет создавать виртуальный хостинг (vhosts) на основе MySQL таблицы, и (опционально) подготовить mod_fastcgi для под-chroot'а для развёртывания FastCGI.

Содержание

Описание

виртуальный хостинг с помощью mysql

Опции

Пример:

mysql-vhost.db             = "lighttpd"
mysql-vhost.user           = "lighttpd"
mysql-vhost.pass           = "secret"
mysql-vhost.sock           = "/var/mysql.lighttpd.sock"
mysql-vhost.sql            = "SELECT docroot,fcgioffset,fcgiarg FROM domains WHERE domain='?'"

Настройка MySQL:

GRANT SELECT ON lighttpd.* TO lighttpd@localhost IDENTIFIED BY 'secret';

CREATE DATABASE lighttpd;

USE lighttpd;

CREATE TABLE domains (
  domain char(64) not null primary key,
  docroot char(128) not null,
  fcgioffset tinyint unsigned not null,
  fcgiarg smallint unsigned not null
);

INSERT INTO domains VALUES ('host.dom.ain','/http/host.dom.ain/',5,10001);

Дополнительно:

fastcgi.server = ( ".php" => ( "php-fcgi" => (
  "socket" => "../php/socket",
  "spawn"  => "/php/php-spawn"
))) 

Вышеописанный пример берёт docroot для виртуального хоста из таблицы lighttpd.domains, а также меняет docroot для FastCGI на 5 (=fcgioffset) символов ниже web docroot (в примере выше это означает что web docroot будет /http/host.dom.ain/, в FastCGI docroot,- /host.dom.ain/).

"socket" fastcgi.server указывается относительно docroot'а, и аргумент "spawn" указывает на команду которая будет использоваться для динамического запуска нового FastCGI процесса в случае если таковой не запущен (в противовес "bin-path" указывающего не запускать/перезапускать FastCGI процессы динамически).

Пример выше также добавляет аргумент "10001" (=fcgiarg) при вызове /php/php-spawn (=spawn). Если программа php-spawn имеет setuid бит, это может использоваться для chroot'а и смене gid/uid на определённого пользователя до запуска FastCGI программы.

ЗАМЕЧАНИЕ: как fcgioffset так и fcgiarg необязательны. Если не будут вами использоваться, просто уберите их в примере выше для обычного виртуального сервера. Так же вы можете использовать только fcgioffset без fcgiarg, если вам так надо.