Chestnut FTP Search
Содержание
Установка
Прежде всего убедитесь что в системе установлены все зависимости, описанные в системных требованиях.
Создание базы данных
Создайте базу данных с предпочтительной кодировкой. Для PostgreSQL это выглядит примерно так:
# su -c psql postgres postgres=# CREATE DATABASE название_вашей_бд WITH ENCODING 'utf8'; postgres=# CREATE ROLE ваш_пользователь WITH PASSWORD 'ваш_пароль' LOGIN; postgres=# GRANT ALL PRIVILEGES ON DATABASE название_вашей_бд TO ваш_пользователь;
Имейте введу что кодировка базы данных должна совпадать с кодировкой локали кластера баз данных, иначе нечувствительные к регистру функции будут работать не корректно.
Для MySQL это выглядит примерно так:
$ mysql -u root mysql> CREATE DATABASE название_вашей_бд CHARACTER SET cp1251 COLLATE cp1251_general_cs; mysql> GRANT ALL PRIVILEGES ON название_вашей_бд.* TO 'ваш_пользователь'@'localhost' IDENTIFIED BY 'ваш_пароль';
Заметьте что не рекомендуется использовать многобайтные кодировки, такие как UTF-8, с MySQL, потому что регулярные выражения в MySQL не поддреживают многобайтные кодировки. Также заметьте что требуется чувствительный к регистру collation.
Установка файлов и создание схемы БД
Распакуйте архив и запустить скрипт configure.py:
$ tar xjf chestnut-ftp-search-ВЕРСИЯ.tar.bz2 $ cd chestnut-ftp-search $ ./configure.py create-config $ ./configure.py create-schema
Это создаст конфигурационный файл config.py и таблицы базы данных. Параметры базы данных будут запрошены интерактивно.
Отредактируйте config.py в соответствии с вашими предпочтениями.
Добавления записи crontab
Для поддержания индексов в актуальном состоянии вам нужно добавить следующую запись crontab:
$ crontab -e 0 * * * * /ПУТЬ/К/chestnut-ftp-search/indexer.py
Заметьте, что вы можете указывать короткий период, потому что действительный период индексации хранится в базе данных для каждого отдельного сервера (вы можете изменить его при помощи srvman.py).
Also note that you may run indexer as daemon process (with --daemon option). The crontab entry for indexer is not needed If you run indexer as daemon process.
Также заметьте что вы можете запускать индексировщик как фоновый процесс (с опцией --daemon), при этом запись crontab не нужна.
Если индикатор состояния сервера включен в вашей конфигурации, вам нужно периодически запускать пинговщик для обновления информации о состоянии:
*/5 * * * * /ПУТЬ/К/chestnut-ftp-search/pinger.py
Заполнение базы данных
Добавьте информацию о всех FTP серверах, которые вы хотите индексировать:
$ ./srvman.py add ftp.example1.net $ ./srvman.py add ftp.example2.net $ ./srvman.py add ftp.example3.net ...
Чтобы получить список всех доступных опций, выполните:
$ ./srvman.py add --help
Теперь вы можете приступить к индексированию немедленно используя indexer.py или подождать пока cron запустит его. Вы можете запускать одновременно несколько процессов индексировщика, и они не будут конфликтовать, так как они сами разберутся какие процессы какие серверы будут индексировать.
Доступность по HTTP
Используя Apache и FastCGI
Необходимо чтобы модули mod_rewrite и mod_fastcgi или mod_fcgid были установлены и включены. Скопируйте htaccess-fcgid в .htaccess
Для получения информации о других методах размещения смотрите http://webpy.org/install, http://webpy.org/cookbook
Обновление
Чтобы обновить Chestnut FTP Search распакуйте архив с новой версией в каталог установки перезаписывая существующие файлы:
$ cd /ВАШ/КАТАЛОГ/УСТАНОВКИ $ tar xjf /ПУТЬ/К/chestnut-ftp-search-ВЕРСИЯ.tar.bz2 --strip-components 1
Далее выполните команду миграции:
$ ./configure.py migrate ПРЕДЫДУЩАЯ_ВЕРСИЯ
Также проверьте файл UPGRADE на замечания по обновлению конкретных версий.
Использование
Как работает частичное совпадение
При поиске с режимом частичного совпадения строка запроса представляет собой любую подстроку в имени файла.
Как работает точное совпадение
При поиске с режимом точного совпадения строка запроса представляет собой точное имя файла.
Как работают регулярные выражения
При поиске с режимом регулярного выражения строка запроса представляет собой POSIX-совместимое регулярное выражение. Фактически синтаксис зависит от сервера базы данных.
Как работает шаблон оболочки
При поиске в режиме шаблона оболочки стока запроса представляет собой шаблон оболочки. Шаблон оболочки может содержать метасимволы такие как: * (совпадает с любым количеством любых символов, и даже с их отсутствием), ? (совпадает с любым одним символом), [строка] (совпадает с одним и только одним символом, содержащимся в строке), {строка1,строка2,...} (совпадает с одним и только одним вариантом из: строка1,строка2,...).
Как работает поиск с транслитерацией
При поиске с транслитерацией строка запроса транслируется в символы ASCII, и оба варианта: оригинал и транслит используются при поиске.
На данный момент только символы кириллицы и некоторые из набора Latin 1 могут быть транслированы в символы ASCII.
Заметьте, что по умолчанию поиск с транслитерацией отключен. Чтобы разрешить пользователям использовать поиск с транслитерацией установите TRANSLIT_ENABLE = True в config.py.