Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
webserver-apache-wsgi-django [08.01.2012 16:43] kpetrov |
webserver-apache-wsgi-django [02.11.2014 23:49] (текущий) |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ====== Установка Django, Apache, mod_wsgi на VPS с Ubunu 11.04 ====== | + | ====== Установка Django, Apache, mod_wsgi на VPS с Ubuntu |
| <code bash> | <code bash> | ||
| Строка 12: | Строка 12: | ||
| **project_name** — имя проекта\\ | **project_name** — имя проекта\\ | ||
| **project.com** — домен проекта\\ | **project.com** — домен проекта\\ | ||
| + | **project_group_name** - группа доступа к проекту\\ | ||
| Заменить на соответствующие значения для Вашего проекта. | Заменить на соответствующие значения для Вашего проекта. | ||
| Строка 63: | Строка 64: | ||
| Для работы с Django необходимы http-сервер Apache и модуль к нему - mod-wsgi. Модуль mod_wsgi пришел на смену mod_python и в настоящее время рекомендуется авторами Django как наиболее подходящее решение для использования в реальных условиях. | Для работы с Django необходимы http-сервер Apache и модуль к нему - mod-wsgi. Модуль mod_wsgi пришел на смену mod_python и в настоящее время рекомендуется авторами Django как наиболее подходящее решение для использования в реальных условиях. | ||
| - | ==== Установка Apache и mod_wsgi: ==== | + | ==== Установка Apache и mod_wsgi ==== |
| <code bash> | <code bash> | ||
| Строка 69: | Строка 70: | ||
| </ | </ | ||
| - | ===== Создание и настройка проекта в Django | + | === Создание и настройка проекта в Django === |
| При создании проекта будем исходить из того, что код Django-проекта должен работать от имени отдельного системного пользователя. | При создании проекта будем исходить из того, что код Django-проекта должен работать от имени отдельного системного пользователя. | ||
| - | ==== Создание проекта Django | + | == Создание проекта Django == |
| Далее приведен код создания Django-проекта и некоторых дополнительных директорий в нем: | Далее приведен код создания Django-проекта и некоторых дополнительных директорий в нем: | ||
| <code bash> | <code bash> | ||
| Строка 95: | Строка 96: | ||
| </ | </ | ||
| - | ==== Создание пользователя для проекта | + | == Создание пользователя для проекта == |
| Для того, чтобы изолировать код проекта от остальной системы (в целях безопасности), | Для того, чтобы изолировать код проекта от остальной системы (в целях безопасности), | ||
| - | '' | + | <code bash> |
| - | $ sudo addgroup --quiet --system project_group_name | + | # создается системная группа |
| + | $ sudo addgroup --quiet --system project_group_name | ||
| - | | + | # создается системный пользователь |
| - | $ sudo adduser --quiet --system --ingroup project_group_name --no-create-home --no-create-home project_group_name | + | $ sudo adduser --quiet --system --ingroup project_group_name --no-create-home --no-create-home project_group_name |
| - | # новый владелец для проекта | + | # новый владелец для проекта |
| - | $ sudo chown django:www-data -R / | + | $ sudo chown project_group_name:www-data -R / |
| - | | + | # права доступа на проект. Право на чтение для www-data необходимо |
| - | # для корректной отдачи статики | + | # для корректной отдачи статики |
| - | $ sudo chmod u=rwx, | + | $ sudo chmod u=rwx, |
| + | </ | ||
| - | ==== Настройка виртуального хоста в Apache | + | === Настройка виртуального хоста в Apache === |
| Далее, чтобы код проекта отзывался на какой-либо URL-адрес, | Далее, чтобы код проекта отзывался на какой-либо URL-адрес, | ||
| + | <code bash> | ||
| + | # cтавим консольный текстовый редактор " | ||
| + | $ sudo apt-get install nano | ||
| - | ''# | + | # с помощью консольного текстового редактора создаём новый файл |
| - | $ sudo apt-get install nano | + | $ sudo nano / |
| - | + | </ | |
| - | # с помощью консольного текстового редактора создаём новый файл | + | |
| - | | + | |
| И добавить в него следующий код: | И добавить в него следующий код: | ||
| - | + | <code apache> | |
| - | '' | + | < |
| # Описание сервера | # Описание сервера | ||
| ServerAdmin admin@project.com | ServerAdmin admin@project.com | ||
| Строка 128: | Строка 132: | ||
| # Логи | # Логи | ||
| LogLevel warn | LogLevel warn | ||
| - | ErrorLog / | + | ErrorLog / |
| - | CustomLog / | + | CustomLog / |
| # wsgi-обработчик (см. ниже) | # wsgi-обработчик (см. ниже) | ||
| WSGIPythonPath < | WSGIPythonPath < | ||
| - | WSGIScriptAlias / / | + | WSGIScriptAlias / / |
| # Параметры запуска wsgi | # Параметры запуска wsgi | ||
| - | WSGIDaemonProcess | + | WSGIDaemonProcess |
| - | processes=2 threads=4 maximum-requests=100 display-name=apache-django-wsgi | + | processes=2 threads=4 maximum-requests=100 display-name=apache-project_group_name-wsgi |
| WSGIProcessGroup project_group_name-site | WSGIProcessGroup project_group_name-site | ||
| Строка 151: | Строка 155: | ||
| SetHandler None | SetHandler None | ||
| </ | </ | ||
| - | </ | + | </ |
| + | </ | ||
| Или можно создать файл " | Или можно создать файл " | ||
| Строка 157: | Строка 162: | ||
| В данном случае 10.1.0.4 - это IP-адрес машины, | В данном случае 10.1.0.4 - это IP-адрес машины, | ||
| - | Настройка wsgi | + | === Настройка wsgi === |
| Теперь, | Теперь, | ||
| + | <code bash> | ||
| + | $ sudo -u project_group_name vim / | ||
| + | </ | ||
| - | $ sudo -u django vim / | + | или |
| - | или | + | <code bash> |
| + | $ sudo -u project_group_name nano / | ||
| + | </ | ||
| - | $ sudo nano / | + | или в директорию "/ |
| - | или в директорию "/home/django-projects/project_name/ | + | <code python> |
| + | #/usr/bin/python | ||
| + | # -*- coding: utf-8 -*- | ||
| + | import os, sys | ||
| - | | + | # В python |
| - | # -*- coding: utf-8 -*- | + | dn = os.path.dirname PROJECT_ROOT = os.path.abspath( dn(dn(__file__)) ) |
| - | | + | DJANGO_PROJECT_ROOT = os.path.join(PROJECT_ROOT, ' |
| + | sys.path.append( DJANGO_PROJECT_ROOT ) | ||
| - | | + | # Установка файла настроек |
| - | dn = os.path.dirname PROJECT_ROOT | + | os.environ[' |
| - | DJANGO_PROJECT_ROOT = os.path.join(PROJECT_ROOT, | + | |
| - | sys.path.append( DJANGO_PROJECT_ROOT ) | + | |
| - | | + | # Запуск wsgi-обработчика |
| - | os.environ[' | + | import django.core.handlers.wsgi |
| + | application | ||
| + | </ | ||
| - | # Запуск | + | === Включение виртуального хоста Apache === |
| - | | + | На заключительном шаге необходимо дать знать о наличии нового виртуального хоста в Apache, включить его и перезагрузить сам Apache: |
| - | | + | <code bash> |
| + | # Добавляет ссылку на виртуальный хост в список доступных хостов | ||
| + | $ sudo ln -s /home/django-projects/ | ||
| + | / | ||
| - | Включение | + | # включаем виртуальный хост |
| - | На заключительном шаге необходимо дать знать о наличии нового | + | $ sudo a2ensite project.com |
| - | | + | # рестарт |
| - | $ sudo ln -s /home/django-projects/ | + | $ sudo /etc/init.d/ |
| - | /etc/apache2/sites-available/ | + | </code> |
| - | # включаем виртуальный хост | + | == Проверка корректности установки |
| - | $ sudo a2ensite project.com | + | Чтобы проверить, |
| - | + | ||
| - | # рестарт Apache | + | |
| - | $ sudo / | + | |
| - | + | ||
| - | + | ||
| - | Проверка корректности установки | + | |
| - | Чтобы проверить, | + | |
| Результатом должно быть приглашение: | Результатом должно быть приглашение: | ||
| + | < | ||
| It worked! | It worked! | ||
| Congratulations on your first Django-powered page. | Congratulations on your first Django-powered page. | ||
| Строка 207: | Строка 218: | ||
| * If you plan to use a database, edit the DATABASE_* settings in settings/ | * If you plan to use a database, edit the DATABASE_* settings in settings/ | ||
| * Start your first app by running python settings/ | * Start your first app by running python settings/ | ||
| + | </ | ||
| - | + | ==== Дебаг | |
| - | + | Если возникли проблемы, | |
| - | + | * в виртуальном хосте меняем | |
| - | + | | |
| - | Далее радактировать не нужно | + | |
| - | + | ||
| - | Установка MySQL | + | |
| - | + | ||
| - | Кроме самого сервера MySQL необходимо также установить пакет, который позволяет работать с MySQL из Python: | + | |
| - | + | ||
| - | $ sudo aptitude install mysql-server python-mysqldb | + | |
| - | + | ||
| - | При установке необходимо будет указать пароль для root-пользователя БД MySQL. | + | |
| - | + | ||
| - | Далее необходимо выполнить команду | + | |
| - | mysql_secure_installation | + | |
| - | и ответить на вопросы скрипта проверки безопасности от разработчиков mysql | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | Дебаг: | + | |
| - | Если возникли проблемы, | + | |
| - | LogLevel warn | + | |
| - | на | + | |
| - | LogLevel info | + | |
| - | отключаем демонизацию, | + | |
| - | WSGIProcessGroup | + | |
| Это позволит иметь более подробные сообщения в error_log . | Это позволит иметь более подробные сообщения в error_log . | ||
| По окончании отладки не забудьте вернуть всё обратно :) | По окончании отладки не забудьте вернуть всё обратно :) | ||