Django переходит с сервера разработки на сервер развертывания

#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. Да, я делаю. Дело в том, что если вы не можете ответить на вопрос, не пытайтесь.