Рубрики
Без рубрики

Настройка Django для развертывания: nginx

В этом посте вы увидите, как настроить Nginx как обратный прокси для стрелка и как его использовать для … Tagged с Django, стрельцом, Python, Nginx.

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

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

Установите Nginx

Есть несколько способов установить Nginx. Самый простой метод – установить его с помощью диспетчера пакетов. В Ubuntu это выглядит так:

sudo apt-get установить nginx

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

Sudo Service Nginx Start

Настройка статического контента

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

Запустите сервер стренолина с:

Онломщик myProject.wsgi

Перейдите к http://localhost:8000/admin И вы заметите, что страница выглядит сломанной:

Это связано с тем, что стрелкоин не смог обслуживать файлы CSS и JS, необходимые для того, чтобы страница выглядела красивой. Чтобы решить эту проблему, мы должны сделать две вещи:

  1. Настройте каталог статических файлов в Django
  2. Настройте Nginx для обслуживания файлов из этого каталога

Nginx может служить практически любой форме статического контента, на которую вы указываете. Первый шаг в обслуживании статических файлов – добавить Static_root Путь к вашему проекту настройки.py файл:

Static_urlstatic_root

Static_url Является ли URL Django указывать на все статические файлы, например, http://example.com/static/ Анкет Статические файлы включают файлы HTML, CSS, изображения и JavaScript. Static_root Линия – это путь к любой папке, где будут храниться статические файлы вашего проекта.

Как только вы настроили статические файлы, запустите CollectStatic Команда для создания статических файлов по умолчанию, необходимым Django. Если в вашем проекте есть какие -либо дополнительные статические файлы, поместите их в указанную выше папку.

Python Manage.py CollectStatic

Введите «Да» в появлении подсказки, и Django скопирует или генерирует все статические файлы, необходимые для вашего Static_root папка.

Настройте Nginx

Создайте файл конфигурации для Nginx. Расположение этого файла зависит от того, как вы установили Nginx и какую ОС вы включаете. Общее место для конфигураций Nginx в Ubuntu Linux – /etc/nginx/sites-vailable/ Если этот каталог не существует в вашей операционной системе, проверьте соответствующее местоположение для вашей ОС в nginx документация Анкет Вы можете назвать файл конфигурации все, что вам нравится. Для этого примера я назову это Django Анкет Используйте свой любимый текстовый редактор для создания файла конфигурации по адресу /etc/nginx/sites-vailable/django и добавьте следующую конфигурацию:

server { 

        listen 80;
        server_name localhost;

         location /static/ {
             root /home/vndlovu/learning/django/;
         }

        location / {
            proxy_pass http://localhost:8000;
        }
}

Эта конфигурация является Очень простые Конфигурация, которая сообщает Nginx прослушивать порт 80, порт HTTP по умолчанию для всех запросов, поступающих на сервер, указанный в server_name Анкет Вы можете использовать доменное имя или IP -адрес сервера здесь. Следующая строка – это блок местоположения, который сообщает Nginx, где найти статические файлы, когда /static/ URL поражен. Обратите внимание, что местоположение в каталоге статического файла здесь такое же, как и указано в настройки.py Анкет Это очень важно.

Следующий блок расположения будет обрабатывать все запросы к URL -адресу корневого или в этом случае http://localhost/ Анкет Nginx не может обрабатывать динамический контент WSGI, который будет сгенерирован Python, поэтому в этом блоке мы говорим ему прокси или передаем запрос http://localhost: 8000 где слушает овиновник. По сути, мы говорим nginx не обрабатывать динамические запросы, а обрабатывать только статические файлы и позволить стрелководу справиться со всем остальным. Сохраните этот файл.

Затем активируйте конфигурацию, создав символическую ссылку на эту конфигурацию в /etc/nginx/sites с поддержкой /Чтобы сделать это, перейдите к /etc/nginx/sites с поддержкой и создайте там символику:

cd/etc/nginx/sites-inabled/sudo ln -s/etc/nginx/sites-arailable/django

Приведенная выше команда создаст ярлык или ссылку на вашу конфигурацию в /etc/nginx/sites-inabled/ Папка, где Nginx проверяет, какие сайты для включения. Перезагрузить Nginx, чтобы внести эти изменения:

Sudo Service Nginx Reload

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

Контрольная работа

Проверьте, что Nginx может обслуживать ваш сайт Django, перемещаясь по http://localhost/ Анкет Обратите внимание, что я не добавил порт 8000. Это связано с тем, что мы настроили Nginx для прослушивания на порту 80 и передавать любые запросы Django в порт 8000. Если все прошло хорошо, вы должны увидеть знакомый экран входа в администрацию Django:

Вывод

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

Оригинал: “https://dev.to/vndlovu/setting-up-django-for-deployment-nginx-1ilc”