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

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


webserver-apache-wsgi-django

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
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 11.04 ======
  
 <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:
 </code> </code>
  
-===== Создание и настройка проекта в Django =====+=== Создание и настройка проекта в Django ===
 При создании проекта будем исходить из того, что код Django-проекта должен работать от имени отдельного системного пользователя.  При создании проекта будем исходить из того, что код Django-проекта должен работать от имени отдельного системного пользователя. 
  
-==== Создание проекта Django ====+== Создание проекта Django ==
 Далее приведен код создания Django-проекта и некоторых дополнительных директорий в нем:  Далее приведен код создания Django-проекта и некоторых дополнительных директорий в нем: 
 <code bash> <code bash>
Строка 95: Строка 96:
 </code> </code>
  
-==== Создание пользователя для проекта ====+== Создание пользователя для проекта ==
 Для того, чтобы изолировать код проекта от остальной системы (в целях безопасности), необходимо добавить в систему пользователя, от имени которого будет исполняться код проекта:  Для того, чтобы изолировать код проекта от остальной системы (в целях безопасности), необходимо добавить в систему пользователя, от имени которого будет исполняться код проекта: 
  
-  ''создается системная группа  +<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 /home/django-projects/project_name +$ sudo chown project_group_name:www-data -R /home/django-projects/project_name 
  
-    # права доступа на проект. Право на чтение для www-data необходимо  +# права доступа на проект. Право на чтение для www-data необходимо  
-    # для корректной отдачи статики  +# для корректной отдачи статики  
-    $ sudo chmod u=rwx,g=rx,o= -R /home/django-projects/project_name'' +$ sudo chmod u=rwx,g=rx,o= -R /home/django-projects/project_name 
 +</code>
  
-==== Настройка виртуального хоста в Apache ====+=== Настройка виртуального хоста в Apache ===
 Далее, чтобы код проекта отзывался на какой-либо URL-адрес, необходимо настроить виртуальный хост Apache. Необходимо создать новый файл:  Далее, чтобы код проекта отзывался на какой-либо URL-адрес, необходимо настроить виртуальный хост Apache. Необходимо создать новый файл: 
 +<code bash>
 +# cтавим консольный текстовый редактор "nano" (если он отсутствует): 
 +$ sudo apt-get install nano 
  
-   ''# cтавим консольный текстовый редактор "nano" (если он отсутствует):  +# с помощью консольного текстового редактора создаём новый файл 
-   $ sudo apt-get install nano  +$ sudo nano /home/django-projects/project_name/deploy/project.com 
- +</code>
-   # с помощью консольного текстового редактора создаём новый файл +
-   $ sudo nano /home/django-projects/**project_name**/deploy/**project.com**'' +
  
 И добавить в него следующий код:  И добавить в него следующий код: 
- +<code apache> 
-''<VirtualHost **10.1.0.4**:80> +<VirtualHost 10.1.0.4:80> 
     # Описание сервера      # Описание сервера 
     ServerAdmin admin@project.com      ServerAdmin admin@project.com 
Строка 128: Строка 132:
     # Логи     # Логи
     LogLevel warn     LogLevel warn
-    ErrorLog /home/django-projects/**project_name**/logs/error_log  +    ErrorLog /home/django-projects/project_name/logs/error_log  
-    CustomLog /home/django-projects/**project_name**/logs/access_log common +    CustomLog /home/django-projects/project_name/logs/access_log common 
  
     # wsgi-обработчик (см. ниже)      # wsgi-обработчик (см. ниже) 
     WSGIPythonPath <здесь надо посмотреть это значение в /etc/apache2/mods-available/wsgi.conf >     WSGIPythonPath <здесь надо посмотреть это значение в /etc/apache2/mods-available/wsgi.conf >
-    WSGIScriptAlias / /home/django-projects/**project_name**/deploy/django.wsgi +    WSGIScriptAlias / /home/django-projects/project_name/deploy/django.wsgi 
  
     # Параметры запуска wsgi      # Параметры запуска wsgi 
-    WSGIDaemonProcess django-site user=django group=django home=/home/django-projects/project_name/media/ \  +    WSGIDaemonProcess project_group_name-site user=project_group_name group=project_group_name home=/home/django-projects/project_name/media/ \  
-                      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 
     </Location>      </Location> 
-</VirtualHost> ''+</VirtualHost> 
 +</code>
  
 Или можно создать файл "**project.com**" и закачать его по FTP в директорию "/home/django-projects/**project_name**/deploy/"  Или можно создать файл "**project.com**" и закачать его по FTP в директорию "/home/django-projects/**project_name**/deploy/" 
Строка 157: Строка 162:
 В данном случае 10.1.0.4 - это IP-адрес машины, на которой работает Apache.  В данном случае 10.1.0.4 - это IP-адрес машины, на которой работает Apache. 
  
-Настройка wsgi +=== Настройка wsgi === 
 Теперь, когда виртуальный хост создан, необходимо создать wsgi-обработчик. Для этого создается файл c помощью консольного текстового редактора (например, nano или vim):  Теперь, когда виртуальный хост создан, необходимо создать wsgi-обработчик. Для этого создается файл c помощью консольного текстового редактора (например, nano или vim): 
 +<code bash>
 +$ sudo -u project_group_name vim /home/django-projects/project_name/deploy/django.wsgi
 +</code>
  
-    $ sudo -u django vim /home/django-projects/project_name/deploy/django.wsgi +или
  
-или +<code bash> 
 +$ sudo -u project_group_name nano /home/django-projects/project_name/deploy/django.wsgi 
 +</code>
  
-    $ sudo nano /home/django-projects/project_name/deploy/django.wsgi +или в директорию "/home/django-projects/project_name/deploy/django.wsgi" через FTP залить файл "django.wsgi" со следующим содержимым:
  
-или в директорию "/home/django-projects/project_name/deploy/django.wsgi" через FTP залить файл "django.wsgi" со следующим содержимым+<code python> 
 +#/usr/bin/python  
 +# -*- codingutf-8 -*-  
 +import os, sys 
  
-    #/usr/bin/python  +В python path добавляется директория проекта  
-    # -*- coding: utf-8 -*-  +dn = os.path.dirname PROJECT_ROOT = os.path.abspath( dn(dn(__file__)) )  
-    import os, sys +DJANGO_PROJECT_ROOT = os.path.join(PROJECT_ROOT'apps')  
 +sys.path.append( DJANGO_PROJECT_ROOT ) 
  
-    В python path добавляется директория проекта  +Установка файла настроек  
-    dn = os.path.dirname PROJECT_ROOT os.path.abspath( dn(dn(__file__)) )  +os.environ['DJANGO_SETTINGS_MODULE'= 'settings
-    DJANGO_PROJECT_ROOT = os.path.join(PROJECT_ROOT, 'apps')  +
-    sys.path.append( DJANGO_PROJECT_ROOT ) +
  
-    Установка файла настроек  +Запуск wsgi-обработчика  
-    os.environ['DJANGO_SETTINGS_MODULE''settings' +import django.core.handlers.wsgi  
 +application django.core.handlers.wsgi.WSGIHandler() 
 +</code>
  
-    # Запуск wsgi-обработчика  +=== Включение виртуального хоста Apache === 
-    import django.core.handlers.wsgi  +На заключительном шаге необходимо дать знать о наличии нового виртуального хоста в Apache, включить его и перезагрузить сам Apache: 
-    application = django.core.handlers.wsgi.WSGIHandler() +<code bash> 
 +# Добавляет ссылку на виртуальный хост в список доступных хостов  
 +$ sudo ln -s /home/django-projects/project_name/deploy/project.com \  
 +             /etc/apache2/sites-available/project.com 
  
-Включение виртуального хоста Apache  +включаем виртуальный хост  
-На заключительном шаге необходимо дать знать о наличии нового виртуального хоста в Apache, включить его и перезагрузить сам Apache: +$ sudo a2ensite project.com 
  
-    Добавляет ссылку на виртуальный хост в список доступных хостов  +рестарт Apache  
-    $ sudo ln -s /home/django-projects/project_name/deploy/project.com \  +$ sudo /etc/init.d/apache2 restart  
-                 /etc/apache2/sites-available/project.com +</code>
  
-    # включаем виртуальный хост  +== Проверка корректности установки == 
-    $ sudo a2ensite project.com  +Чтобы проверить, что Django корректно работает через mod_wsgi необходимо попытаться открыть URL "http://project.com/" в браузере. 
- +
-    # рестарт Apache  +
-    $ sudo /etc/init.d/apache2 restart  +
- +
- +
-Проверка корректности установки +
-Чтобы проверить, что Django корректно работает через mod_wsgi необходимо попытаться открыть URL "http://wsgi.debianworld.ru/" в браузере. +
 Результатом должно быть приглашение:  Результатом должно быть приглашение: 
 +<code>
 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/settings.py.   * 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].   * Start your first app by running python settings/manage.py startapp [appname].
 +</code>
  
- +==== Дебаг ==== 
- +Если возникли проблемы, то: 
- +  * в виртуальном хосте меняем "LogLevel warnна "LogLevel info" 
- +  отключаем демонизацию, закоментировав строчку "WSGIProcessGroup project_group_name-site"
-Далее радактировать не нужно +
- +
-Установка MySQL  +
- +
-    Кроме самого сервера MySQL необходимо также установить пакет, который позволяет работать с MySQL из Python:  +
- +
-    $ sudo aptitude install mysql-server python-mysqldb  +
- +
-При установке необходимо будет указать пароль для root-пользователя БД MySQL.  +
- +
-Далее необходимо выполнить команду +
-mysql_secure_installation  +
-и  ответить на вопросы скрипта проверки безопасности от разработчиков mysql +
- +
- +
- +
-Дебаг: +
-Если возникли проблемы, то: в виртуальном хосте меняем +
-LogLevel warn +
-на +
-LogLevel info +
-отключаем демонизацию, закоментировав строчку +
-WSGIProcessGroup django-site +
 Это позволит иметь более подробные сообщения в error_log . Это позволит иметь более подробные сообщения в error_log .
 По окончании отладки не забудьте вернуть всё обратно :) По окончании отладки не забудьте вернуть всё обратно :)
webserver-apache-wsgi-django.1326026619.txt.gz · Последнее изменение: 02.11.2014 23:49 (внешнее изменение)

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