Всем привет!
Данная тема уже была затронута в рамках этого блога в 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:
# 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/
Всем пока:)