Нужна помощь в настройке Lighttpd и Apache с Django

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

2 ответа

Решение

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

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

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

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

Удачи

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

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

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

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