Личная библиотека OPDS

Доброго времени суток!
Надоело копировать книги на флеш-карты, решил озадачиться созданием своего OPDS сервера, для удобного доступа к своей библиотеке.
Т.к. давно являюсь пользователем owncloud сервера, попробовал для него плагин, но то-ли руки кривые, то ли плагин такой, короче он у меня особо не заработал.
Поиск в интернатах наткнул на меня на Simple OPDS. И было решено ее попробовать на Ubuntu сервер 14.04.
Описание программы (взято с сайта программы):

Бесплатная программа для операционной системы Linux, предназначенная для быстрого создания электронного OPDS-каталога книг. OPDS (Open Publication Distribution System) каталог позволяет получать доступ к Вашей библиотеке через Интернет с большинства устройств для чтения электронных книг, планшетов, смартфонов и т.д.

Simple OPDS написан на языке Python. Основная программа-демон sopdsd.py выполняет три главные задачи:

– Рекурсивно по расписанию обходит указанный в конфигурационном файле каталог с электронными книгами, создавая каталог книг в БД Mysql.

– Выполняет работу встроенного HTTP/OPDS-сервера, отвечает на запросы клиентов согласно протокола OPDS.

– Выполняет работу встроенного HTTP/WEB-сервера, предоставляет доступ к коллекции книг для простых веб-браузеров.

Кроме того, в пакете SimpleOPDS имеются скрипты sopds.cgi и sopds.wsgi, которые могут быть использованы для организации работы Вашего сервера с применением распространенных http-серверов Apache и Nginx.

Первым делом устанавливаем python3, python коннектор для MySQL, далее скачиваем и распаковываем дистрибутив Simple OPDS

apt-get install mysql-server-5.5 python3 python3-mysql.connector
wget http://www.sopds.ru/images/archives/sopds-v0.23.4.zip
unzip sopds-v0.23.4.zip
mv sopds-master/ /opt/ & rm ./sopds-v0.23.4.zip
cd /opt/sopds-master

Создаем базу в MySQL
Если задан пароль в Mysql, заходим с указанием пароля (ключ -p)
mysql -uroot -p
create database if not exists sopds default charset=utf8;
grant all on sopds.* to 'sopds'@'localhost' identified by 'password';
commit;
CTRL+D или \q для выхода из MySQL

Тем самым мы создали базу с именем sopds, пользователя sopds и пароль пользователя password.
Теперь нужно создать нужные таблицы в созданной базе, к счастью разработчик в дистрибутив положил скрипты sql, для создания таблиц.
mysql -usopds -ppassword sopds < ./db/tables.sql  
mysql -usopds -ppassword sopds < ./db/genres.sql

Редактируем конфигурационный файл:
vi conf/sopds.conf
db_pass    = password
root_lib   = /ВАШ/ПУТЬ ДО/КНИГ
accounts = user:pass user1:pass1 #задаем пользователей и пароли к ним по типу пользователь:пароль
либо отключаем авторизацию auth = no

Запускаем сервер:
py/sopdsd.py start

Проверяем
py/sopdsd.py status
There is a SOPDS SCAN process with the PID 12837
There is a SOPDS HTTP process with the PID 12836

Сервер в принципе готов отрабатывать ваши запросы на порту 8081, те вы можете работать с ним по адресу http://вашipадрес:8081.
Но я решил, что мне удобней будет использовать для этой цели nginx.
Создаем конфигурацию виртуального хоста для nginx:
vi /etc/nginx/conf.d/books.mydomain.ru.conf
server {
    listen *:80;
    server_name books.mydomain.ru;
    access_log /var/log/nginx/books.access.log;
    error_log /var/log/nginx/books.error.log;
location / {
    proxy_pass http://127.0.0.1:8081;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_connect_timeout 120;
    proxy_send_timeout 120;
    proxy_read_timeout 180;
    }
}

Просим nginx перечитать конфигурацию:
nginx -s reload

Не забудьте внести изменения в обслуживающий ваш домен DNS сервер, нужно добавить A-запись, по типу:
books    A   XXX.XXX.XXX.XXX
Где XXX.XXX.XXX.XXX – ваш IP адрес.
Для автоматического старта сервера OPDS при загрузки системы, я просто добавил старт в crontab:
crontab -e
@reboot                                 /opt/sopds/py/sopdsd.py start

При работе через nginx, имеет смысл в конфигурационном файле sopds.conf  указать локальный адрес 127.0.0.1
bind_address = 127.0.0.1

Ну вот вроде и все, приятного чтения!

 !!!UPDATE!!! Есть новая статья по новой версии SOPDS 
0 0 голосовать
Рейтинг статьи
Подписаться
Уведомление о
guest
2 Комментарий
Oldest
Newest Most Voted
Встроенные отзывы
Просмотр всех комментариев
i'm
i'm
4 лет назад

Если пользуешь nginx лучше при помощи uWSGI использовать sopds.wsgi, а в Cron добавить периодический запуск sopds-scan.py.
В этом случае sopdsd.py не нужно использовать совсем. В нем в качестве http сервера используется стандартный сервер, встроенный в Питон. Его конечно достаточно, чтобы использовать для “домашних” целей, но в принципе для production он не предназначен.