Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
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 . | ||
По окончании отладки не забудьте вернуть всё обратно :) | По окончании отладки не забудьте вернуть всё обратно :) |