nginx + uWSGI + sopds в sub-uri домена
6 years 5 months ago - 6 years 4 months ago #883
by omgiafs
Проблема: не работает поиск в opds каталоге.
Проблема в коде sopds исправлена, в версии v0.38 18.12.2016. Кто скачал раньше - перекачать или сделать git pull, если ставили из git'а.
Так что можно считать рабочей инструкцией.
Если не заработает, читать логи nginx, uwsgi и мануал uWSGI .
Sopds развернут в веб-uri example.com/sopds
Через веб все работает.
Через opds все работает.А вот поиск не работает.
ФРАГМЕНТЫ nginx.conf:
sopds.ini для uWSGI:
sopds/settings.py:
omgiafs created the topic: nginx + uWSGI + sopds в sub-uri домена
Проблема в коде sopds исправлена, в версии v0.38 18.12.2016. Кто скачал раньше - перекачать или сделать git pull, если ставили из git'а.
Так что можно считать рабочей инструкцией.
Если не заработает, читать логи nginx, uwsgi и мануал uWSGI .
Sopds развернут в веб-uri example.com/sopds
Через веб все работает.
Через opds все работает.
ФРАГМЕНТЫ nginx.conf:
http {
upstream django_sopds {
server unix:///var/run/uwsgi/app/sopds/socket;
}
server {
...
location /sopds {
allow all;
include uwsgi_params;
uwsgi_pass django_sopds;
access_log /var/log/nginx/sopds-access.log;
error_log /var/log/nginx/sopds-error.log;
}
location ^~ /sopds/static/ {
alias /var/www/sopds/static/;
access_log off;
error_log off;
}
}
sopds.ini для uWSGI:
[uwsgi]
# конфиг без virtualenv, python системный
# если с virtualenv, то добавить параметр
# venv = /path/to/virtualenv/
plugin = python3
# папка приложения
chdir = /var/www/sopds/
# sopds в sub-uri "/sopds" домена, т.е.
# www.example.com/sopds
mount = /sopds=sopds/wsgi.py
manage-script-name = true
callable = application
processes = 4
threads = 2
# пользователь, под которым запускаем uwsgi
uid = www-data
gid = www-data
sopds/settings.py:
STATIC_URL = '/sopds/static/'
Last Edit: 6 years 4 months ago by omgiafs.
Please Войти or Create an account to join the conversation.
- omgiafs
-
Topic Author
- Offline
- Новый участник
-
Less
More
- Posts: 4
- Karma: 1
6 years 5 months ago - 6 years 5 months ago #884
by omgiafs
omgiafs replied the topic: nginx + uWSGI + sopds
Конфиг нормален. Можно считать инструкцией.
Моя проблема - это баг sopds.
В логах nginx ничего не появлялось, потому что я мониторил лог локейшна /sopds, а ссылка на поиск генерировалась как /opds/...
Создал проблему на Гитхабе.
Моя проблема - это баг sopds.
В логах nginx ничего не появлялось, потому что я мониторил лог локейшна /sopds, а ссылка на поиск генерировалась как /opds/...
Создал проблему на Гитхабе.
Last Edit: 6 years 5 months ago by omgiafs.
Please Войти or Create an account to join the conversation.
- omgiafs
-
Topic Author
- Offline
- Новый участник
-
Less
More
- Posts: 4
- Karma: 1
6 years 5 months ago #885
by mitshel
mitshel replied the topic: nginx + uWSGI + sopds
Действительно, нахардкодил немного ;(
Проблема появлялась только при использовании SOPDS на sub-uri. Поправил без изменения номера версии.
Проблема появлялась только при использовании SOPDS на sub-uri. Поправил без изменения номера версии.
Please Войти or Create an account to join the conversation.
- mitshel
-
- Offline
- Администратор
-
Less
More
- Posts: 297
- Karma: 8
6 years 4 months ago - 6 years 4 months ago #997
by sanrega
Конфиг не работает, только что проверил на свежеустановленном Debian 8.
Перезапуск nginx сразу выдает ошибку nginx: [emerg] "server" directive is not allowed here in /etc/nginx/nginx.conf:7
sanrega replied the topic: nginx + uWSGI + sopds
omgiafs wrote: Конфиг нормален. Можно считать инструкцией.
Конфиг не работает, только что проверил на свежеустановленном Debian 8.
Перезапуск nginx сразу выдает ошибку nginx: [emerg] "server" directive is not allowed here in /etc/nginx/nginx.conf:7
Last Edit: 6 years 4 months ago by sanrega.
Please Войти or Create an account to join the conversation.
- sanrega
-
- Offline
- Новый участник
-
Less
More
- Posts: 10
6 years 4 months ago - 6 years 4 months ago #1009
by omgiafs
omgiafs replied the topic: nginx + uWSGI + sopds
У меня, кстати, тоже Debian 8, только stable пакеты, всё из реп.
Предполагается не бездумная копи-паста, а копирование необходимых для Вас блоков. Собственно, здесь и приведены только блоки конфига, имеющие отношение к sopds в sub-uri "/sopds".
Здесь не прописаны параметры сервера, включая имя, IP и прочее.
Если я буду их приводить, неработоспособность еще больше увеличится, т.к. знаю по себе - нельзя так просто взять и скопировать конфиг nginx
Здесь - необходимые и достаточные параметры для того, чтобы на вашем НАСТРОЕННОМ веб-сервере с nginx-фронтендом запустить sopds в sub-uri "/sopds".
Что, вскипели? Правильно. Конфиг нерабочий
Секция server должна находиться внутри секции http, а не рядом с ней.
Так получилось, потому что у меня конфиг разнесён по нескольким файлам, основной - секция HTTP, все локейшны - в других файлах, подключаются через include.
Вот вам пример конфига nginx одним файлом.
В данном примере принудительное использование https.
Исправил конфиг.
Предполагается не бездумная копи-паста, а копирование необходимых для Вас блоков. Собственно, здесь и приведены только блоки конфига, имеющие отношение к sopds в sub-uri "/sopds".
Здесь не прописаны параметры сервера, включая имя, IP и прочее.
Если я буду их приводить, неработоспособность еще больше увеличится, т.к. знаю по себе - нельзя так просто взять и скопировать конфиг nginx

Здесь - необходимые и достаточные параметры для того, чтобы на вашем НАСТРОЕННОМ веб-сервере с nginx-фронтендом запустить sopds в sub-uri "/sopds".
Что, вскипели? Правильно. Конфиг нерабочий

Так получилось, потому что у меня конфиг разнесён по нескольким файлам, основной - секция HTTP, все локейшны - в других файлах, подключаются через include.
Вот вам пример конфига nginx одним файлом.
В данном примере принудительное использование https.
user www-data;
worker_processes 4;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
upstream django_sopds {
server unix:///var/run/uwsgi/app/sopds/socket;
}
## Basic Settings
sendfile on;
sendfile_max_chunk 128k;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
server_tokens off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
include win-utf;
## Logging Settings
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
ssi on;
server {
listen 80 default_server;
server_tokens off;
server_name example.com www.example.com;
# enforce https
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name example.com www.example.com;
server_tokens off;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# Add headers to serve security related headers
add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;";
add_header X-Content-Type-Options nosniff;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
keepalive_timeout 5 5;
send_timeout 10;
client_body_timeout 10;
client_header_timeout 10;
output_buffers 1 32k;
postpone_output 1460;
access_log /var/log/nginx/example.com/access.log;
error_log /var/log/nginx/example.com/error.log;
location / {
root /var/www/example.com/www;
charset utf-8;
index index.html;
}
# Simple OPDS server
location /sopds {
include uwsgi_params;
uwsgi_pass django_sopds;
access_log /var/log/nginx/sopds/sopds-access.log;
error_log /var/log/nginx/sopds/sopds-error.log;
}
# Simple OPDS static content
location ^~ /sopds/static/ {
alias /var/www/sopds/static/;
access_log /var/log/nginx/sopds/sopds-static-access.log;
error_log /var/log/nginx/sopds/sopds-static-error.log;
}
}
}
Исправил конфиг.
Last Edit: 6 years 4 months ago by omgiafs.
Please Войти or Create an account to join the conversation.
- omgiafs
-
Topic Author
- Offline
- Новый участник
-
Less
More
- Posts: 4
- Karma: 1
Time to create page: 0.128 seconds