Запуск сайта Django на Apache, mod_wsgi и MySQL в FreeBSD 10.1

Published by Leave your thoughts

Данное руководство поможет развернуть приложение при помощи Django, популярного фреймворка Python. Django берёт на себя основной объём работы и позволяет разработчику сосредоточиться на уникальных компонентах сайта, что является одним из основных преимуществ этого фреймворка. Кроме того, Django поддерживается большим сообществом пользователей, которое подтвердило, что это надёжный фреймворк с высоким уровнем безопасности.

Один из немногих моментов работы с таким фреймворком, который вызывает сложности, — это его настройка из запуск вне среды разработки и тестирования. Данное руководство продемонстрирует развёртывание приложения при помощи стандартного стека Apache+mod_wsgi+MySQL в системе FreeBSD 10.1.

Цели

  • Установить и настроить виртуальную среду Python для сайта Django.
  • Создать и настроить тестовое приложение Django.
  • Настроить простую и безопасную БД MySQL.
  • Настроить простой виртуальный хост Apache для обслуживания приложения Django.
  • Протестировать новый сайт.

Требования

Для выполнения руководства нужен доступ к аккаунту пользователя root или пользователя с правами sudo. Также необходимо обладать навыками редактирования текстовых файлов при помощи командной строки.

Для настройки виртуального окружения Virtualenv понадобится оболочка Bash. Инструкции по настройке этой оболочки в системе FreeBSD 10.1 можно найти в этом руководстве.

1: Установка и настройка виртуального окружения Python

Сначала обновите список текущих пакетов.

sudo pkg update && sudo pkg upgrade -y

Затем установите все необходимые пакеты, запустив и подтвердив следующую команду. Обратите внимание: система pkg вычисляет и устанавливает все зависимости устанавливаемых пакетов, потому она установит больше пакетов, чем было задано в команде.

sudo pkg install bash ap24-mod_wsgi3 py27-virtualenv mysql56-server

Команда virtualenv, которая позволяет создать виртуальную среду, плохо взаимодействует со стандартной оболочкой tcsh. Потому нужно использовать оболочку bash. Настройте поддержку этой оболочки в системе FreeBSD, если вы не сделали это во время выполнения требований руководства.

После этого можно приступать к настройке виртуального окружения.

Создайте отдельный каталог для сайта:

sudo mkdir -p /www/data/www.example.com

Примечание: Вместо условного домена укажите своё доменное имя.

Предоставьте текущему пользователю права доступа к новому каталогу. Опция whoami автоматически внесёт имя текущего пользователя.

sudo chown -R `whoami` /www/data/www.example.com

Откройте новый каталог:

cd /www/data/www.example.com

Виртуальная среда позволяет использовать индивидуальный набор пакетов и версий Python для каждого отдельного сайта и приложения.

Используйте утилиту virtualenv для создания виртуальной среды:

virtualenv venv

Включите виртуальное окружение, после чего все установленные в это окружение пакеты будут использоваться на индивидуальной основе (то есть не общесистемно).

source venv/bin/activate

Если виртуальное окружение включилось, командная строка сообщит об этом; в таком случае она будет начинаться с (venv).

После этого обновите пакеты Python:

pip install -U setuptools pip

2: Создание и настройка сайта Django

Теперь можно приступать к разработке сайта Django. Установите все его зависимости в виртуальное окружение (в каталог /www/data/www.example.com).

pip install django mysql-python

Установив поддержку Django и MySQL для Python, создайте макет проекта при помощи утилиты django-admin.

django-admin.py startproject mysite .

При помощи текстового редактора откройте файл mysite/settings.py:

vi /www/data/www.example.com/mysite/settings.py

Отредактируйте раздел DATABASES следующим образом, заменив условный пароль password более надёжным паролем:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysite',
'USER': 'mysite',
'PASSWORD': 'password',
'HOST': '/tmp/mysql.sock',
}

Сохраните изменения.

3: Настройка сервера MySQL

СУБД MySQL уже установлена, и теперь нужно только настроить её для поддержки сайта.

Откройте файл /etc/rc.conf для редактирования.

sudo vi /etc/rc.conf

В конец файла добавьте следующие строки; они настраивают автозапуск MySQL и Apache при загрузке системы:

mysql_enable="YES"
apache24_enable="YES"

Примечание: Сервер Apache ещё не настроен, но в дальнейшем его автозапуск все равно придётся настроить.

Запустите сервер MySQL:

sudo service mysql-server start

Запустите следующую команду, которая устранит все опасные настройки:

mysql_secure_installation

Программа задаст вам несколько вопросов; чтобы принять стандартные настройки, просто ответьте Y на все вопросы. Особое внимание следует уделить установке пароля, так как это будет root-пароль для MySQL.

Затем войдите в MySQL, введя пароль:

mysql -u root -p

Выполните следующую команду, чтобы создать БД для сайта по имени mysite:

create database mysite character set utf8;

Примечание: Условное имя mysite замените своим именем БД.

Затем создайте пользователя для новой БД и передайте ему все права на неё. Будьте внимательны: пароль (в примере ниже – password) должен совпадать с паролем, указанным в файле settings.py.

grant all privileges on mysite.* to 'mysite'@'localhost' identified by 'password';

Если программа не сообщила об ошибках, можете закрыть MySQL:

quit

Теперь БД готова к работе. Используйте утилиту manage.py (в каталоге проекта, в данном случае это /www/data/www.example.com), чтобы внести в БД исходными данными сайта.

./manage.py migrate

4: Тестирование приложения Django (опционально)

Теперь нужно убедиться, что сайт Django работает должным образом.

Запустите сервер разработки Django:

./manage.py runserver 0.0.0.0:8000

Затем откройте панель управления сервером и найдите внешний IP сервера. в браузере откройте ссылку:

http://<your ip here>:8000

На экране должна появиться стандартная страница приложения Django.

Остановите сервер разработки, нажав CTRL+C; этот сервер не подходит для стадии производства приложения.

Примечание: О безопасности и защите работы сайта можно найти немало информации. Запуская свой сайт в производство, обязательно поищите дополнительные рекомендации по безопасности, чтобы обеспечить защиту веб-сервера и сервера базы данных.

Теперь нужно настроить веб-сервер Apache  для обслуживания сайта.

5: Настройка виртуального хоста Apache

Создайте файл /usr/local/etc/apache24/Includes/httpd.conf и откройте его для редактирования:

sudo vi /usr/local/etc/apache24/Includes/httpd.conf

В этот файл вставьте следующие настройки, чтобы создать виртуальный хост. Вместо www.example.com укажите свой домен.

# Settings
ServerName mysite
## Default Overrides
ServerSignature Off
ServerTokens Prod
Timeout 30
## Virtual Hosts
<VirtualHost *:80>
WSGIDaemonProcess mysite python-path=/www/data/www.example.com:/www/data/www.example.com/venv/lib/python2.7/site-packages/
WSGIProcessGroup mysite
WSGIScriptAlias / /www/data/www.example.com/mysite/wsgi.py
<Directory /www/data/www.example.com/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>

Этот код устанавливает несколько стандартных настроек Apache и сообщает веб-серверу местонахождение кода Python для запуска Django-приложения с помощью модуля mod_wsgi.

Примечание: Более подробную информацию о виртуальных хостах Apache можно найти здесь.

Запустите сервер Apache:

sudo service apache24 restart

Тестирование сайта Django

С помощью браузера откройте:

http://your_server_ip

На экране появится стандартная страница Django. Если у вас настроен DNS, можно также посетить домен.

Заключение

Как видите, в отличие от процесса разработки, процесс развертывания простого приложения Django требует немалых усилий.

Дополнительные статьи:

Tags: , , , , , ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>