Введение
OPDS (англ. Open Publication Distribution System) — электронный формат каталога веб-синдикации (англ.), основанный на Atom и HTTP. OPDS-каталоги используют существующие или формирующиеся открытые стандарты и конвенции, направленные на упрощение взаимодействия.
https://ru.wikipedia.org/wiki/OPDS
В общем, есть проект, написанный на Django, Simple OPDS (http://sopds.ru/). Настраивается легко по инструкции на сайте проекта. Единственное, что не расписано — это настройка доступа к проекту через http-сервер Apache2, хотя есть упоминание, что желательно использовать не встроенный http-сервер, а как раз Apache2 или nginx. А в настройке есть тонкости.
Итак, что мы имеем?
- ОС Debian 12
- Настроенный Simple OPDS, работающий через собственный http-сервер.
- Simple OPDS установлен по пути /srv/www/sopds_project/sopds
- Virtual Environment Python3 находится по пути /srv/www/sopds_project/venv
Установка Apache2 и необходимый модуль.
Почти все было найдено на по ссылке https://itdid.ru/django_apache2_wsgi.html.
Ставим Apache2 и модуль wsgi.
root@homeserver:/# apt-get install apache2 libapache2-mod-wsgi-py3
Активируем модуль wsgi.
root@homeserver:/# a2enmod wsgi
Создаем файл конфигурации сайта для Apache2.
root@homeserver:/# nano /etc/apache2/sites-available/myopds.ru.conf
<VirtualHost *:80>
ServerAdmin admin@myopds.ru
ServerName myopds.ru
DocumentRoot /srv/www/sopds_project/sopds
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /static /srv/www/sopds_project/sopds/static
<Directory /srv/www/sopds_project/sopds/static>
Require all granted
</Directory>
<Directory /srv/www/sopds_project/sopds/sopds>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess simpleOPDS lang='en_US.UTF-8' locale='en_US.UTF-8' python-path=/srv/www/sopds_project/sopds python-home=/srv/www/sopds_project/venv
WSGIProcessGroup simpleOPDS
WSGIScriptAlias / /srv/www/sopds_project/sopds/sopds/wsgi.py
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
</VirtualHost>
Ключевые моменты, которые отличаются от первоисточника.
WSGIApplicationGroup %{GLOBAL}
— Позволяет открывать сайт из разных сетей. Без этого параметра будет ошибка. Если, допустим, сервер подключен к нескольким сетям и имеет адреса, например, 192.168.1.2 и 10.0.0.2, то при открытии сайта по адресу 192.168.1.2 все будет работать, но при попытке открыть по 10.0.0.2 — выйдет ошибка.WSGIPassAuthorization On
— Данная строка позволяется производить Basic HTTP-авторизацию. В Simple OPDS она нужна для доступа к http://myopds.ru/opds — как раз к системе OPDS, используемой многими программами для чтения книг.
Включаем поддержку русских текстов в пути к книгам и их имен файлов. Также, эта настройка включает изображения обложек. (??? Почему так — фиг знает.)
Правим файл /etc/apache2/envvars.
root@homeserver:/# nano /etc/apache2/envvars
Нужно закомментировать строку export LANG=C
и раскомментировать . /etc/default/locale
. Фрагмент файла:
...
## The locale used by some modules like mod_dav
# export LANG=C
## Uncomment the following line to use the system default locale instead:
. /etc/default/locale
export LANG
...
Активируем конфиг сайта.
root@homeserver:/# a2ensite myopds.ru
Перезагружаем Apache2.
root@homeserver:/# systemctl restart apache2
Итог
По адресу http://myopds.ru/web доступен сайт Simple OPDS, по адресу http://myopds.ru/opds доступен OPDS модуль для доступа с электронных читалок.