Нужна помощь с конфигурацией Lighttpd и Apache с Django

Я использую Django в качестве веб-фреймворка, а затем Apache и Lighttpd в качестве веб-сервера и статического медиа-сервера соответственно. Lighty хорошо обслуживает весь мой статический контент, но мне нужно настроить его для обслуживания новых файлов, загруженных пользователем. Lighttpd работает на другом компьютере, чем Apache (Django). Мой код django для создания каталога и последующего создания файла изображения выполняется на моей машине Apache, в результате чего он в настоящее время сохраняется на той же машине. Я хочу, чтобы создание этого каталога и файла происходило на моем статическом медиа-сервере, который затем должен обслуживаться самим медиа-сервером. Я использую функции os.mkdir и urllib.urlretrieve соответственно для создания каталога и сохранения файлов на машине Django (Apache). Могу ли я сделать некоторую настройку конфигурации, чтобы эти вещи работали, или мне нужно написать сценарии на медиа-сервере и вызвать их с машины Django?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
527
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вот для чего я использую rsync. Делайте все, что хотите на главном сервере, а затем периодически (или по запросу) отправляйте rsync на статический сервер. Rsync быстрее (и функциональнее), чем все, что вы можете создать с помощью быстрого взлома.

Просто потому, что я параноик, я ежечасно выполняю синхронизацию всех сайтов своих клиентов с двумя резервными серверами, один из которых находится в моем гараже. Я только что синхронизировал "rsync -a" с сайтом клиента размером 1,7 ГБ (на котором не было никаких изменений), и потребовалось 9,92 секунды времени настенного времени, включая 3 сетевых рукопожатия для синхронизации 3 разных каталогов. Если что-то изменилось, presto-bango, все готово, с отметками времени, владельцем / группой и т. д.

Удивительно, насколько сильно вы можете относиться к сбоям сервера, когда получаете настоящее резервное копирование на нескольких машинах без участия человека. Я очень хорошо сплю.

Спасибо за ваш комментарий, но использование rsync может потребовать, чтобы мы сначала временно обслужили файлы с самого веб-сервера, а затем запустили механизм, который обслуживает статический файловый сервер после того, как rsync подтолкнет его. На данный момент NFS работает, и мы посмотрим, поможет ли нам rsync в будущем.

Bharath 12.12.2008 10:22
Ответ принят как подходящий

Самый простой ответ заключается в том, что пользователь загружает данные в общий каталог, к которому имеют доступ оба веб-сервера. Тогда он доступен мгновенно. Если вы используете unix (звучит так), то NFS - возможное решение. Если вы думаете, что ваш сайт будет масштабироваться на несколько серверов а-ля flickr, то другим решением будет использование rsync для отправки на несколько пограничных серверов и, возможно, даже реализация схемы сегментирования.

Просто будь осторожен. В зависимости от вашего приложения вы должны учитывать множество проблем с безопасностью.

Если все файлы отправляются в общедоступный каталог, пользователи могут угадывать имена файлов других людей и загружать их. В этом случае вы захотите обслуживать их из Django с тонким слоем безопасности наверху.

Никогда не доверяйте своим пользователям! Убедитесь, что то, что они загружают, находится в определенном допустимом наборе. Ни при каких обстоятельствах вы не должны позволять им загружать все, что они хотят. Если, конечно, вашим пользователям не доверяют. Даже в этом случае вам следует провести некоторые проверки. Скорее всего, им не стоит загружать файлы .php. Последнее, что вы хотите им дать, - это возможность запускать произвольные скрипты на вашем сервере. По крайней мере, настройте каталог так, чтобы он просто обслуживал файлы и ничего не выполнял.

Удачи

Большое спасибо. NFS работает как шарм, и я изо всех сил стараюсь сделать его безопасным. Думаю, я забочусь почти обо всех упомянутых вами точках безопасности. Еще раз спасибо.

Bharath 12.12.2008 10:18

Другие вопросы по теме