»Моят софтуер»за lighttpd»mySQL vhosts 
mySQL vhosts

Това е прост трик да накарате lighttpd да използва информация за vhosts от mySQL база данни.
(Този трик е приложим за всякакъв вид бази данни и динамична конфигурация за lighttpd)


Ще използвам функцията include_shell на lighttpd
Тази функция изпълнява външна команда и "взима" изхода от командата като конфигурация за lighttpd

За целта добавете в lighttpd.conf:

include_shell "/etc/lighttpd/show_user_conf.php"

В най-общ смисъл ще направим един php скрипт който ще чете информация от нашата база данни и ще сформира vhosts за lighttpd

Ето и примерен show_user_conf.php (chmod 755 преди да го пробвате ;')

#!/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 ..."; // каквото ви душа иска
$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";
   ... // добавете всичко което ви е нужно за съответния vhost
   ... // ... и не забравяйте че можете да вземете инфо-то от DB-то :P
   echo '}' . "\n";
}

?>

Не е ли лесно ?;')

Единствения недостатък на това решение е че трябва да рестартирате lighttpd когато искате промените да влязат в сила... е ... никой не е перфектен ;') Пък и ако се намери начин lighttpd да си презарежда конфигурацията ще бъде просто супер :'P



Грешки, Кръпки и Предложения

Изпратете ми E-Mail: drJeckyll@Jeckyll.net


Коментари

Все още няма коментари


напиши нов коментар

stretch
stretch
stretch
stretch
interoffice
interoffice
interoffice
interoffice