desperadik
@desperadik
Истина где-то рядом.

Как MEDIA_ROOT отправить на другой хост?

Добрый день.

Python 2.7+Django 1.4. Работают 4 сервера: 1 фронт (debian7,nginx) и upstream на 3 бекэнда (debian 7, apache), на всех один и тот же репозиторий. Статика собрана на фронтенде и он её отдаёт. Медиа для теста есть только на одном из бекэндов. Но надо сделать, чтобы вся media была на фронтенде.

Как мне реализовать, чтобы Apache'и забирали и складывали media с/на фронтенд?
Каким способом мне подключить фронтенд сервер (а именно папку media) в settings.py у бекенда?http? ssh? nfs?

Или можно это как-то реализовать через сам nginx?Может быть, через рерайты?

Спасибо за Ваши отзывы и ответы, п.с. конфигурация nginx:

front.test:
upstream backend {
    ip_hash;
    server 192.168.0.231:8080;
    server 192.168.0.232:8080 down;
    server 192.168.0.233:8080 down;
}

server {
    listen    80;
    server_name  web.ru;

 location ~ /\.ht {
        deny all;
}

# location ~*\.(bmp|class|css|doc|flv|gif|ico|jpg|jpeg|js|mov|mp3|pdf|png|ppt|rtf|swf|txt|xls|xml|eot|otf|svg|ttf|$
#        root /home/user/app/;
#}

 location ~ ^/(media|static) {
        root /home/user/app/;
 }

 location  / {
        client_max_body_size    101m;
        client_body_buffer_size 128k;
        proxy_send_timeout   90;
        proxy_read_timeout   90;
        proxy_buffer_size    4k;
        proxy_buffers     16 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
        proxy_connect_timeout 30s;
        proxy_pass   http://backend;
        proxy_set_header   Host   $host;
        proxy_set_header   X-Real-IP  $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
}

 location = /50x.html {
        root   /usr/share/nginx/html;
}

 error_page  404              /404.html;

 error_page   500 502 503 504  /50x.html;

}


часть settings.py на бекэнде
....
MEDIA_URL = '/media/'
MEDIA_ROOT = '/home/userbackend/app'
....
  • Вопрос задан
  • 2704 просмотра
Решения вопроса 2
fornit1917
@fornit1917
У нас правда не питон, а пхп, но мы для подобных же целей использовали nfs.
Ответ написан
maxaon
@maxaon
Django-way будет применить кастомный storage backend. С media не делал, делал только для статичных файлов.
Для начала можете глянуть документацию и список для начала поиска желаемого.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
un1t
@un1t
У нас на одном проекте было что-то подобное. Был один бакэнд с админкой и много фронтов. Написали декторатор который с помощью rsync перекидывал нужные файлы по всем сервакам. Этот декоратор навесили на сохранение в админке.

Или можно это как то реализовать через сам nginx?Может быть через рерайты?

Как вариант на location /media можно повесить proxy_pass на бакэнд, но не знаю насколько это уместно в вашем случае.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы