Всем привет!
Данная тема уже была затронута в рамках этого блога в 2015 году.
Домашний сервер за это время был переведен на FreeBSD, а автор Simple OPDS уже давно переписал свой проект на Django.
Сегодня попробовал запустить SOPDS на FreeBSD 12.1, запуск прошел успешно и я решил поделится данным рецептом:)
В рамках этой статьи будем использовать базу данных SQLite, в качестве фронтэнда — NGINX.
Если у вас установлен Python версии ниже 3.7, то обновляем
Все будем ставить из «пакеджей», (считаем, что система у вас чистая) поехали:
# pkg update # pkg install python37 py37-pip py37-pillow py37-lxml py37-django-picklefield-2.0 nginx gitПереходим в корневую директорию NGINX и забираем дистрибутив SOPDS:
# cd /usr/local/www # git clone https://github.com/mitshel/sopds.gitПереходим в клонированный проект:
# cd /usr/local/www/sopdsЗапускаем дополнительную установку софта:
# python3.7 -m pip install -r requirements.txtВыполняем инициализацию и заполнение справочника жанров:
# python3.7 manage.py migrate # python3.7 manage.py sopds_util clearЗаводим суперпользователя:
# python3.7 manage.py createsuperuserУказываем путь до книг (в моем случае /home/books)
# python3.7 manage.py sopds_util setconf SOPDS_ROOT_LIB /home/booksВыставляем русский язык по умолчанию:
# python3.7 manage.py sopds_util setconf SOPDS_LANGUAGE ru-RUСоздадим директорию для логов и укажем пути:
# mkdir /var/log/sopds # python3.7 manage.py sopds_util setconf SOPDS_SERVER_LOG /var/log/sopds/sopds_server.log # python3.7 manage.py sopds_util setconf SOPDS_SCANNER_LOG /var/log/sopds/sopds_scanner.log # python3.7 manage.py sopds_util setconf SOPDS_TELEBOT_LOG /var/log/sopds/sopds_telebot.logНастроим ротацию логов:
# vi /etc/newsyslog.conf /var/log/sopds/sopds_server.log 640 5 1000 * JC /var/log/sopds/sopds_scanner.log 640 5 1000 * JC /var/log/sopds/sopds_telebot.log 640 5 1000 * JCПерезапустим newsyslog:
# /etc/rc.d/newsyslog restartВнесем в crontab запуск sopds при перезагрузке:
# crontab -e @reboot python3.7 /usr/local/www/sopds/manage.py sopds_scanner start --daemon @reboot python3.7 /usr/local/www/sopds/manage.py sopds_server start --daemonСтартуем, веб интерфейс по умолчанию на 8001 порту,
можно изменить аргументами --host 127.0.0.1 --port 8888# python3.7 manage.py sopds_scanner start --daemon # python3.7 manage.py sopds_server start --daemonПо умолчанию сканирование каталога происходит два раза в сутки: в 0 часов и в 12.
Запустим принудительное сканирование:# python3.7 manage.py sopds_scanner scan --verboseЗаймемся NGINX:
Разрешаем запуск:# echo nginx_enable=\"YES\" >> /etc/rc.confСоздадим директорию для конфигурационных файлов виртуальных серверов NGINX:
# mkdir /usr/local/etc/nginx/conf.dПодключим конфигурационный файлы из вышеуказанной директории:
# vi /usr/local/etc/nginx/nginx.confВ директиву http добавим строку:
include /usr/local/etc/nginx/conf.d/*.conf;Теперь nginx будет обрабатывать все .conf файлы из директории /usr/local/etc/nginx/conf.d/
Создадим конфигурационный файл для нашего opds каталога
(!!!имя books.myhost.ru - заменить на свое!!!):# vi /usr/local/etc/nginx/conf.d/books.myhost.ru.conf server { listen 80; server_name books.myhost.ru; access_log /var/log/nginx/books/access.log; error_log /var/log/nginx/books/error.log error; location / { proxy_pass http://127.0.0.1:8001; 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: <pre class="lang:sh decode:true ">[shell]# mkdir -p /var/log/nginx/booksПроверяем корректность конфигурации NGINX:
# nginx -t nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successfulЗапускаем NGINX:
# /usr/local/etc/rc.d/nginx startПроверяем по адресу http://books.myhost.ru должен быть доступен web-интерфейс.
opds каталог доступен по адресу:
http://books.myhost.ru/opds/
Всем пока:)