#### 1. Установка Simple OPDS в Fedora, RedHat, CentOS:
1.1 Зависимости.
Требуется Mysql не ниже версии 5 (необходима поддержка хранимых процедур)
Требуется Python не ниже версии 3.3 (используется атрибут zlib.Decompressor.eof, введенный в версии 3.3)
Для работы проекта необходимо установить следующие зависимости:
yum install mysql
yum install python3
yum install mysql-connector-python3
1.2 Установка.
Загрузить проект можно с сайта www.sopds.ru.
Проект имеет следующую структуру:
>opds - каталог проекта (можно задать свое имя каталога)
> py - каталог с программами на Python
> db - каталог инициализационные скрипты для создания БД
> conf - каталог с файлом конфигурации
> logs - каталог для log-файлов
> README.md - файл README
1.3 Конфигурационный файл.
Перед началом работы необходимо внести необходимые настройки в файл конфигурации ./conf/sopds.conf
В основном необходимо при помощи параметра root_lib указать путь к Вашей коллекции книг
остальные параметры можно оставить "по умолчанию"
1.4 Инициализация базы данных.
Во первых для работы каталога необходимо создать базу данных "sopds" и пользователя с необходимыми правами,
например следующим образом:
mysql -uroot -proot_pass mysql
mysql > create database if not exists sopds default charset=utf8;
mysql > grant all on sopds.* to 'sopds'@'localhost' identified by 'sopds';
mysql > commit;
mysql > ^C
Далее в созданную базу данных необходимо загрузить структуру БД и заполненную таблицу жанров, например
следующим образом:
mysql -usopds -psopds sopds < ./db/tables.sql
mysql -usopds -psopds sopds < ./db/genres.sql
Все указанные выше процедуры могут быть выполнены при помощи скрипта ./db/db_create.sh суперпользователем root (для Fedora)
1.5 Использование OPDS-сервера.
OPDS-Сервер запускается командой:
./sopdsd.py start
Указанная команда запустит два процесса в режиме демона Linux:
- Демон сканирования, который будет производить периодическое сканирование Вашей коллекции книг на основании настроек в
секции [scand] конфигурационного файла
- Демон http-opds-сервера, который предоставит доступ к коллекции книг OPDS-клиентам (по умолчанию прослушивается порт 8081)
на основании настроек в секции [httpd] конфигурационного файла. Доступ к OPDS-каталогу в этом случае можно получить
по адресу http://<ВашСервер>:8081/
> Команда ./sopdsd.py stop - приведет к остановке обеих процессов
> Команда ./sopdsd.py status - покажет информацию о состоянии процессов
Модуль sopdsd.py предоставляет все возможности пакета Simple OPDS и в большинстве случаев достаточно использовать только его.
Для пользователей, которые по каким-то причинам желают обновлять БД SOPDS вручную в пакете присутствует
программа однократного сканирования коллекции книг: sopds-scan.py
Для доступа к коллекции книг, при желании можно использовать внешний HTTP-сервер, такой как Apache, или Nginx для этого в
пакете программ присутсвуют скрипты:
- sopds.cgi для использования технологии CGI (смотри раздел Базовая настройка CGI в сервере Apache)
- sopds.wsgi для использования технологии WSGI (см. раздел Базовая настройка WSGI в сервере Apache)
1.6 Обновление версий
- Поскольку при переходе от версии к версии возможно изменение структуры БД необходимо пересоздать ее следующей командой
./db/db_create.sh либо выполнить рекомендации в п.1.4
1.7 Возможные проблемы:
На слабых компьютерах (в основном на NAS) может возникнуть проблема с работой MYSQL (MariaDB).
Один из запросов в хранимой процедуре sp_mark_dbl приводит к тому, что mysql создает достаточно объемный временный файл.
Если раздел, где создается временный файл (чаще всего /tmp) не очень большой, то раздел переполняется, что приводит к невозможности выполнения запроса и возникает ошибка:
2. В файле конфигурации mysql указать новый путь к tmpdir, который имеет достаточный размер.
(например в файл конфигурации для MySQL - my.cnf в раздел [msqld] записать строку tmpdir=/var/tmp - /var/tmp конечно же должен существовать, ну и перегрузить после этого mysqld)
#### 2. Настройка конвертации fb2 в EPUB или MOBI (опционально, можно не настраивать)
- во первых необходимо скачать последнюю версию конвертера fb2toepub по ссылке выше (текущая уже находится в проекте)
к сожалению конвертер не совершенный и не все книги может конвертирвать, но большинство все-таки конвертируется
- далее, необходимо скопировать архив в папку opds/fb2toepub и разархивировать
- далее, компилируем проект командой make, в результате в папке unix_dist появится исполняемый файл fb2toepub
- в конфигурационном файле sopds.conf необходимо задать путь к этому конвертеру, а также путь к временной папке,
куда будут помещаться сконвертированные файлы, например таким образом:
> fb2toepub=../fb2toepub/unix_dist/fb2toepub
> temp_dir=/tmp
- В результате OPDS-клиенту будут предоставлятся ссылки на FB2-книгу в формате epub
2.2 Конвертер fb2epub http://code.google.com/p/epub-tools/ (конвертер написан на Java, так что в вашей системе должнен быть установлен как минимум JDK 1.5)
- также сначала скачать последнюю версию по ссылке выше (текущая уже находится в проекте)
- скопировать jar-файл например в каталог opds/fb2epub (Здесь уже лежит shell-скрипт для запуска jar-файла)
- Соответственно прописать пути в файле конфигурации sopds.conf к shell-скрипту fb2epub
> fb2toepub=../fb2epub/fb2epub
> temp_dir=/tmp
2.3 Конвертер fb2conv (конвертация в epub и mobi) http://www.the-ebook.org/forum/viewtopic.php?t=28447
- Необходимо установить python 2.7 и пакеты lxml, cssutils:
yum install python
yum install python-lxml
yum install python-cssutils
- скачать последнюю версию конвертера по ссылке выше (текущая уже находится в каталоге fb2conv проекта)
- скачать утилиту KindleGen с сайта Amazon http://www.amazon.com/gp/feature.html?ie=UTF8&docId=1000234621
(текущая версия утилиты уже находится в каталоге fb2conv проекта)
- скопировать архив проекта в opds/fb2conv (Здесь уже подготовлены shell-скрипты для запуска конвертера) и разархивировать его
- Для конвертации в MOBI нужно архив с утилитой KindleGen положить в каталог с конвертером и разархивировать
- В конфигурационном файле sopds.conf задать пути к соответствующим скриптам:
> fb2toepub=../fb2conv/fb2epub
> fb2tomobi=../fb2conv/fb2mobi
> temp_dir=/tmp
#### 3. Базовая настройка CGI в сервере Apache
- Для работы CGI-скрипта необходимо разрешить доступ к каталогу opds/py, например при помощи следующих директив конфигурационного
файла web-сервера Apache httpd.conf:
<Directory "/home/www/opds/py">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Alias /opds "/home/www/opds/py"
Alias /web "/home/www/opds/py"
- Далее, необходимо разрешить запуск cgi-скрипта ./py/sopds.cgi
при помощи директив, помещенных в файл .htaccess, который необходимо создать в корне пакета SOPDS
(например: /home/www/opds/.htaccess)
Options ExecCGI
AddHandler cgi-script .cgi
- Для настройки аутентификации, создайте пользователя командой:
htpasswd -c /home/www/opds/.htpasswd user
и добавьте в .htaccess следующие строки:
AuthType Basic
AuthName "SOPDS Library"
AuthUserFile /home/www/opds/.htpasswd
require valid-user
- при выполнении указанных выше процедур доступ к OPDS-каталогу можно получить по следующим адресам (opds и web формат):
> http://<Ваш Сервер>/opds/sopds.cgi
> http://<Ваш Сервер>/web/sopds.cgi
- для сокращения URL доступа добавьте следующую директиву в файл .htaccess:
DirectoryIndex index.xml sopds.cgi
при использовании указанной директивы доступ к OPDS-каталогу можно получить по следующим адресам:
> http://<Ваш Сервер>/opds/
> http://<Ваш Сервер>/web/
- для некоторых систем (например Ubuntu 12.04) возможно понадобится включить "CGI processing in Apache" командой:
sudo a2enmod cgi
#### 4. Базовая настройка WSGI в сервере Apache
WSGI - Web Server Gateway Interface - более эффективный стандарт взаимодействия Python программ с Веб сервером, чем CGI
WSGI в отличие от CGI позволяет не загружать интерпертатор Python со скриптом каждый раз, когда происходит обращение к
CGI-скрипту. Вместо этого Python-программа загружается однократно и выполняется при помощи постоянно загруженного модуля
mod_wsgi.
4.1 Установка mod_wsgi
- Для работы WSGI скрипта необходимо загрузить, скомпилировать и установить модуль mod_wsgi для Apache. Ньюанс тут только в том,
что нужный нам mod_wsgi должен быть скомпилирован для python3. Таких, уже готовых модулей я для своей системы не нашел, поэтому
пришлось выполнить несложные шаги для компиляции нужного нам модуля:
yum install hg # Устанавливаем клинета для Mercurial на которой ведется разработка mod_wsgi