mySQL vhosts
This is a simple trick to provide vhosts information from DB to lighttpd. (You can use the same method to feed any dynamic data to lighttpd)
Function include_shell is our best friend This function execute external command capture output and feed lighttpd config
So add to lighttpd.conf:
include_shell "/etc/lighttpd/show_user_conf.php" |
The script show_user_conf.php is something like this one (chmod 755 before use ;')
#!/usr/bin/php <? $MYSQL_HOST = "localhost"; $MYSQL_USER = "db_user"; $MYSQL_PASS = "db_password"; $MYSQ_DB = "db";
echo "### VHOSTS ###\n\n";
$mysql = mysql_connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS); mysql_select_db($MYSQL_DB); $q = "SELECT * FROM vhosts_table ..."; // use your imagination $result = mysql_query($q, $mysql); while ($row = mysql_fetch_object($result)) { echo '$HTTP["host"] == "' . $row->sub_domin . "." . $row->domain . '" {' . "\n"; echo ' server.document-roow = "' . $row->doc_root . '"' . "\n"; echo ' accesslog.filename = "' . $row->access_log . '"' . "\n"; ... // add everything you need for this vhost ... // ... and don't forget to get info from DB :'P echo '}' . "\n"; }
?> | It's easy ... yeah ?;')
This solution is not perfect. You need to restart lighttpd when you need new configuration ... but ... nobody is perfect ;') I still hope that lighttpd will provide something like -HUP and then ... :'P
Bugs, Patches and Suggestions
Send me E-Mail: drJeckyll@Jeckyll.net
write new comment
|