Инструменты пользователя

Инструменты сайта


webserver-apache-wsgi-django

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

webserver-apache-wsgi-django [09.01.2012 15:10]
kpetrov [Установка Apache и mod_wsgi]
webserver-apache-wsgi-django [02.11.2014 23:49]
Строка 1: Строка 1:
-====== Установка Django, Apache, mod_wsgi на VPS с Ubuntu 11.04 ====== 
  
-<code bash> 
-# Обновляем список пакетов 
-$ sudo apt-get update 
- 
-# Обновляем пакеты 
-$ sudo apt-get upgrade 
-</code> 
- 
-Переменные:\\ 
-**project_name** — имя проекта\\ 
-**project.com** — домен проекта\\ 
-**project_group_name** - группа доступа к проекту\\ 
-Заменить на соответствующие значения для Вашего проекта. 
- 
-В данной инструкции приводится пример установки Django 1.3.1 и Python 2.7 на Ubuntu 11.04. 
-Возможно, в скором времени Вы будете устанавливать более современные версии. В этом случае Вам необходимо будет изменить инструкцию в соответствующих местах. 
- 
-===== Установка последней стабильной версии Django ===== 
- 
-Для установки последней версии необходимо скачать исходники и распаковать их:  
- 
-<code bash> 
-$ sudo mkdir ~/django 
-$ cd ~/django 
-$ wget http://www.djangoproject.com/download/1.3.1/tarball/ 
-$ mv index.html Django-1.3.1.tar.gz 
-$ tar xzf Django-1.3.1.tar.gz 
-</code> 
- 
-Далее, необходимо узнать, в какую директорию необходимо устанавливать пакеты, чтобы Python узнал об этом. Для этого необходимо выполнить:  
- 
-<code bash> 
-$ python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"  
-/usr/lib/python2.7/dist-packages 
-</code> 
- 
-В данном случае видно, что основной версией является Python 2.7 и все дополнительные пакеты устанавливаются в директорию "/usr/lib/python2.7/dist-packages" 
- 
-Следующим шагом необходимо скопировать пакет  Django в папку с модулями и дать права на чтение:  
- 
-<code bash> 
-$ sudo cp -R ~/django/Django-1.3.1/django /usr/lib/python2.7/dist-packages/django  
-$ sudo chomd -R 644 /usr/lib/python2.7/dist-packages/django 
-</code> 
- 
-И в конце, чтобы сделать команду django-admin.py доступной из любой директории системы, необходимо добавить символическую ссылку:  
- 
-<code bash> 
-$ sudo ln -s ~/django/Django-1.3.1/django/bin/django-admin.py /usr/local/bin 
-</code> 
-     
-==== Проверка корректности установки Django ==== 
-Чтобы убедиться, что Django нормально установлен, необходимо запустить интерпретатор Python и импортировать модуль django:  
-<code bash> 
-$ python -c "import django; print django.VERSION;"  
-(1, 3, 1, 'final', 0) 
-</code> 
- 
-Все в порядке. Последняя версия Django корректно установлена.  
- 
-===== Установка и настройка Apache, mod_wsgi ===== 
-Для работы с Django необходимы http-сервер Apache и модуль к нему - mod-wsgi. Модуль mod_wsgi пришел на смену mod_python и в настоящее время рекомендуется авторами Django как наиболее подходящее решение для использования в реальных условиях.  
- 
-==== Установка Apache и mod_wsgi ==== 
- 
-<code bash> 
-$ sudo apt-get install apache2 libapache2-mod-wsgi 
-</code> 
- 
-=== Создание и настройка проекта в Django === 
-При создании проекта будем исходить из того, что код Django-проекта должен работать от имени отдельного системного пользователя.  
- 
-== Создание проекта Django == 
-Далее приведен код создания Django-проекта и некоторых дополнительных директорий в нем:  
-<code bash> 
-# директория для django проектов  
-$ sudo mkdir -p /home/django-projects/project_name  
- 
-# новый django-проект  
-$ cd /home/django-projects/project_name  
-$ sudo django-admin.py startproject apps  
- 
-# корректируем название модуля для корректного импорта  
-$ sudo perl -pi -e 's/apps.urls/urls/g' apps/settings.py  
- 
-# директория для настроек wsgi  
-$ sudo mkdir -p /home/django-projects/project_name/deploy  
- 
-# директория для статики  
-$ sudo mkdir -p /home/django-projects/project_name/media  
- 
-# директория для логов  
-$ sudo mkdir -p /home/django-projects/project_name/logs 
-</code> 
- 
-== Создание пользователя для проекта == 
-Для того, чтобы изолировать код проекта от остальной системы (в целях безопасности), необходимо добавить в систему пользователя, от имени которого будет исполняться код проекта:  
- 
-<code bash> 
-# создается системная группа  
-$ 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 chown project_group_name:www-data -R /home/django-projects/project_name  
- 
-# права доступа на проект. Право на чтение для www-data необходимо  
-# для корректной отдачи статики  
-$ sudo chmod u=rwx,g=rx,o= -R /home/django-projects/project_name 
-</code> 
- 
-=== Настройка виртуального хоста в Apache === 
-Далее, чтобы код проекта отзывался на какой-либо URL-адрес, необходимо настроить виртуальный хост Apache. Необходимо создать новый файл:  
-<code bash> 
-# cтавим консольный текстовый редактор "nano" (если он отсутствует):  
-$ sudo apt-get install nano  
- 
-# с помощью консольного текстового редактора создаём новый файл 
-$ sudo nano /home/django-projects/project_name/deploy/project.com 
-</code> 
- 
-И добавить в него следующий код:  
-<code apache> 
-<VirtualHost 10.1.0.4:80>  
-    # Описание сервера  
-    ServerAdmin admin@project.com  
-    ServerName project.com  
- 
-    # Логи 
-    LogLevel warn 
-    ErrorLog /home/django-projects/project_name/logs/error_log  
-    CustomLog /home/django-projects/project_name/logs/access_log common  
- 
-    # wsgi-обработчик (см. ниже)  
-    WSGIPythonPath <здесь надо посмотреть это значение в /etc/apache2/mods-available/wsgi.conf > 
-    WSGIScriptAlias / /home/django-projects/project_name/deploy/django.wsgi  
- 
-    # Параметры запуска wsgi  
-    WSGIDaemonProcess django-site user=django group=django home=/home/django-projects/project_name/media/ 
-                      processes=2 threads=4 maximum-requests=100 display-name=apache-django-wsgi  
-    WSGIProcessGroup project_group_name-site  
- 
-    # Статические файлы django-админки  
-    Alias "/media_admin/" "/usr/lib/python2.7/dist-packages/django/contrib/admin/media/"  
-    <Location "/media_admin/">  
-        SetHandler None  
-    </Location>  
- 
-    # Статические файлы проекта  
-    Alias "/media/" "/home/django-projects/project_name/media/"  
-    <Location "/media/">  
-        SetHandler None  
-    </Location>  
-</VirtualHost> 
-</code> 
- 
-Или можно создать файл "**project.com**" и закачать его по FTP в директорию "/home/django-projects/**project_name**/deploy/"  
- 
-В данном случае 10.1.0.4 - это IP-адрес машины, на которой работает Apache.  
- 
-=== Настройка wsgi ===  
-Теперь, когда виртуальный хост создан, необходимо создать wsgi-обработчик. Для этого создается файл c помощью консольного текстового редактора (например, nano или vim):  
-<code bash> 
-$ sudo -u project_group_name vim /home/django-projects/project_name/deploy/django.wsgi 
-</code> 
- 
-или 
- 
-<code bash> 
-$ sudo -u project_group_name nano /home/django-projects/project_name/deploy/django.wsgi 
-</code> 
- 
-или в директорию "/home/django-projects/project_name/deploy/django.wsgi" через FTP залить файл "django.wsgi" со следующим содержимым: 
- 
-<code python> 
-#/usr/bin/python  
-# -*- coding: utf-8 -*-  
-import os, sys  
- 
-# В python path добавляется директория проекта  
-dn = os.path.dirname PROJECT_ROOT = os.path.abspath( dn(dn(__file__)) )  
-DJANGO_PROJECT_ROOT = os.path.join(PROJECT_ROOT, 'apps' 
-sys.path.append( DJANGO_PROJECT_ROOT )  
- 
-# Установка файла настроек  
-os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'  
- 
-# Запуск wsgi-обработчика  
-import django.core.handlers.wsgi  
-application = django.core.handlers.wsgi.WSGIHandler() 
-</code> 
- 
-=== Включение виртуального хоста Apache === 
-На заключительном шаге необходимо дать знать о наличии нового виртуального хоста в Apache, включить его и перезагрузить сам Apache: 
-<code bash> 
-# Добавляет ссылку на виртуальный хост в список доступных хостов  
-$ sudo ln -s /home/django-projects/project_name/deploy/project.com \  
-             /etc/apache2/sites-available/project.com  
- 
-# включаем виртуальный хост  
-$ sudo a2ensite project.com  
- 
-# рестарт Apache  
-$ sudo /etc/init.d/apache2 restart  
-</code> 
- 
-== Проверка корректности установки == 
-Чтобы проверить, что Django корректно работает через mod_wsgi необходимо попытаться открыть URL "http://project.com/" в браузере.  
-Результатом должно быть приглашение:  
-<code> 
-It worked! 
-Congratulations on your first Django-powered page. 
- 
-Of course, you haven't actually done any work yet. Here's what to do next: 
-  * If you plan to use a database, edit the DATABASE_* settings in settings/settings.py. 
-  * Start your first app by running python settings/manage.py startapp [appname]. 
-</code> 
- 
-==== Дебаг ==== 
-Если возникли проблемы, то: 
-  * в виртуальном хосте меняем "LogLevel warn" на "LogLevel info" 
-  * отключаем демонизацию, закоментировав строчку "WSGIProcessGroup project_group_name-site" 
-Это позволит иметь более подробные сообщения в error_log . 
-По окончании отладки не забудьте вернуть всё обратно :) 
webserver-apache-wsgi-django.txt · Последнее изменение: 02.11.2014 23:49 (внешнее изменение)

Инструменты страницы