Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> WWW —> mod_sqlinclude

mod_sqlinclude - для хранения виртуалхостов в БД MySQL

Автор: lissyara.


   Модуль для апача - mod_sqlinclude, позволяющий избежать редактирования конфигурационного файла httpd.conf. Собственно на этом его плюсы и заканчиваются, - для того чтобы изменения вступили в действие апач надо перезапускать - потому у mod_shapvh перед ним преимущество (хотя, и он не без недостатков (кои являются расплатой за возможность менять что-то налету) - на каждый запрос к серверу идёт кверя к БД. Это не самая сложная нагрузка, но на большом сервере не поюзаешь.).
   Итак, топаем в порты, будем ставить:
/usr/home/lissyara/>cd /usr/ports/
/usr/ports/>make search name='mod_sqlinclude'
Port:   mod_sqlinclude-1.4
Path:   /usr/ports/www/mod_sqlinclude
Info:   An Apache module implementing config inclusion from MySQL databases
Maint:  anders@FreeBSD.org
B-deps: apache-1.3.34_4 expat-2.0.0_1 mysql-client-4.1.18_1 perl-5.8.8
R-deps: apache-1.3.34_4 expat-2.0.0_1 mysql-client-4.1.18_1 perl-5.8.8
WWW:    http://wfmh.org.pl/carlos/

/usr/ports/>cd /usr/ports/www/mod_sqlinclude
/usr/ports/www/mod_sqlinclude/>make && make install && make clean

После установки раскомментируем модуль в конфиге, и добавим такие строки:
/usr/local/etc/apache/httpd.conf
# Модуль инклюдинга конфигов виртуальных хостов в БД MySQL
<IfModule mod_sqlinclude.c>
    # Хост на котором живёт БД MySQL
    SQL_ServerName      localhost
    # Порт MySQL сервера
    SQL_ServerPort      3306
    # Имя пользователя для соединения с БД
    SQL_SQLUser         apache
    # Пароль для соединения с БД
    SQL_SQLPassword     apache
    # Имя базы данных
    SQL_SQLDB           apache_sql
    # Загружать ли виртуалхосты из БД при ошибках синтаксиса httpd.conf
    # (On - не загружать, Off - загружать)
    SQL_AbortOnError    On
    # Использовать ли имя (в противном случае сайты различаются по IP)
    SQL_UseNameColumn   On
    # Кверя к БД (вариант с именами)
    SQL_Include         "SELECT `data`,`name` FROM `include_hosts`"
    # Кверя к БД (вариант с IP-адресами)
    #SQL_Include                "SELECT `data` FROM `include_hosts` \
    #WHERE `ip`='192.168.254.254'"
</IfModule>

Затем создаём БД, пользователя, даём пользователю права на эту БД и делаем подобную табличку:
-- phpMyAdmin SQL Dump
-- 
-- Структура таблицы `include_hosts`
-- 

CREATE TABLE `include_hosts` (
  `unic_id` int(4) NOT NULL auto_increment,
  `data` text,
  `name` varchar(64) NOT NULL default 'lissyara.su',
  `ip` varchar(32) default '222.222.222.222',
  PRIMARY KEY  (`unic_id`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;

-- 
-- Дамп данных таблицы `include_hosts`
-- 

INSERT INTO `include_hosts` VALUES (1, '<VirtualHost *:80>
ServerName test1.lissyara.su
DocumentRoot /home/lissyara/test1.lissyara.su
</VirtualHost>',
'test1.lissyara.su', '192.168.254.254');
INSERT INTO `include_hosts` VALUES (2, '<VirtualHost *:80>
ServerName test2.lissyara.su
ServerAdmin  admin@lissyara.su
ServerAlias   test3.lissyara.su
DocumentRoot  /usr/home/lissyara/test2
</VirtualHost>', 'test2.lissyara.su', '192.168.254.254');

После чего перезапускаем апач.
Всё :)



размещено: 2006-03-13,
последнее обновление: 2006-03-14,
автор: lissyara


Abigor, 2006-04-06 в 12:53:31

а такую конструкцию мона запихать в бызу?
<VirtualHost www.domain.com:80>
   ServerAdmin abigor@llaff.com
   ServerName www.domain.com
   ServerAlias www.domain.com
   <IfModule mod_proxy.c>
       ProxyRequests Off
       ProxyPass               /       http://10.1.1.44:666/domain.com/
       ProxyPassReverse        /       http://10.1.1.44:666/domain.com/
       ProxyVia on
   </IfModule>
   ErrorLog logs/www.domain.com-error_log
   CustomLog logs/www.domain.com-access_log common
</VirtualHost>

lissyara, 2006-04-06 в 14:13:03

со свистом... Туда пихается, фактически, кусок конфига...

Abigor, 2006-04-10 в 9:50:01

все, хорошо, но вот для httpd-2.2.0 этого модуля нету, а жаль, он при компилирокании просит файлик он 1 арача, но, во втором такого файлика нету =(

unknownDaemon, 2008-10-29 в 17:43:13

mysql-client-4.1.18_1 only?



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0377 секунд
Из них PHP: 25%; SQL: 75%; Число SQL-запросов: 77 шт.
Исходный размер: 19417; Сжатая: 5711