Данное руководство поможет развернуть приложение при помощи 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 требует немалых усилий.
Дополнительные статьи:
- Мануал по созданию Django-приложений.
- Настройка баз данных
- Обслуживание приложений Django при помощи mod_wsgi