Как запустить сайт Django с Apache, mod_wsgi и MySQL на FreeBSD 10.1

Вступление

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

Независимо от того, являетесь ли вы разработчиком или нет, приятно знать, что ядро ​​того, что вы запускаете в своей Droplet, подверглось проверке большого сообщества с открытым исходным кодом и должно быть менее подвержено большим дырам в безопасности.

Одна вещь, которая не является простой по своей сути, это знание того, как настроить эти веб-фреймворки и запустить их вне вашей собственной среды разработки или тестирования. В этой статье мы покажем вам, как это сделать, используя стандартный Apache, mod_wsgi и стек MySQL, работающий поверх FreeBSD 10.1.

цели

  • Установите и настройте виртуальную среду Python для своего сайта Django

  • Создать и настроить образец сайта Django для тестирования.

  • Настройте простой и безопасный сервер MySQL

  • Сконфигурируйте простой виртуальный хост Apache, который будет обслуживать ваш сайт Django

  • Проверьте, правильно ли работает новый сайт

Предпосылки

Прежде чем начать это руководство, вам понадобится следующее:

  • Капля FreeBSD 10.1

  • Получите доступ к своей корневой учетной записи или учетной записи с привилегиями sudo, следуя этому tutorial

  • Знание того, как редактировать текстовые файлы из командной строки

  • Среда оболочки * Bash *, так как мы будем использовать Virtualenv позже в этом руководстве. Следуйте инструкциям в Changing the Default Shell раздела * Как начать работу с FreeBSD 10.1 *. Вам может потребоваться выйти из системы и войти снова, чтобы получить оболочку Bash для вашего пользователя * freebsd *

Шаг 1 - Установите и настройте виртуальную среду Python

Обо всем по порядку; убедитесь, что ваши текущие пакеты обновлены.

sudo pkg update && sudo pkg upgrade -y

Теперь установите все необходимые вам пакеты, выполнив следующую команду и ответив «да» в появившейся подсказке Вы заметите, что установлено гораздо больше, чем мы набрали, поскольку система + pkg + вычисляет и выбирает все нужные зависимости.

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

Команда + virtualenv +, которую вы скоро будете использовать, не очень хорошо работает с пользовательской оболочкой + tcsh + по умолчанию во FreeBSD. Нам нужно + bash + вместо этого. Если вы пришли из среды Linux, вы будете чувствовать себя как дома. Если вы еще этого не сделали в предварительных условиях, следуйте инструкциям https://www.digitalocean.com/community/tutorials/how-to-get-started-with-freebsd-10-1#changing-the- default-shell- (необязательно) [здесь] сейчас.

  • Вы используете оболочку Bash сейчас? * Не забудьте выйти и войти снова. Большой!

Теперь давайте начнем с нашей среды Python.

Чтобы упростить поиск, создайте каталог для своего сайта, введя эту команду.

sudo mkdir -p /www/data/

Предоставьте вашей учетной записи доступ к работе в вашем новом каталоге проекта. Часть + whoami + команды автоматически заполняет ваше текущее имя пользователя.

sudo chown -R `whoami` /www/data/

Перейдите в недавно созданный каталог.

cd /www/data/

Использование виртуальных сред для сайта или приложения позволяет настраивать, какие пакеты и версии Python вы устанавливаете, вместо того, чтобы устанавливать их на общесистемном уровне.

Теперь создайте виртуальную среду python с помощью утилиты + virtualenv +.

virtualenv venv

Активируйте эту среду, чтобы убедиться, что вы устанавливаете требования для своего сайта Django в этой среде, а не на уровне всей системы.

source venv/bin/activate

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

Если все выглядит в порядке, убедитесь, что инструменты Python обновлены, чтобы выполнить этот шаг.

pip install -U setuptools pip

Шаг 2 - Создание и настройка примера сайта Django

Теперь вы можете создать начало сайта Django. Вы начнете с установки требований Python, необходимых для запуска сайта. Убедитесь, что вы все еще находитесь в каталоге + / www / data / + и в своей виртуальной среде.

pip install django mysql-python

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

django-admin.py startproject mysite .

Используя ваш любимый редактор, откройте файл + mysite / settings.py +.

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

Измените раздел + DATABASES +, чтобы он выглядел следующим образом. Убедитесь, что вы заменили ++ на что-то более безопасное.

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

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

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

Шаг 3 - Настройте простой и безопасный сервер MySQL

Вы уже установили MySQL, так что теперь его просто нужно настроить.

Сначала немного по хозяйству. Откройте файл + / etc / rc.conf для редактирования.

sudo vi /etc/rc.conf

Добавьте эти две строки в конец файла. Это гарантирует, что MySQL и Apache будут запускаться при запуске сервера.

/etc/rc.conf

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 * и предоставить ему разрешения для базы данных, которую вы только что создали. Убедитесь, что ++ соответствует тому, что вы установили в файле + settings.py + ранее. На самом деле, вы также можете изменить имя базы данных и имя пользователя; просто убедитесь, что база данных и созданный вами пользователь соответствуют настройкам в файле конфигурации Python.

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

Если вы не видите никаких ошибок, вы можете выйти из оболочки MySQL следующим образом:

quit

Теперь, когда база данных готова, вы будете использовать утилиту Django + manage.py +, чтобы заполнить ее исходными данными вашего примера сайта. Опять же, это должно быть сделано из каталога сайта, + / www / data / +.

./manage.py migrate

(Необязательно) Шаг 4 - Тестирование нового приложения Django

Прежде чем идти дальше, давайте удостоверимся, что пример сайта Django находится в рабочем состоянии.

Запустите сервер разработки Django, чтобы он мог прослушивать общедоступный сетевой интерфейс вашего Droplet.

./manage.py runserver 0.0.0.0:8000

На панели DigitalOcean Droplet найдите внешний IP-адрес вашей капли. Теперь в вашем браузере зайдите + http: // <ваш ip здесь>: 8000 +. Вы должны увидеть страницу по умолчанию для новой установки Django.

Очень важно, чтобы вы нажимали + CTRL + C + на клавиатуре, чтобы выйти из сервера разработки Django, так как он не должен использоваться в работе.

Примечание о безопасности

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

После этого публичного объявления пришло время настроить Apache для обслуживания нашего сайта Django.

Шаг 5 - Настройте простой виртуальный хост Apache для вашего сайта Django

Используя ваш любимый редактор, создайте и отредактируйте файл + / usr / local / etc / apache24 / Includes / httpd.conf +:

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

Добавьте все следующие параметры конфигурации, чтобы создать виртуальный хост. Пожалуйста, замените ++ именем вашего сайта, чтобы оно соответствовало каталогам, которые мы создали ранее.

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

# Settings
ServerName mysite

## Default Overrides
ServerSignature Off
ServerTokens Prod
Timeout 30

## Virtual Hosts
<VirtualHost *:80>

   WSGIDaemonProcess mysite python-path=/www/data/:/www/data//venv/lib/python2.7/site-packages/
   WSGIProcessGroup mysite
   WSGIScriptAlias / /www/data//mysite/wsgi.py

   <Directory /www/data//mysite>
       <Files wsgi.py>
       Require all granted
       </Files>
   </Directory>

</VirtualHost>

Здесь вы просто указываете Apache установить несколько нормальных параметров конфигурации по умолчанию и где найти код Python для запуска сайта Django с помощью модуля Apache + mod_wsgi +. This статьи имеет более высокий уровень детализации о виртуальной Apache хосты, если хотите узнать больше.

Запустите веб-сервер Apache.

sudo service apache24 restart

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

Теперь вы должны иметь возможность зайти в браузер + http: // + и увидеть страницу Django по умолчанию. Если вы настроили DNS, вы также можете использовать свой домен.

Заключение

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

Если у вас есть какие-либо вопросы или комментарии, пожалуйста, оставьте их ниже.

Рекомендуемое чтение

Следующие ссылки могут помочь вам узнать больше о создании и развертывании простого сайта Django.

Related