Project

General

Profile

Docs:ModDbiVhost

Module: mod_dbi_vhost

Description

Note: subsumed by mod_vhostdb since lighttpd 1.4.46

mod_dbi_vhost is a modified version of mod_mysql_vhost which instead uses libDBI to read vhost to document root associations.

Installation

This module is a 3rd party module and is not included in the official distribution. You can download the patch from here:

Once applied, run autogen.sh and pass the option --with-dbi to let the GNU tools find it, or --with-dbi=/path/to/dbi to specify the location.

Options

vhost.dbi => ( "dbname" => "..." ) - Required

The name of the database for network database connections, or a database filename for local database implementations (Sqlite).

vhost.dbi => ( "dbtype" => "..." ) - Required

Set this to your database type. This is usually included in the DBD file name. Eg., libdbdmysql.so is "mysql", and libdbdpgsql.so is "pgsql".

Some options include: mysql, pgsql, sqlite3, freetds, sqlite

vhost.dbi => ( "sql" => "..." ) - Required

The actual query used to get the document root for a vhost. Use '?' in place of the hostname, for example:

vhost.dbi += ( "sql" => "SELECT docroot FROM vhosts WHERE host='?'" )

Common Options

vhost.dbi += ( "user" => "..." ) - Optional

The username to use for opening a typical network-based database connection.

vhost.dbi += ( "pass" => "..." ) - Optional

A password used to authenticate to a database connection.

vhost.dbi += ( "hostname" => "..." ) - Optional

A hostname used in establishing a database connection.

vhost.dbi += ( "port" => i ) - Optional

A port number used to authenticate to a database connection. If not specified, the default for the specified database type will be used.

MySQL-Specific Options

vhost.dbi += ( "encoding" => "..." ) - Optional

For example, "UTF-8". This parameter compatibility and available options depend on the driver. I use it to tell the MySQL DBD to use UTF-8.

Sqlite3-Specific Options

vhost.dbi += ( "sqlite3_dbdir" => "..." ) - Required

The directory on the filesystem where the database file (specified in "dbname") is located.

Examples

# Sqlite3
vhost.dbi += (
       "dbtype"        => "sqlite3",
       "dbname"        => "lighttpd.db",
       "sqlite3_dbdir" => "/etc/lighttpd",
       "encoding"      => "UTF-8",
       "sql"           => "SELECT docroot FROM vhosts WHERE host='?'" 
)

# PostgreSQL
vhost.dbi += (
       "dbtype"        => "pgsql",
       "dbname"        => "lighttpd",
       "user"          => "postgres",
       "hostname"      => "localhost",
       "encoding"      => "UTF-8",
       "sql"           => "SELECT docroot FROM vhosts WHERE host='?'" 
)

# MySQL
vhost.dbi += (
       "dbtype"        => "mysql",
       "dbname"        => "lighttpd",
       "user"          => "root",
       "password"      => "somepassword",
       "hostname"      => "localhost",
       "encoding"      => "UTF-8",
       "sql"           => "SELECT docroot FROM vhosts WHERE host='?'" 
)

server.modules          += ( "mod_dbi_vhost" )