- Apache HTTP Server/mod_wsgi
- Contents
- Introduction
- Installation
- Apache configuration
- Module test
- Обслуживание приложений Django с помощью Apache и mod_wsgi в Ubuntu 16.04
- Требования
- Установка пакетов из репозитория Ubuntu
- Настройка виртуальной среды
- Создание и настройка Django-приложения
- Создание Django-проекта
- Настройка Django-проекта
- Настройка Apache
- Права доступа
- Дальнейшие действия
- Установка и настройка Apache, mod_wsgi, Django, MySQL в Debian / Ubuntu
- apache
- debian
- django
- mod_wsgi
- mysql
- python
- ubuntu
- Установка и настройка Django
- Установка Django из репозитория
- Установка последней стабильной версии Django
- Проверка корректности установки Django
- Установка и настройка Apache, mod_wsgi
- Установка MySQL
- Создание и настройка проекта в Django
- Создание проекта Django
- Создание пользователя для проекта
- Настройка виртуального хоста в Apache
- Настройка wsgi
- Включение виртуального хоста Apache
- Проверка корректности установки
- Создание БД/пользователя в MySQL, настройка Django
Apache HTTP Server/mod_wsgi
Contents
Introduction
The aim of mod_wsgi is to implement a simple to use Apache module which can host any Python application which supports the Python WSGI interface. The module would be suitable for use in hosting high performance production web sites, as well as your average self managed personal sites running on web hosting services.
mod_wsgi is an Apache HTTP Server module that embeds a Python application within the server and allow them to communicate through the Python WSGI interface as defined in the Python PEP 333. WSGI is one of the Python ways to produce high quality and high performance web applications.
WSGI provide a standard way to interface different web-apps without hassle. Several well-know python applications or frameworks provide wsgi for easy deployment and embedding. It means that you can embed your Django-powered blog and your project’s Trac into a single Pylons application that wraps around them to deals with, say, authentication without modifying the formers.
Installation
Install mod_wsgi AUR which provides the module working with all common versions of Python (3.x).
Apache configuration
As indicated during installation, add the following line to the configuration file of Apache:
Check that Apache is running properly. If the previous command returned nothing, it means that the launch of Apache went well. Otherwise, you can see errors with the following command:
Module test
Add this line in Apache configuration file:
Источник
Обслуживание приложений Django с помощью Apache и mod_wsgi в Ubuntu 16.04
Django – это производительный веб-фреймворк для разработки приложений или сайтов в Python.
Django также предоставляет простой сервер разработки для локального тестирования кода. К сожалению, для производства необходимо искать более безопасный и мощный веб-сервер, так как этот сервер совершенно не подходит.
Данное руководство поможет установить и настроить Django в виртуальном окружении Python, а также настроить Apache для поддержки приложения и обработки клиентских запросов (для этого используется модуль Apache под названием mod_wsgi, который взаимодействует с Django через интерфейс WSGI).
Требования
Для выполнения данного руководства нужно предварительно настроить сервер Ubuntu 16.04 и создать не-root пользователя с доступом к sudo. Подробные инструкции по начальной настройке сервера и создании пользователей можно найти здесь.
Фреймворк Django в данном руководстве будет установлен в виртуальное окружение Python, что позволит использовать индивидуальный набор пакетов для данного приложения.
После запуска приложения нужно настроить взаимодействие веб-сервера Apache с приложением Django. Для этого используется модуль mod_wsgi, который преобразует HTTP-запросы в понятный Django формат согласно спецификации WSGI.
Установка пакетов из репозитория Ubuntu
Для начала нужно установить из репозитория Ubuntu все необходимые пакеты: веб-сервер Apache, модуль mod_wsgi и pip (пакетный менеджер Python).
Обновите индекс пакетов и установите программы.
Если вы используете Python 2, введите:
sudo apt-get update
sudo apt-get install python-pip apache2 libapache2-mod-wsgi
В Python 3 используется другой пакет pip:
sudo apt-get update
sudo apt-get install python3-pip apache2 libapache2-mod-wsgi-py3
Настройка виртуальной среды
Подготовив сервер, можно приступать к работе над приложением Django. Сначала создайте виртуальное окружение Python для хранения инструментов проекта.
Для этого используйте команду virtualenv. Чтобы установить эту утилиту, введите:
Python 2:
sudo pip install virtualenv
Python 3:
sudo pip3 install virtualenv
Теперь утилита virtualenv установлена, и можно использовать её для создания окружения. Создайте каталог, в котором будет находиться виртуальное окружение, и перейдите в него:
В этом каталоге создайте виртуальную среду Python:
Эта команда создаст виртуальное окружение по имени myprojectenv в каталоге myproject, а также установит локальную версию Python и pip, которые можно использовать для создания изолированной среды разработки проекта.
Прежде чем приступить к установке зависимостей приложения, нужно включить виртуальное окружение.
source myprojectenv/bin/activate
После этого командная строка изменится, указывая, что текущей средой является виртуальная среда Python:
Включив виртуальную среду, установите Django:
pip install django
Примечание: Вне зависимости от версии Python в активной виртуальной среде используется команда pip, а не pip3.
Создание и настройка Django-приложения
Установив Django в виртуальную среду, можно приступать к созданию файлов Django-проекта.
Создание Django-проекта
Установите файлы Django в ранее созданный каталог. Это создаст каталоги второго уровня, хранящие код и скрипты. Обратите внимание: команда должна заканчиваться символом точки.
django-admin.py startproject myproject .
Настройка Django-проекта
Первое, что нужно сделать после создания приложения, – отредактировать его настройки. Откройте файл settings в текстовом редакторе:
В руководстве используется стандартная БД SQLite, потому настройка не займёт много времени.
Примечание: Для поддержки масштабных приложений рекомендуется настроить более надёжную СУБД.
В центре внимания будет настройка каталога статических файлов Django.
В конец файла добавьте директиву STATIC_ROOT, которая задаёт фреймворку Django местонахождение статических файлов.
. . .
STATIC_URL = ‘/static/’
STATIC_ROOT = os.path.join(BASE_DIR, ‘static/’)
Сохраните и закройте файл.
После этого можно открыть исходную схему БД при помощи скрипта управления:
/myproject
./manage.py makemigrations
./manage.py migrate
Создайте аккаунт администратора проекта:
Укажите имя пользователя, адрес электронной почты и пароль.
Затем нужно собрать статический контент в один каталог:
После подтверждения все статические файлы будут помещены в каталог static в каталоге проекта.
Теперь нужно разблокировать порт сервера разработки Django, 8000. На данный момент он закрыт брандмауэром UFW (если вы настроили сервер согласно этому руководству).
Чтобы разблокировать сервер разработки, введите:
sudo ufw allow 8000
Протестируйте проект, запустив сервер разработки Django:
./manage.py runserver 0.0.0.0:8000
Откройте браузер и посетите доменное имя или IP сервера на порте 8000:
На экране должна появиться приветственная страница Django:
It worked!
Congratulations on your first Django-powered page.
Чтобы получить доступ к аккаунту администратора, добавьте секцию /admin к адресу, а затем введите имя и пароль.
Пройдя авторизацию, вы получите доступ к интерфейсу администратора.
Чтобы остановить сервер разработки, нажмите CTRL-C.
Чтобы отключить виртуальную среду, введите:
Настройка Apache
Итак, проект Django готов, и можно приступать к настройке Apache на фронт-энде. Все клиентские подключения, полученные Apache, будут преобразованы в формат WSGI, необходимый Django, при помощи модуля mod_wsgi (который должен был включиться автоматически после установки).
Чтобы настроить WSGI, отредактируйте стандартный виртуальный хост.
sudo nano /etc/apache2/sites-available/000-default.conf
Все директивы, которые находятся в файле, можно оставить. Нужно только добавить несколько новых опций.
Сначала настройте статические файлы; после этого Apache будет направлять все запросы, начинающиеся с /static, в каталог static, который находится в каталоге проекта. Для этого нужно определить Alias и предоставить доступ к требуемому каталогу.
. . .
Alias /static /home/8host/myproject/static
Require all granted
Затем нужно настроить права доступа к файлу wsgi.py (второй уровень каталогов проекта), в котором хранится код проекта. Для этого используйте раздел Directory.
. . .
Alias /static /home/8host/myproject/static
Require all granted
Require all granted
Теперь можно перейти к настройкам, обрабатывающим WSGI. Для запуска процессов WSGI используйте режим демона; для этого используется директива WSGIDaemonProcess. Эта директива принимает для процесса произвольное имя. В руководстве используется имя myproject.
Затем нужно указать путь к Python, где сервер Apache сможет найти все необходимые компоненты. Поскольку в настройке используется виртуальное окружение, нужно указать путь к каталогу виртуальной среды, а затем – путь Python к базовому каталогу проекта Django.
После этого нужно указать группу процессов; это значение должно совпадать со значением директивы WSGIDaemonProcess (в данном случае это myproject). В завершение нужно установить алиас скрипта, чтобы сервер Apache передавал запросы для корневого домена в файл wsgi.py:
. . .
Alias /static /home/8host/myproject/static
Require all granted
Require all granted
WSGIDaemonProcess myproject python-home=/home/8host/myproject/myprojectenv python-path=/home/8host/myproject
WSGIProcessGroup myproject
WSGIScriptAlias / /home/8host/myproject/myproject/wsgi.py
Сохраните и закройте файл.
Права доступа
Используя базу данных SQLite (которая является стандартной), не забудьте предоставить веб-ерверу Apache доступ к ней.
Для этого нужно предоставить группе-владельцу права на запись и чтение. По умолчанию файл БД называется db.sqlite3 и должен находиться в каталоге проекта:
Передайте права на файл группе, в которую входит Apache; это группа www-data.
sudo chown :www-data
Чтобы иметь право на запись в файле, группа должна быть владельцем родительского каталога файла.
sudo chown :www-data
Теперь нужно снова отредактировать настройки брандмауэра. Закройте порт 8000 и добавьте исключение для трафика Apache:
sudo ufw delete allow 8000
sudo ufw allow ‘Apache Full’
Проверьте синтаксис файлов Apache:
sudo apache2ctl configtest
Если в файлах нет ошибок, команда вернёт:
Перезапустите сервис Apache, чтобы обновить настройки.
sudo systemctl restart apache2
Теперь можно получить доступ к сайту Django, открыв в браузере доменное имя или IP-адрес.
Примечание: Номер порта указывать не нужно.
Дальнейшие действия
Теперь приложение Django работает в индивидуальной виртуальной среде, а модуль mod_wsgi помогает Apache преобразовывать запросы в понятный Django формат.
Убедившись, что приложение работает, вы можете приступать к настройке безопасности. Если у приложения есть доменное имя, можно получить бесплатный SSL-сертификат от Let’s Encrypt.
Источник
Установка и настройка Apache, mod_wsgi, Django, MySQL в Debian / Ubuntu
apache
debian
django
mod_wsgi
mysql
python
ubuntu
Добавить в
Django (читается как Джанго) — это свободно распространяемый фреймворк с открытым исходным кодом для разработки веб приложений на языке Python. Django обладает следующими архитектурными отличиями:
- использование концепции Модель-Представление-Контроллер (Model-View-Controller, MVC). В терминологии Django это будет Модель-Шаблон-Вид (Model-Template-View, MTV)
- использование концепции приложений. Весь код рекомендуется оформлять в виде приложений и делать его подключаемым и переносимым
- диспетчер URL на основе регулярных выражений
- ORM для работы с БД (с поддержкой транзакций)
- встроенный веб-сервер для разработки
- встроенная административная панель
Установка и настройка Django
Django можно установить двумя способами: из репозитариев или скачав исходники фреймворка с сайта. Как правило, в репозитариях находится не самая свежая версия. Поэтому, обычно используется второй способ, хотя это и не Debian-way.
Установка Django из репозитория
Пакет Django находится в стандартном репозитории, поэтому ничего нового подключать не надо. Для установки необходимо выполнить следующее:
Установка последней стабильной версии Django
Для установки последней версии необходимо скачать исходники и распаковать их:
Далее, необходимо узнать, в какую директорию необходимо устанавливать пакеты, чтобы Python узнал об этом. Для этого необходимо выполнить:
В данном случае, видно что основной версией является Python 2.5 и все дополнительные пакеты устанавливаются в директорию «/usr/lib/python2.5/site-packages».
Следующим шагом необходимо создать символическую связь для распакованной директории Django:
И в конце, чтобы сделать команду django-admin.py доступной из любой директории системы, необходимо добавить еще одну символическую ссылку:
Проверка корректности установки Django
Чтобы убедиться, что Django нормально установлен, необходимо запустить интерпретатор Python и импортировать модуль django:
Все в порядке. Последняя версия Django корректно установлена.
Установка и настройка Apache, mod_wsgi
Для работы с Django необходимы http-сервер Apache и модуль к нему — mod-wsgi. Модуль mod_wsgi пришел на смену mod_python и в настоящее время рекомендуется авторами Django как наиболее подходящее решение для использования в реальных условиях.
Установка Apache и mod_wsgi тривиальна:
Установка MySQL
Кроме самого сервера MySQL необходимо также установить пакет, который позволяет работать с MySQL из Python:
При установке необходимо будет указать пароль для root-пользователя БД MySQL.
Создание и настройка проекта в Django
При создании проекта будем исходить из того, что код Django-проекта должен работать от имени отдельного системного пользователя.
Создание проекта Django
Далее приведен код создание Django-проекта и некоторых дополнительных директорий в нем:
Создание пользователя для проекта
Для того, чтобы изолировать код проекта от остальной системы (в целях безопасности), необходимо добавить в систему пользователя, от имени которого будет исполняться код проекта:
Настройка виртуального хоста в Apache
Далее, чтобы код проекта отзывался на какой-либо URL-адрес, необходимо настроить виртуальный хост Apache. Необходимо создать новый файл:
И добавить в него следующий код:
В данном случае 10.1.0.4 — это IP-адрес машины, на которой работает Apache.
Настройка wsgi
Теперь, когда виртуальный хост создан, необходимо создать wsgi-обработчик. Для этого создается файл:
В файл добавляется следующий код:
Включение виртуального хоста Apache
На заключительном шаге необходимо дать знать о наличии нового виртуального хоста в Apache, включить его и перезагрузить сам Apache:
Проверка корректности установки
Чтобы проверить, что Django корректно работает через mod_wsgi необходимо попытаться открыть URL «http://wsgi.debianworld.ru/» в браузере.
Результатом должно быть приглашение:
Создание БД/пользователя в MySQL, настройка Django
После того, как есть уверенность, что Django установлен и работает, необходимо обеспечить возможность работы с БД. Для этого необходимо залогиниться в MySQL под root’ом:
И создать новую базу данных и нового пользователя:
После того, как новые БД и пользователь готовы, необходимо прописать их в конфиг Django. Для этого необходимо открыть файл настроек:
И прописать следующие значения:
Кроме того, чтобы правильно «подхватились» статические файлы django-админки и основго проекта, необходимо так же прописать:
И в заключении, необходимо дать команду Django создать в БД основные таблицы:
Вот и все. Теперь Django настроено полностью. Далее можно создавать приложения слдеующей командой:
или непосредственно под тем пользователем, под которым работает весь код проекта:
Источник