Установка mnoGoSearch с SQLite/MySQL/PostgreSQL/Firebird


Mark Silinio <silinio(at)mail.ru>
последнее обновление 16/04/05



Что это Бэрримор?


В данной заметке рассказывается про установку и настройку поикового движка mnoGoSearch с разными базами данных,- SQLite, MySQL(в т.ч. через ODBC), PostgreSQL, Firebird. Изложены пошаговые действия для каждого из случаев. Здесь не разбираются подробности использования вышеперечисленных баз, также как и тонкости работы с поисковым движком. Предполагается что вы работаете как пользователь root.

Использовал дистрибутив Gentoo Linux, и были установлены следующие программы(вместе с зависимостями разумеется): mnoGoSearch на данный момент отсутствует в portage, так что бегом на http://www.mnogosearch.org/download.html - Download sources, скачиваем последнюю версию в tar.gz архиве...

Далее по курсу:



Установка mnoGoSearch

Распаковываем:
# tar zxf mnogosearch-3.2.32.tar.gz -C /usr/src

Конфигурируем:
# cd /usr/src/mnogosearch-3.2.32/
# ./configure 

Ключи configure для разных БД:

--with-sqlite=/usrSQLite
--with-mysqlMySQL
--with-pgsqlPostgreSQL
--with-unixODBCunixODBC
--with-ibase=/opt/firebirdFirebird

Помните что БД нужно устанавливать до 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 см. соответствующую документацию (или комментарии)

Пара строк search.htm:
LocalCharset   koi8-r
BrowserCharset koi8-r

можете скачать переведённый мною файл 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 



Ссылки



Благодарности



<- Назад
Valid HTML 4.01! Valid CSS!