Доброго времени суток!
Надоело копировать книги на флеш-карты, решил озадачиться созданием своего 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
Если пользуешь nginx лучше при помощи uWSGI использовать sopds.wsgi, а в Cron добавить периодический запуск sopds-scan.py.
В этом случае sopdsd.py не нужно использовать совсем. В нем в качестве http сервера используется стандартный сервер, встроенный в Питон. Его конечно достаточно, чтобы использовать для «домашних» целей, но в принципе для production он не предназначен.
Приветствую!
Для личных целей и python http пойдет, через nginx:)
А так, да… ваш вариант не плох!