Ключевые слова:search, cgi, web, sql, (найти похожие документы)
From: Mark Silinio <silinio(at)mail.ru>
Date: Mon, 2 May 2005 18:21:07 +0000 (UTC)
Subject: Установка mnoGoSearch с SQLite/MySQL/PostgreSQL/Firebird
Оригинал: http://silinio.webhost.ru/mnogosearch-3db.html
Установка mnoGoSearch с SQLite/MySQL/PostgreSQL/Firebird
Mark Silinio <silinio(at)mail.ru>
последнее обновление 16/04/05
Что это Бэрримор?
В данной заметке рассказывается про установку и настройку поикового
движка mnoGoSearch (http://www.mnogosearch.org) с разными базами
данных, - SQLite, MySQL(в т.ч. через ODBC), PostgreSQL, Firebird.
Изложены пошаговые действия для каждого из случаев. Здесь не
разбираются подробности использования вышеперечисленных баз, также
как и тонкости работы с поисковым движком. Предполагается что вы
работаете как пользователь root.
Использовал дистрибутив Gentoo Linux, и были установлены следующие
программы(вместе с зависимостями разумеется):
* SQLite 2.8.16 (http://www.sqlite.org/)
* MySQL 4.0.24 (http://www.mysql.com/)
* PostgreSQL 8.0.1 (http://www.postgresql.org/)
* Firebird 1.5.2 (http://firebird.sourceforge.net/)
* unixODBC-2.2.8 (http://www.unixodbc.org/)
* MyODBC-3.51.06 (http://www.mysql.com/products/myodbc/)
* mnoGoSearch 3.2.32 (http://www.mnogosearch.org/ установка из исходников)
mnoGoSearch на данный момент отсутствует в portage, так что бегом на
http://www.mnogosearch.org/download.html - Download sources,
скачиваем последнюю версию в tar.gz архиве...
Далее по курсу:
* Установка mnoGoSearch
* Настройка с SQLite
* Настройка с MySQL
* Настройка с MySQL через ODBC драйвер
* Настройка с PostgreSQL
* Настройка с Firebird
* Возможные проблемы
* Ссылки
* Благодарности
Установка mnoGoSearch
Распаковываем:
# tar zxf mnogosearch-3.2.32.tar.gz -C /usr/src
Конфигурируем:
# cd /usr/src/mnogosearch-3.2.32/
# ./configure
Ключи configure для разных БД:
--with-sqlite=/usr SQLite
--with-mysql MySQL
--with-pgsql PostgreSQL
--with-unixODBC unixODBC
--with-ibase=/opt/firebird Firebird
Помните что БД нужно устанавливать до mnoGoSearch, иначе mnoGoSearch
просто не сможет скомпилироваться с поддержкой нужной БД.
У меня, компиляция завершалась ошибкой при одновременном использовании
--with-unixODBC и --with-ibase=/opt/firebird.
Не удавалось также скомпилировать mnoGoSearch с SQLite 3.x.x
По умолчанию mnoGoSearch ставится в каталог /usr/local/mnogosearch
Компилируем-устанавливаем:
# make && make install
Идём к mnoGoSearch:
# cd /usr/local/mnogosearch/etc/
Мудрим с конфигами(по-умолчанию):
# cp indexer.conf-dist indexer.conf
# cp stopwords.conf-dist stopwords.conf
# cp langmap.conf-dist langmap.conf
# cp search.htm-dist search.htm
Копируем поиковик в cgi-bin директорию вашего сервера:
# cp /usr/local/mnogosearch/bin/search.cgi /var/www/localhost/cgi-bin/
Добавить пару строк в indexer.conf:
LocalCharset koi8-r # в какой кодировке хранить данные в БД
Server http://yourhost/ # чаво индексировать
про остальные параметры в indexer.conf см. соответствующую
документацию (или комментарии)
http://linux.yaroslavl.ru/docs/conf/mnogosearch/index-ru.html
Пара строк search.htm:
LocalCharset koi8-r
BrowserCharset koi8-r
можете скачать переведённый мною файл search.htm (http://silinio.webhost.ru/search.htm)
Ну, почти всё готово, но до того как вы пропишите
/usr/local/mnogosearch/sbin/indexer в cron-задачах, следует добавить в
indexer.conf и search.htm строки соединения с БД(начинаются с
DBAddr)... которые даны в конце каждой следующей подглавы.
Настройка с SQLite
Ставим:
# emerge =dev-db/sqlite-2.8.16
Создание каталога для базы данных SQLite:
# mkdir /var/lib/sqlite
Создание базы данных для mnoGoSearch:
# sqlite /var/lib/sqlite/searchdb.sqlite <\
/usr/src/mnogosearch-3.2.32/create/sqlite/create.multi.sql
Строка для indexer.conf/search.htm (путь к файлу):
DBAddr sqlite:///var/lib/sqlite/searchdb.sqlite/?dbmode=multi
Настройка с MySQL
Ставим:
# emerge =dev-db/mysql-4.0.24
Конфигурируем:
# ebuild /usr/portage/dev-db/mysql/mysql-4.0.24.ebuild config
Выставляем пароль для root-пользователя mysql:
# /usr/bin/mysqladmin -u root password 'ПАРОЛЬ_root'
Запускаем MySQL:
# /etc/init.d/mysql start
Создаем базу данных для mnoGoSearch(при этом будет запрошен root
пароль mysql):
# mysqladmin -p create searchdb
Даём права на эту базу данных mysql-пользователю searcher:
# mysql -p
<вводим пароль root-пользователя mysql>
mysql> GRANT ALL PRIVILEGES ON searchdb.* TO searcher@localhost
-> IDENTIFIED BY 'ПАРОЛЬ_searcher';
Создание необходимых mnoGoSearch таблиц в этой базе:
# mysql -p searchdb < /usr/src/mnogosearch-3.2.32/create/mysql/create.multi.sql
Строка для indexer.conf/search.htm:
DBAddr mysql://searcher:<ПАРОЛЬ_searcher>@localhost/searchdb/?dbmode=multi
Возможно также соединение через локальный socket:
DBAddr mysql://searcher:<ПАРОЛЬ_searcher>@ /
localhost/searchdb/?dbmode=multi/?socket=/var/run/mysqld/mysqld.sock
Настройка с MySQL через ODBC драйвер
Эта глава дана больше как пример использования ODBC в mnoGoSearch.
Предполагается также что вы уже выполнили все пункты "Установка с
MySQL".
Ставим:
# emerge =dev-db/unixODBC-2.2.8 =dev-db/myodbc-3.51.06
Редактируем /etc/unixODBC/odbc.ini:
[searchodbc]
DSN = mnoGoSearch DB
DESCRIPTION = MySQL ODBC 3.51 Driver DSN
DRIVER = /usr/lib/libmyodbc3.so
SERVER = localhost
DATABASE = searchdb
PORT = 3306
Строка для indexer.conf/search.htm:
DBAddr odbc-mysql://searcher:<ПАРОЛЬ_searcher>@localhost/searchodbc/?dbmode=multi
Настройка с PostgreSQL
Ставим:
# emerge =dev-db/postgresql-8.0.1
Конфигурируем:
# ebuild /usr/portage/dev-db/postgresql/postgresql-8.0.1.ebuild config
Запускаем:
# /etc/init.d/postgresql start
Создаём пользователя и базу данных для mnoGoSearch:
# /bin/su - postgres
$ createuser searcher -W
-Разрешить новому пользователю создавать базы данных? (y/n)
<отвечаем n>
-Разрешить новому пользователю создавать пользователей? (y/n)
<отвечаем n>
-Пароль:
<вводим пароль для этого пользователя>
$ createdb -O searcher searchdb
Создание необходимых mnoGoSearch таблиц в этой базе:
$ psql -W -U searcher searchdb < /usr/src/mnogosearch-3.2.32/create/pgsql/create.multi.sql
Строка для indexer.conf/search.htm:
DBAddr pgsql://searcher:<ПАРОЛЬ_searcher>@localhost/searchdb/?dbmode=multi
Возможно также соединение через локальный socket (просто уберите
hostname):
DBAddr pgsql://searcher:<ПАРОЛЬ_searcher>@/searchdb/?dbmode=multi
Настройка с Firebird
Ставим:
# emerge =dev-db/firebird-1.5.2
Конфигурируем:
# ebuild /usr/portage/dev-db/firebird/firebird-1.5.2.ebuild config
чуть советов безопастности
Позволяем Firebird слухать только locahost адрес,-
/etc/firebird/firebird.conf:
...
RemoteBindAddress = 127.0.0.1
Перезапускаем Firebird:
# /etc/init.d/firebird restart
Рекомендуется также сменить пароль по-умолчанию для SYSDBA:
# /opt/firebird/bin/changeDBAPassword.sh
Please enter current password for SYSDBA user: masterke
Please enter new password for SYSDBA user: <ПАРОЛЬ_SYSDBA>
Пишем новый пароль в /etc/conf.d/firebird:
ISC_USER=SYSDBA
ISC_PASSWORD=<ПАРОЛЬ_SYSDBA>
FIREBIRD=/opt/firebird
FBRunUser=firebird
Запускаем:
# /etc/init.d/firebird start
Создаём пользователя для работы с базой данных mnoGoSearch:
# /opt/firebird/bin/gsec
GSEC> add searcher -pw <ПАРОЛЬ_searcher>
Создание каталога для баз данных Firebird:
mkdir /var/lib/firebird
chown firebird.firebird /var/lib/firebird
Создание базы данных для mnoGoSearch:
# /opt/firebird/bin/isql
SQL> create database "/var/lib/firebird/searchdb.fdb" user "searcher"
password "<ПАРОЛЬ_searcher>";
Создание необходимых mnoGoSearch таблиц в этой базе:
/opt/firebird/bin/isql "/var/lib/firebird/searchdb.fdb" -i /
/usr/src/mnogosearch-3.2.32/create/ibase/create.multi.sql -u searcher \
-p <ПАРОЛЬ_searcher>
Строка для indexer.conf/search.htm (обратите внимание на полный путь к
файлу базы):
DBAddr ibase://searcher:<ПАРОЛЬ_searcher>@localhost/var/lib/firebird/searchdb.fdb/?dbmode=multi
Возможные проблемы
если при запуске indexer'а выскакивает ошибка типа:
# /usr/local/mnogosearch/sbin/indexer
{sql.c:533} Query: SELECT rec_id, url FROM server WHERE rec_id='1807751754'
Log has not been opened
DB err: ERROR: permission denied for relation server
- /usr/local/mnogosearch/etc/indexer.conf:925: No appropriate storage support compiled
...то по-видимому таблицы в вашей базе данных были созданы
пользователем отличным от того который указан в DBAddr. Будте
внимательнее.
Если вы не можете найти файлы типа create.multi.sql, то сделайте
следующее:
# cd /usr/src/mnogosearch-3.2.32/create/
# make
Ссылки
* mnoGoSearch 3.2.15 Руководство на http://linux.yaroslavl.ruhttp://linux.yaroslavl.ru/docs/conf/mnogosearch/index-ru.html
* SQLite Wiki
http://www.sqlite.ru/
* Статьи для разработчика Interbase/Firebird на http://www.ibase.ruhttp://www.ibase.ru/develop.htm
* Справочное руководство по MySQL версии 5.0.0-alpha на http://linux.yaroslavl.ruhttp://linux.yaroslavl.ru/docs/www/mysql/man/manual.ru_toc.html
* PostgreSQL документация на http://www.linuxshare.ruhttp://www.linuxshare.ru/postgresql/docs.shtmlБлагодарности
* Eldar'у с группы новостей kraft.os.linux.info
http://www.sama.ru/~nrg_ent/samaranews/group-kraft.os.linux.info.html