необходима помощь по настройке Lighttpd и Apache с помощью Django

StackOverflow https://stackoverflow.com/questions/349564

Вопрос

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

Это было полезно?

Решение

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

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

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

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

Удачи

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top