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