| 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
 
 
 
 
 
 
напиши нов коментар
 
 |