Твой первый проект на Django!
Часть этой главы основана на учебных пособиях Geek Girls Carrots (https://github.com/ggcarrots/django-carrots).
Отдельные части этой главы основаны на учебном пособии django-marcador , лицензированном под Creative Commons Attribution-ShareAlike 4.0 International License. Руководство django-marcador защищено авторским правом Markus Zapke-Gründemann et al.
Мы собираемся создать простой блог!
Первый шаг — создать новый проект Django. В сущности, это значит, что мы запустим несколько стандартных скриптов из поставки Django, которые создадут для нас скелет проекта. Это просто куча каталогов и файлов, которые мы используем позже.
Названия этих каталогов и файлов очень важны для Django. Ты не должна переименовывать их. Перемещать их в другое место тоже не самая удачная идея. Django необходима определенная структура, чтобы иметь возможность найти важные вещи.
Не забудь: ты должна запускать все команды в virtualenv. Если ты не видишь в командной строке префикса (myvenv) , то необходимо активировать virtualenv. Мы объясняли, как это сделать, в разделе Работаем с virtualenv главы Установка Django. Для этого нужно набрать myvenv\Scripts\activate в Windows или source myvenv/bin/activate в Mac OS / Linux.
OS X или Linux
В консоли Mac OS или Linux нужно запустить следующую команду (не забудь добавить точку . в конце):
(myvenv) ~/djangogirls$ django-admin startproject mysite .
Точка . крайне важна, потому что говорит скрипту установить Django в вашем текущем каталоге (который и обозначается сокращённо точкой . )
Примечание: при вводе приведённой команды помни, что тебе нужно набирать только часть, начинающуюся с django-admin . (myvenv) ~/djangogirls$ — это просто пример строки-приглашения терминала.
Windows
В Windows запусти следующую команду (не забудь добавить точку . в конце):
(myvenv) C:\Users\Name\djangogirls> django-admin.exe startproject mysite .
Точка . крайне важна, потому что говорит скрипту установить Django в вашем текущем каталоге (который и обозначается сокращённо точкой . )
Примечание: при вводе приведённой команды помни, что тебе нужно набирать только часть, начинающуюся с django-admin.exe . (myvenv) C:\Users\Name\djangogirls> — это просто пример приглашения командной строки.
django-admin.py — это скрипт, который создаст необходимую структуру директорий и файлы для нас. Теперь у твоего проекта должна быть следующая структура:
djangogirls ├───manage.py ├───mysite │ settings.py │ urls.py │ wsgi.py │ __init__.py └───requirements.txt
Примечание: в своей структуре директорий ты также увидишь ранее созданную нами директорию с виртуальным окружением.
manage.py — это другой скрипт, который помогает с управлением сайтом. С помощью него мы, помимо прочего, сможем запустить веб-сервер на твоем компьютере без установки дополнительных программ.
Файл settings.py содержит настройки для твоего веб-сайта.
Помнишь нашу аналогию с почтальоном? Файл urls.py содержит список шаблонов, по которым ориентируется urlresolver .
Давай пока забудем про остальные файлы — мы не будем их изменять. Только не удали их случайно!
Изменяем настройки
Давай внесём изменения в mysite/settings.py . Открой файл в текстовом редакторе, который ты выбрала ранее.
Примечание: помни, что settings.py — самый обычный файл. Ты можешь открыть его из своего редактора кода, используя меню «Файл -> Открыть». При этом ты увидишь обычное окно, в котором ты можешь перейти к своему файлу settings.py и выбрать его. Либо ты можешь открыть этот файл, перейдя в директорию проекта djangogirls на твоём рабочем столе и щёлкнув по нему правой кнопкой мыши; затем выбери свой редактор кода из предложенного списка. Важно выбрать именно редактор, поскольку у тебя могут быть установлены программы, которые откроют наш файл, но не позволят его изменить.
Было бы неплохо установить корректный часовой пояс на нашем сайте. Перейди к списку часовых поясов википедии и скопируй название своего часового пояса (TZ) (например, Europe/Moscow ).
В файле settings.py найди строку, содержащую TIME_ZONE , и измени её в соответствии со своим часовым поясом:
TIME_ZONE = 'Europe/Moscow'
Код языка состоит из сокращённого названия языка, например en для английского или ru для русского, и кода страны, например, ru для России или ch для Швейцарии. Тебе понадобится эта настройка, если ты хочешь, чтобы все встроенные кнопки и уведомления от Django были на твоём языке. Таким образом, надпись на кнопке «Cancel» будет переведена на заданный тобой язык. Django поставляется с большим набором готовых переводов.
Измени язык, отредактировав следующую строку:
LANGUAGE_CODE = 'ru-ru'
Нам также необходимо добавить в настройки информацию о расположении статических файлов (мы познакомимся со статическими файлами и CSS в следующих главах). Спустись в конец файла и после переменной STATIC_URL добавь новую — STATIC_ROOT :
STATIC_URL = '/static/' STATIC_ROOT = BASE_DIR / 'static'
Когда наcтройка DEBUG имеет значение True , а настройка ALLOWED_HOSTS пуста, имя хост твоего веб-сайта сверяется со списком [‘localhost’, ‘127.0.0.1’, ‘[::1]’] . Ни одно из значений не будет соответствовать имени хоста на PythonAnywhere при публикации нашего приложения, поэтому нам необходимо изменить следующую настройку:
ALLOWED_HOSTS = ['127.0.0.1', '.pythonanywhere.com']
Примечание: В случае если вы используете Chromebook, добавьте следующую строку в конец файла settings.py: MESSAGE_STORAGE = ‘django.contrib.messages.storage.session.SessionStorage’
Настройка базы данных
Существует множество различных баз данных, которые могут хранить данные для твоего сайта. Мы будем использовать стандартную — sqlite3 .
Она уже выбрана по умолчанию в файле mysite/settings.py :
DATABASES = < 'default': < 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', > >
Чтобы создать базу данных для нашего блога, набери в командной строке следующее: python manage.py migrate (мы должны быть в директории djangogirls , где расположен файл manage.py ). Если всё прошло успешно, то ты увидишь следующий результат:
(myvenv) ~/djangogirls$ python manage.py migrate Operations to perform: Apply all migrations: auth, admin, contenttypes, sessions Running migrations: Rendering model states. DONE Applying contenttypes.0001_initial. OK Applying auth.0001_initial. OK Applying admin.0001_initial. OK Applying admin.0002_logentry_remove_auto_add. OK Applying contenttypes.0002_remove_content_type_name. OK Applying auth.0002_alter_permission_name_max_length. OK Applying auth.0003_alter_user_email_max_length. OK Applying auth.0004_alter_user_username_opts. OK Applying auth.0005_alter_user_last_login_null. OK Applying auth.0006_require_contenttypes_0002. OK Applying auth.0007_alter_validators_add_error_messages. OK Applying sessions.0001_initial. OK
Вот и всё! Пришло время запустить веб-сервер и посмотреть, работает ли наш веб-сайт!
Запуск веб-сервера
Ты должна быть в директории, где расположен файл manage.py (в нашем случае — djangogirls ). Запустим веб-сервер из командной строки: python manage.py runserver :
(myvenv) ~/djangogirls$ python manage.py runserver
Если ты работаешь в Windows, и команда падает с ошибкой UnicodeDecodeError , используй вместо неё другую:
(myvenv) ~/djangogirls$ python manage.py runserver 0:8000
Теперь тебе нужно проверить, работает ли веб-сайт — открой браузер (Firefox, Chrome, Safari, Internet Explorer или любой другой) и набери следующий адрес:
http://127.0.0.1:8000/
Если ты используешь Chromebook или Cloud9, вместо этого нажми на ссылку во всплывающем окне, которая должна появиться в правом верхнем углу командного окна, в котором запущен веб сервер. Ссылка может выглядеть так:
https://.vfs.cloud9.us-west-2.amazonaws.com
Поздравляем! Ты только что создала свой первый веб-сайт и запустила его на веб-сервере! Ну не круто ли?
Пока работает веб-сервер, в терминале не будет приглашения для ввода команд. Ты всё ещё сможешь ввести текст, но не сможешь выполнить никакую другую команду. Это происходит потому, что сервер продолжает работу, «слушая» входящие запросы.
Мы рассматривали, как работают веб-сервера, в главе Как работает интернет.
Веб-сервер займёт командную строку, пока ты его не остановишь. Чтобы и дальше иметь возможность набирать команды, открой ещё одно окно терминала и активируй в нём виртуальное окружение. Чтобы остановить веб-сервер, перейди обратно в окно, в котором он работает, и нажми CTRL + C — кнопки Control и C вместе (в Windows может потребоваться нажать клавиши Ctrl + Break).
Готова к следующему шагу? Пришло время создать содержимое для нашего блога!
results matching » «
No results matching » «
Блог на Django #3: Запуск сервера
В Django есть веб-сервер, который нужен для быстрой проверки кода. Благодаря ему не нужно заниматься наладкой полноценного рабочего решения. При его запуске сервер продолжает проверять изменения в коде и самостоятельно перезагружается. Но некоторые вещи он не замечает: такие как появление новых файлов в проекте. В таком случае нужно перезагрузить сервер вручную.
Запустить сервер можно с помощью следующей команды в корневом каталоге:
python manage.py runserver
Появятся приблизительно такие строки:
Performing system checks. System check identified no issues (0 silenced). November 16, 2019 - 15:20:27 Django version 2.0.5, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.
Теперь нужно открыть https://127.0.0.1:8000/ в браузере. Страница сообщит, что проект работает. Как на следующем скриншоте:
Это изображение сообщает, что Django работает. Если взглянуть на консоль, то можно увидеть запрос GET от браузера:
[16/Nov/2019 15:22:45] "GET / HTTP/1.1" 200 16348
Каждый HTTP-запрос регистрируется отдельно. В командной строке будут отображаться все ошибки, которые появятся в процессе работы.
Можно запустить сервер на другом порте или использовать другой файл настроек с помощью таких команд:
python manage.py runserver 127.0.0.1:8001 --settings=mysite.settings
Работая с разными средами, требующими разных настроек, можно создать несколько файлов для каждой из них.
Этот сервер стоит использовать только для разработки, но не для полноценного использования. Чтобы развернуть Django в производственной среде (production) его нужно запустить в качестве WSGI-приложения с помощью реального инструмента: Apache, Gunicorn или uWSGI.
- ТЕГИ
- Django
- Создание блога на Django 2.0
# Запуск Django-проекта на Джино.Хостинге
# Подготовка хостинга к запуску Django-проекта
Создайте новый хостинг-контейнер и подключите услуги Поддержка веб-приложений и Поддержка SSH. По умолчанию для работы с базами данных Django использует SQLite, но если её возможностей будет недостаточно, в разделе Услуги подключите MYSQL или PostgreSQL.
Для запуска Django-проекта на хостинге нужно создать виртуальное окружение для той же версии Python, на которой создан проект. Создайте виртуальное окружение командой:
/opt/alt/python37/bin/virtualenv --python /opt/alt/python310/bin/python3 venv310
Здесь /opt/alt/python37/bin/virtualenv — путь к утилите virtualenv, отвечающей за создание виртуального окружения на хостинге; /opt/alt/python310/bin/python3 — путь к интерпретатору Python 3.10. Все доступные версии Python и пути к их интерпретаторам представлены в разделе Управление
На Джино.Хостинге утилита для создания виртуального окружения vitualenv расположена по адресу /opt/alt/python37/bin/virtualenv и с помощью неё создаётся виртуальное окружение для любой версии Python.
# Загрузка Django-проекта
Способы загрузки Django-проекта на сервер:
- загрузка через протоколы передачи файлов (FTP, FTPS, SFTP);
- использование git-репозитория;
- загрузка проекта с помощью инструментов, встроенных в IDE.
# Запуск Django-проекта
Для запуска Django-проекта нужно:
- указать URL-адрес, на котором будет работать приложение;
- установить зависимости проекта;
- создать файл passenger_wsgi.py, который будет отвечать за обработку веб-сервером запросов к Django;
- выбрать интерпретатор для домена.
# Указание URL
В папке проекта в файле settings.py найдите строку ALLOWED_HOSTS = [] и укажите в ней адрес своего сервера. Например: ALLOWED_HOSTS = [‘example.com’] .
# Установка зависимостей проекта
Для некоторых проектов может понадобиться установка дополнительных зависимостей, установленных в локальном окружении. Чтобы установить зависимости в виртуальное окружение на сервере, создайте файл requirements.txt на локальной машине. Для этого выполните команду:
pip freeze > requirements.txt
При загрузке проекта на сервер проследите, чтобы файл requirements.txt был загружен вместе с другими файлами проекта.
После этого активируйте созданное на хостинге виртуальное окружение:
source ./venv310/bin/activate
Далее в папке приложения выполните команду:
pip install -r requirements.txt
# passenger_wsgi.py
Файл passenger_wsgi.py обеспечивает взаимодействие Django-проекта с веб-сервером. Он должен находиться в папке с доменным именем рядом с главным файлом проекта manage.py. Содержимое файла passenger_wsgi.py должно быть следующим:
import sys, os INTERP = os.path.expanduser("~/venv310/bin/python3") if sys.executable != INTERP: os.execl(INTERP, INTERP, *sys.argv) from project.wsgi import application
Здесь в строке INTERP= указан путь к исполняемому файлу виртуального окружения, созданного на этапе подготовки хостинг-контейнера; в строке from project.wsgi. — wsgi-файл, отвечающий за запуск приложения на веб-сервере.
# Выбор интерпретатора
В разделе Управление
Настройки веб-сервера выберите версию интерпретатора Python, на которой работает ваше приложение.
После этого в адресной строке браузера введите адрес вашего сервера.
Вы должны увидеть стартовую страницу вашего сайта.
Запуск Django-приложения на Хостинге, созданном до 28.04.2022
Для запуска Django-проекта на Хостинг-аккаунте, созданном до 28.04.2022, понадобится виртуальное окружение, созданное командой:
virtualenv-3.9 venv39
После создания виртуального окружения активируйте его:
source ./venv39/bin/activate
Далее установите Django с помощью стандартного менеджера пакетов pip:
pip install django
После этого создайте новый проект прямо на сервере или загрузите уже имеющийся.
Папка, содержащая проект, должна находиться вне папки ~/domains .
Для запуска Django-проекта создайте файл .htaccess в папке ~/domains/your_domain . Здесь your_domain — доменное имя, на котором будет работать сайт. Если у вас ещё нет домена или он не привязан к Хостингу, воспользуйтесь техническим адресом сервера. Технический адрес сервера представлен в разделе Управление
Настройки SSH в строке Имя сервера и имеет общий вид 123xyz.hosting.myjino.ru или j12345678.myjino.ru.
В файл .htaccess поместите следующие директивы:
AddHandler wsgi-script .wsgi RewriteEngine on RewriteCond %REQUEST_FILENAME> !-f RewriteRule ^(.*)$ /django.wsgi/$1 [QSA,PT,L]
Этот файл определяет, что в качестве рабочего файла для mod_passenger будет использоваться файл с расширением .wsgi, и далее напрямую указывает имя этого файла django.wsgi.
Теперь создайте файл django.wsgi в папке ~/domains/your_domain .
Содержимое django.wsgi должно быть следующим:
import os, sys virtual_env = os.path.expanduser('~/venv39') activate_this = os.path.join(virtual_env, 'bin/activate_this.py') exec(open(activate_this).read(), dict(__file__=activate_this)) sys.path.insert(0, os.path.expanduser('~/path/to/your/project')) from project.wsgi import application
В этом файле указан путь к папке с виртуальным окружением, путь к файлу, активирующему виртуальное окружение, и путь к wsgi-файлу проекта.
Далее в разделе Управление
Настройки веб-сервера проверьте версию Python, которая используется на домене. Она должна совпадать с версией, для которой создано виртуальное окружение.
После этого в адресной строке браузера укажите выбранное доменное имя и проверьте работу проекта.
# Подключение баз данных
По умолчанию в качестве СУБД Django использует SQLite, но к проекту можно подключить MySQL или PostgreSQL в разделе Услуги .
После этого в разделе Управление
Управление MySQL(PostgreSQL) создайте новую базу данных и нового пользователя для неё:
Для подключения базы данных к Django-проекту понадобится клиент, работающий с выбранным типом баз данных.
В случае с MySQL — это mysqlclient, для PostgreSQL — psycopg2.
В связи с особенностями функционирования программной платформы, mysqlclient и psycopg2 временно не могут быть установлены в виртуальное окружение, созданное для Python 3.10. Для версий Python 3.9 и старше всё работает.
Установите клиент в активированном виртуальном окружении:
(venv39)user@hosting: pip install mysqlclient
После того как клиент успешно установится, настройте подключение приложения к базе.
В файле settings.py приведите раздел DATABASES к следующем виду:
... DATABASES = 'default': 'ENGINE': 'django.db.backends.mysql', 'NAME': 'j12345678_django-app', 'USER': 'j12345678', 'PASSWORD': 'password', 'HOST': 'localhost', 'PORT':'3306', > > ...
- в строке ENGINE укажите, какой движок используется для работы с базами данных (mysql или postgresql);
- в строках NAME , USER и PASSWORD укажите данные только что созданной базы данных и пользователя;
- в строках HOST и PORT опишите сетевые параметры для подключения к базе данных. В данном случае база данных и Django-проект расположены в одном хостинг-контейнере, поэтому подключаться к базе можно с параметром localhost . Для подключения Django-проекта к базе данных, расположенной на другом хостинг-контейнере, воспользуйтесь данными, представленными в разделе Управление
В консоли SSH-подключения перейдите в папку с приложением и запустите миграцию зависимостей:
python manage.py makemigrations python manage.py migrate
При возникновении ошибок в работе базы данных миграция зависимостей не будет произведена, и дальнейшая работа приложения будет невозможна.
После успешной миграции зависимостей перезагрузите веб-сервер ( Управление
Перезагрузить ) и проверьте работу проекта. Откройте в браузере адрес, на котором расположен проект, и проверьте наличие стартовой страницы.
© Джино, 2003–2022. «Джино» является зарегистрированным товарным знаком.
Лицензия на телематические услуги связи №150549 от 09.03.2017.
Как настроить связь Django с веб-сервером
Большое количество языков разработки веб-приложений привело к снижению эффективности взаимодействия последних с веб-серверами посредством стандартных общих интерфейсов, например, таких, как CGI, FastCGI и других подобных. Поддержка серверов WSGI некоторыми из фреймворков, в частности, Django позволяет устранить существующие недостатки и, соответственно, повысить качество работы веб-приложений. Как установить Django мы рассматривали ранее.
Далее рассмотрим правильной настройки интерфейса взаимодействия между фреймворком и веб-сервером
Общие принципы взаимодействия компонентов и их характеристики
Веб-фреймворки призваны обеспечивать разработку и функционирование сайтов и приложений, но они не адаптированы к выполнению некоторых видов специфических задач, в частности, заниматься приёмом, обработкой и маршрутизацией большого количества запросов с веб-сервера. Для выполнения этих и подобных задач разработаны специальные сервера, берущие на себя все вопросы согласования работы веб-сервера и приложения.
Одним из таких серверов является WSGI (Web-Server Gateway Interface), выполняющий множество посреднических функций между веб-сервером и приложением, написанным на языке Python. Какие конкретно функции берёт на себя указанный компонент, зависит от типа его реализации, которых в мире существует множество. Наиболее известные из них: uWSGI, mod_wsgi, Gunicorn, CherryPy.
На данный момент создано несколько фреймворков, поддерживающих работу с WSGI. Одним из них является Django, в котором, начиная с версии 1.4, модуль WSGI создаётся автоматически при развёртывании системы. Для обеспечения эффективной работы системы необходимо подбирать связку компонентов в конфигурации системы. Выбираться должна как реализация WSGI-сервера, так и веб-сервер, с которым будет работать WSGI. Наиболее популярны следующие связки компонентов:
• Nginx uWSGI;
• Nginx Gunicorn.
Рассмотрим кратко эти компоненты.
Сервер uWSGI
Сервер uWSGI был разработан одной из итальянских компаний и предназначался для обеспечения полного цикла работы веб-хостинга. Со временем проект стал расширяться, и сейчас, кроме языка Python он также поддерживает языки Perl, Lua и некоторые другие из интерпретируемых языков.
Сервер Gunicorn
Сервер Gunicorn изначально был ориентирован на работу в UNIX-подобных системах в качестве http-сервера – посредника между приложением и веб-сервером. Часто его используют совместно с Nginx.
Nginx является высокопроизводительным http-сервером, также выполняющим функции обратного прокси и почтового сервера. Скорость работы и ресурсоёмкость позволяют использовать его в качестве фронтэнда для более мощных веб-серверов. В такой связке Nginx выполняет роль распределителя между веб-клиентом и несколькими серверами. В связке с сервером Gunicorn он обычно выполняет функции обратного прокси-сервера.
Ниже будет рассмотрена настройка взаимодействия между веб-сервером и программным окружением Django посредством связки Nginx uWSGI.
Практическая реализация конфигурации программной среды для веб-приложения Django
Перед использованием любой из реализаций WSGI для настройки взаимодействия приложения с веб-сервером, нужно выполнить базовые установки и настройки программного окружения приложения Django. Перечислим пошагово эти действия в порядке последовательности их выполнения:
• Установка программной среды Python и активация виртуального окружения;
• Развёртывание фреймворка Django в созданной среде;
• Базовая установка веб-сервера Nginx.
Отметим, что способ реализации указанных шагов зависит от типа и версии операционной системы (ОС), установленной на сервере. Будем исходить из того, что на нашем сервере установлена ОС Debian/Ubuntu и язык Python версии 3.8.
Установка программной среды Python
Для реализации этого шага в терминале следует выполнить ряд следующих команд(детально здесь):
Инсталляция программных пакетов для формирования виртуального окружения Python
$ sudo apt install python3.8-venv
Переход в каталог
Создание каталога виртуального окружения
$ python3 -m venv myvenv
Активация виртуального окружения
Развёртывание фреймворка Django
Перечислим команды, которые нужно будет ввести в терминале:
Установка менеджера пакетов Pip необходимого для установки и развёртывания Django
$ apt install python3-pip
Установка Django, где файл requirements.txt содержит название версии программы
$ pip install -r requirements.txt
Создание структуры файлов и каталогов для нового проекта с именем mysite
$ django-admin startproject mysite
Проверка работоспособности проекта mysite
$ python manage.py runserver 0.0.0.0:8000
Базовая установка веб-сервера Nginx.
Ниже приведены соответствующие команды.
$ sudo apt install nginx
$ sudo /etc/init.d/nginx start # start nginx
Для проверки работоспособности сервера и, соответственно, надёжности работы связки веб-клиент веб-сервер достаточно открыть Nginx в браузере через 80-й порт. При этом должно появиться сообщение: «Добро пожаловать в Nginx!». Если появилось, значит всё в порядке – сервер работоспособный.
Следующие шаги по настройке программной среды будут зависеть от типа реализации WSGI сервера. Рассмотрим их.
Метод nginx+uwsgi
Для реализации данной связки компонентов нужно будет выполнить ряд следующих действий:
• Локальная установка uWSGI в каталог виртуального окружения;
• Настройка сервера Nginx для нашего сайта;
• Корректировка установок Django;
• Проверка работы с файлами сервера Nginx;
• Настройка системы на использование сокетов Unix;
• Проверка работоспособности связки установленных компонентов;
• Настройка uWSGI.
Локальная установка uWSGI в каталог виртуального окружения. Произведём установку пакета uWSGI в каталог djangogirls. Для этого мы должны ввести в терминале:
Переход в каталог
$ pip install uwsgi
Запуск проекта mysite с помощью uWSGI с использованием порта 8000
$ uwsgi —http :8000 —module mysite.wsgi
Для проверки достаточно направить браузер на сервер, введя в его адресной строке следующий адрес:
http://mydoman.com:8000, где mydoman.com – доменное имя нашего сервера.
Если сайт появляется, то это означает, что связка веб-клиент uWSGI Django работоспособна.
Настройка сервера Nginx для нашего сайта. Создадим файл и поместим в него директивы, приведённые ниже. Для этого введём в терминале:
В открывшийся новый файл запишем следующее:
1. # mysite_nginx.conf
2.
3. # the upstream component nginx needs to connect to
4. upstream django 5. # server unix:///path/to/your/mysite/mysite.sock; # for a file socket
6. server 127.0.0.1:8001; # for a web port socket (we’ll use this first)
7. >
8.
9. # configuration of the server
10. server 11. # the port your site will be served on
12. listen 8000;
13. # the domain name it will serve for
14. server_name mydoman.com; # substitute your machine’s IP address or FQDN
15. charset utf-8;
16.
17. # max upload size
18. client_max_body_size 75M; # adjust to taste
19.
20. # Django media
21. location /media 22. alias /path/to/your/mysite/media; # your Django project’s media files — amend as required
23. >
24.
25. location /static 26. alias /path/to/your/mysite/static; # your Django project’s static files — amend as required
27. >
28.
29. # Finally, send all non-media requests to the Django server.
30. location / 31. uwsgi_pass django;
32. include /path/to/your/mysite/uwsgi_params; # the uwsgi_params file you installed
33. >
34. >
После этого сохраним изменения, закроем файл и поместим его в каталог /etc/nginx/sites-available/.
Записанные директивы предписывают серверу загружать статические и мультимедийные файлы и обрабатывать запросы, связанные с Django. Для крупных проектов могут устанавливаться два веб-сервера: один для обработки файлов, а другой – для обслуживания приложений Django.
Для того, чтобы установленный веб-сервер смог увидеть созданный файл, установим ссылку на него из /etc/nginx/sites-enabled:
$ sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/
Корректировка установок Django.
Перед запуском настроенного нами веб-сервера необходимо собрать все статические файлы в постоянный каталог. Для этого достаточно отредактировать файл установок Django. Введём в терминале:
В открывшемся файле установок изменим значение соответствующего параметра, сохраним изменения и закроем файл:
STATIC_ROOT = os.path.join(BASE_DIR, «static/»)
После этого введём в терминале команду:
$ python manage.py collectstatic
Таким образом, все статические файлы будут собраны воедино.
Проверка работы с файлами сервера Nginx.
Протестируем сервер на корректность обработки файлов. Для этого создадим файл с именем test.png в директории media:
Сохраним файл и перезагрузим сервер:
$ sudo /etc/init.d/nginx restart
После чего введём в адресной строке браузера:
Если содержимое файла отобразится, то это будет означать, что наш веб-сервер способен обеспечивать корректный файловый сервис.
Настройка системы на использование сокетов Unix
Целесообразно использование сокетов Unix вместо сокетов портов TCP, которые мы использовали до этого. Для того, чтобы это настроить, достаточно отредактировать файл mysite_nginx.conf . Введём команду вызова редактора файлов:
В открывшемся содержимом файла нужно раскомментировать следующую строку: и закомментировать строку: server 127.0.0.1:8001. После чего сохранить изменения и закрыть файл.
Теперь следует перезагрузить сервер с помощью команды:
$ sudo /etc/init.d/nginx restart
Для корректной работы сокетов, возможно, понадобится выполнить дополнительные настройки, например, добавить пользователей сервера в группу nginx, а также установить необходимые разрешения для сокета, чтобы сервер мог его использовать. Также, возможно, придётся проанализировать содержимое журнала ошибок nginx. Но, в любом случае, всё это устранимо.
Проверка работоспособности связки установленных компонентов. Теперь запустим наш проект Django с использованием установленных компонентов nginx и uwsgi:
$ uwsgi —socket mysite.sock —module mysite.wsgi —chmod-socket=666
Результат проверим в браузере:
Если сайт отображается, то это означает, что связка:
веб-клиент веб-сервер socket uWSGI Python/Django — работоспособна, что нам и нужно.
Настройка uWSGI для использования файла .ini
Это удобный способ управлять конфигурацией, варьируя параметры в файле .ini. Для настройки такой возможности создадим .ini файл и поместим туда нужные параметры:
Во вновь созданный файл вставим следующие строки:
1. # mysite_uwsgi.ini file
2. [uwsgi]
3.
4. # Django-related settings
5. # the base directory (full path)
6. chdir = /path/to/your/project
7. # Django’s wsgi file
8. module = project.wsgi
9. # the virtualenv (full path)
10. home = /path/to/virtualenv
11.
12. # process-related settings
13. # master
14. master = true
15. # maximum number of worker processes
16. processes = 10
17. # the socket (use the full path to be safe
18. socket = /path/to/your/project/mysite.sock
19. # . with appropriate permissions — may be needed
20. # chmod-socket = 664
21. # clear environment on exit
22. vacuum = true
Сохраним изменения и закроем файл.
Теперь можно использовать созданный файл .ini для запуска проекта:
$ uwsgi —ini mysite_uwsgi.ini # the —ini option is used to specify a file
Сервер uWSGI нами был установлен в пределах каталога виртуального кружения. Для его установки в пределах всей системы нужно выполнить следующие действия:
Отключение виртуального сервера
$ deactivate $ sudo pip install uwsgi # Or install LTS (long term support).
$ pip install https://projects.unbit.it/downloads/uwsgi-lts.tar.gz
Существует ещё немало возможностей для настройки сервера uWSGI под свои нужды. Это касается как режимов его работы, так и управления загрузкой. Однако в пределах одной статьи все их рассмотреть не представляется возможным. Для этой цели лучше обратиться к документации по данному серверу.