Личная библиотека 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 
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Комментарии: 2
  1. i'm

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

    1. Vladimir (автор)

      Приветствую!
      Для личных целей и python http пойдет, через nginx:)
      А так, да… ваш вариант не плох!

Добавить комментарий

:) :D :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.