#django #deployment #static
#django #развертывание #статический
Вопрос:
Что касается этой страницы документации с веб-сайта Django,
https://docs.djangoproject.com/en/1.2/howto/static-files/
там, где написано «для разработки «С учетом сказанного, Django поддерживает статические файлы во время разработки. Для обслуживания медиафайлов можно использовать представление django.views.static.serve().»
Итак, мой вопрос в том, если я использую этот метод, сколько работы потребуется для перехода на apache.
В настоящее время у меня есть символическая ссылка на мою папку с изображениями в папке / var / www, а в настройках Django я установил URL-адрес носителя на :
MEDIA_URL = 'http://127.0.0.1:80/Images/'
Это кажется довольно простым взломом, но мой проект станет очень большим (с большим количеством css, js и PDF-файлов), и я сомневаюсь, что этот метод хорош.
Ответ №1:
Мой подход заключался в том, чтобы сам apache перехватывал URL-адреса статических файлов и обслуживал их напрямую, вообще не вызывая django. Итак, моя конфигурация apache выглядела примерно так:
<VirtualHost *:80>
ServerName www.myproject.com
Alias /static /docs/my_website/static
<Directory /docs/my_website/static>
Order allow,deny
Allow from all
</Directory>
Alias /favicon.ico /docs/my_website/static/images/icons/favicon.ico
Include "/13parsecs/conf/django.conf"
</VirtualHost>
Тогда вы можете просто продолжать делать все, что вы делаете в среде разработки, и когда вы перейдете на apache, он вообще не будет вызывать django для статического содержимого, чего вы и хотите.
Комментарии:
1. Интересный метод. Это более развязанный метод, мне это нравится. Если я захочу переключиться на другой веб-сервер, это тоже будет проще.
Ответ №2:
Это совершенно хороший способ делать вещи. Единственное изменение, которое вам нужно будет внести, это указать фактический URL вашего сайта, а не IP-адрес локального хостинга.
Комментарии:
1. Какой метод, тот, который я сейчас использую?
Ответ №3:
Не «переходите на Apache», начните использовать его в первую очередь. Ни одно из необходимых программ не имеет лицензионных сборов и работает практически на любой платформе, поэтому единственное оправдание, которое у вас может быть, это «я слишком ленив».
Комментарии:
1. Django — это не программное обеспечение, это фреймворк. Ни лицензия, ни платформа не имеют никакого отношения к этому вопросу, пожалуйста, внимательно прочитайте вопрос. лень легко спутать с эффективностью, спросите любого разработчика программного обеспечения.
2. HTTPd — это веб-сервер. mod_wsgi — это модуль HTTPd, который предоставляет контейнер WSGI. Внимательно прочитайте ответ.
3. Ваш ответ не содержит ни одной строки HTTPd или mod_wsgi. Внимательно прочитайте свои собственные комментарии.
4. Да, я делаю. Дело в том, что если вы не можете ответить на вопрос, не пытайтесь.