Django - быстрый старт (устарело), Django - быстрый старт

Материал из 1GbWiki.

(Различия между версиями)
Перейти к: навигация, поиск
Версия 22:47, 16 мая 2011 (править)
Dmih (Обсуждение | вклад)
м (Правки 38.125.47.254 (обсуждение) откачены к версии Renton)
← К предыдущему изменению
Текущая версия (18:12, 22 июля 2016) (править) (отменить)
Renton (Обсуждение | вклад)
Django - быстрый старт» переименована в «Django - быстрый старт (устарело)»)
 
Строка 1: Строка 1:
-== Общие сведения ==+#REDIRECT [[Django - быстрый старт (устарело)]]
-Эта статья поможет понять, как можно быстро и просто установить фреймворк [http://en.wikipedia.org/wiki/Django_(web_framework) Django] в режиме FastCGI на хостинге [http://www.1gb.ru 1Gb.ru], а также как устанавливать собственные модули [http://en.wikipedia.org/wiki/Python_(programming_language) Python]+
- +
-== Установка ==+
-=== Подготовка окружения ===+
-'''Внимание!''' Убедитесь, что ваш сайт работает под управлением web-сервера UNIX/Apache/FastCGI, это можно сделать, а также при необходимости сменить тип сервера, в разделе личного кабинета /Управление сайтами и серверами/.+
- +
-Везде, где написано python2.6 нужно подставлять версию python, работающую на вашем сервере (первые два числа)+
- +
- python --version+
- +
-* Создаем в корне домашнего каталога файл <code>.pydistutils.cfg</code> для настройки путей инсталляции модулей:+
- cat > ~/.pydistutils.cfg <<END+
- [install]+
- prefix = \$HOME/python+
- +
- [easy_install]+
- install_dir = \$HOME/python/lib64/python`python -c 'import sys; print sys.version[:3]'`/site-packages+
- END+
-* Для настройки переменных <code>PATH</code>, <code>PYTHONPATH</code> добавьте строки:+
- export PATH=$PATH:$HOME/python/bin:$HOME/python/lib64/python`python -c 'import sys; print sys.version[:3]'`/site-packages+
- export PYTHONPATH=$PYTHONPATH:$HOME/python/lib64/python`python -c 'import sys; print sys.version[:3]'`/site-packages+
-в ваш <code>~/.bashrc</code>+
- +
-* Выполняем команду:+
- source ~/.bashrc+
-для того, чтобы сделанные изменения вступили в силу.+
- +
-* Создаем различные каталоги:+
- mkdir -p ~/src ~/python/lib64/python`python -c 'import sys; print sys.version[:3]'`/site-packages ~/django+
-* Симлинк:+
- cd ~/python; ln -s lib64 lib; cd+
- +
-=== Установка библиотек ===+
-* Скачиваем и устанавливаем Django:+
- cd ~/src+
- wget http://www.djangoproject.com/download/1.2.1/tarball/+
- tar xzvf Django-1.2.1.tar.gz+
- cd Django-1.2.1+
- python setup.py install+
- +
-* Устанавливаем модуль flup, для работы Django в FastCGI режиме:+
- easy_install flup+
- +
-* Устанавливаем модуль MySQL-python для работы с базой MySQL+
- easy_install MySQL-python+
- +
-=== Настройка приложения, запуск ===+
-* Создаем проект+
- cd ~/django; django-admin.py startproject demo+
-* Переходим в каталог с проектом и делаем базовую настройку:+
- cd demo+
-в файле <code>settings.py</code> редактируем строки в соответствие с параметрами вашей базы:+
- DATABASES = {+
- 'default': {+
- 'ENGINE': 'mysql', # Тип базы данных+
- 'NAME': <nowiki>''</nowiki>, # Название базы данных+
- 'USER': <nowiki>''</nowiki>, # Имя пользователя+
- 'PASSWORD': <nowiki>''</nowiki>, # Пароль+
- 'HOST': <nowiki>''</nowiki>, # Сервер базы данных (например mysql51.1gb.ru)+
- 'PORT': <nowiki>''</nowiki>, # Порт для подключения к базе (оставить пустым)+
- }+
- }+
- +
- +
- TIME_ZONE = 'Europe/Moscow'+
- LANGUAGE_CODE = 'ru-RU'+
-импорт данных в базу:+
- python manage.py syncdb+
-В процессе создания структуры базы будет предложено ввести параметры администратора, нужно согласиться (набрать yes) и ввести данные пользователя, который будет считаться администратором.+
- +
-* Переходим в каталог ~/http и делаем настройку FastCGI wrapper'а и правил редирета mod_rewrite.+
-Содержимое файла .htaccess:+
- Options +FollowSymlinks+
- +
- AddHandler fcgid-script .fcgi+
- +
- RewriteEngine On+
- RewriteCond %{REQUEST_FILENAME} !-f+
- RewriteRule ^(.*)$ index.fcgi/$1 [QSA,L]+
- +
-'''Не забудьте поменять <code>demo</code> на название своего проекта!'''+
- +
-Файл index.fcgi:+
- #!/usr/bin/python -OO+
- +
- import sys, os, site+
- +
- # Add a custom Python path.+
- PYTHON_CUSTOM_PATH = os.path.abspath (os.path.join (os.path.dirname (os.path.abspath (__file__)), \+
- '../python/lib64/python2.6/site-packages'))+
- sys.path.insert (0, PYTHON_CUSTOM_PATH)+
- site.addsitedir (PYTHON_CUSTOM_PATH)+
- +
- # Add a custom Python path.+
- PYTHON_CUSTOM_PATH = os.path.abspath (os.path.join (os.path.dirname (os.path.abspath (__file__)), \+
- '../django'))+
- sys.path.insert (0, PYTHON_CUSTOM_PATH)+
- +
- # Add a custom Python path.+
- os.chdir(os.path.join (PYTHON_CUSTOM_PATH, 'demo'))+
- +
- os.environ['DJANGO_PROJECT'] = 'demo'+
- os.environ['DJANGO_SETTINGS_MODULE'] = 'demo.settings'+
- +
- from django.core.servers.fastcgi import runfastcgi+
- runfastcgi(method="prefork", maxchildren=3, daemonize="false")+
- +
-* Создаем симлинк для CSS, JavaScript:+
-cd ~/http; ln -s ../python/lib64/python`python -c 'import sys; print sys.version[:3]'`/site-packages/django/contrib/admin/media+
-* Выставляем права на выполнение:+
-chmod 750 ~/http/index.fcgi+
- +
-Все. Можно попробовать обратиться по HTTP к вашему сайту, вы должны увидеть примерно это: http://django-demo.1gb.ru/+
- +
-=== Перезагрузка ===+
-Если вы сделали какие-то изменения в проекте, то для того чтобы они вступили в силу необходимо перезапустить FastCGI приложение. Делается это так:+
- killall python`python -c 'import sys; print sys.version[:3]'`+
- +
-Если не сработало - посмотрите список процессов командой top и найдите аналогичное.+
- +
-=== Решение проблем ===+
-* '''Сайт не запускается, 500-оя ошибка на сайте, в логе ошибок примерно следующее:'''+
- [Sun Nov 21 15:11:11 2010] [warn] [client 111.122.111.122] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server+
- [Sun Nov 21 15:11:11 2010] [error] [client 111.122.111.122] Premature end of script headers: index.fcgi+
-В этом случае попробуйте убрать символы перевода строки в формате Windows из файла <code>index.fcgi</code> такой командой:+
- sed -i 's/^M$//' ~/http/index.fcgi+
-где '''^M''' - это CTRL-V CTRL-M.+
-* '''Сайт работает, но открытие страниц с большим количеством элементов (стили, картинки) происходит медленно, какие-то элементы не подгружаются. В лог-файлах могут быть такие ошибки:'''+
- [Fri Mar 04 18:49:21 2011] [warn] [client 195.250.26.6] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server, referer: <nowiki>http://www.example.com/</nowiki>+
- [Fri Mar 04 18:49:21 2011] [error] [client 195.250.16.6] Premature end of script headers: index.fcgi, referer: <nowiki>http://www.example.com/</nowiki>+
- +
-Причина этого заключается в том, что не указаны либо указаны неправильно пути к статическим файлам (картинки, стили, JS-скрипты) и вместо того, чтобы сервер Apache отдавал их напрямую, отдача их в обозреватель происходит через обработку запроса Django-приложением. Это порождает большое количество процессов и, как следствие, превышение системных лимитов.+
- +
-Решение заключается в правильном определении переменных:+
- MEDIA_ROOT = ''+
- MEDIA_URL = ''+
- ADMIN_MEDIA_PREFIX = ''+
-в файле <code>settings.py</code> вашего приложения.+
- +
-== См. также ==+
-* [[Юникс шелл]]+
-== Ссылки ==+
-* [http://www.djangoproject.com/ Официальный сайт Django]+
-* [http://djbook.ru/ Русский перевод DjangoBook]+
-* [http://ru.wikipedia.org/wiki/Python Python на wikipedia.org]+
-* [http://www.python.org/ Официальный сайт языка Python]+
-* [http://peak.telecommunity.com/DevCenter/EasyInstall Документация по EasyInstall]+
- +
-[[Категория:Программирование]]+
-[[Категория:Python]]+

Текущая версия

  1. REDIRECT Django - быстрый старт (устарело)
Личные инструменты