нужна помощь в настройке Lighttpd и Apache с Django - PullRequest
1 голос
/ 08 декабря 2008

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

Ответы [ 2 ]

1 голос
/ 08 декабря 2008

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

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

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

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

Удачи

0 голосов
/ 08 декабря 2008

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

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

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

...