Django - быстрый старт (устарело)
Материал из 1GbWiki.
Версия 14:31, 14 июня 2012 (править) Renton (Обсуждение | вклад) (→Подготовка окружения) ← К предыдущему изменению |
Текущая версия (22:44, 15 августа 2024) (править) (отменить) Dmih (Обсуждение | вклад) (→Быстрая установка) |
||
(38 промежуточных версий не показаны.) | |||
Строка 1: | Строка 1: | ||
+ | {{устарело}} | ||
+ | |||
+ | <table cellspacing="0"> | ||
+ | <tr style="background: #F7D9D9"> | ||
+ | <td width="950px" style="vertical-align:top; border-top: 1px solid #D63838; border-left: 1px solid #D63838; border-bottom: 1px solid #D63838; border-right: 1px solid #D63838; padding: 1em;"> | ||
+ | <span style="font-size: 28px; font-weight: bold;">Эта инструкция устарела и больше не будет обновляться.<br /><br /> | ||
+ | Используйте [[Django - быстрый старт (поддерживаемая версия)]]</span> | ||
+ | </td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | <br /> | ||
+ | <br /> | ||
== Общие сведения == | == Общие сведения == | ||
Эта статья поможет понять, как можно быстро и просто установить фреймворк [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] | Эта статья поможет понять, как можно быстро и просто установить фреймворк [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-сервера <code>'''UNIX/Apache/FastCGI'''</code>, это можно сделать, а также при необходимости сменить тип сервера, в разделе личного кабинета <code>/Управление сайтами и серверами/</code>. | ||
+ | |||
+ | Подключитесь к серверу по ssh, параметры подключения те же что для FTP | ||
+ | выполните команды: | ||
+ | wget http://rekby.1gb.ru/distrib/django-install.sh | ||
+ | bash django-install.sh | ||
+ | |||
+ | Скрипт django-install попросит ввести имя проекта django, затем нужно будет выбрать тип базы данных. Если вы выбираете mysql дальше потребуется ввести сервер базы данных (например mysql65.1gb.ru, имя базы данных и пароль (имя пользователя вводить не надо - оно совпадает с именем базы и подставится автоматически). | ||
+ | |||
+ | Дальше скрипт будет устанавливать нужные модули и настраивать окружение сервера на работу django, после завершения настройки нужно будет ответить на обычные вопросы для нового django-проекта - создавать ли пользователя с правами администратора (введите yes), дальше введите имя пользователя (admin), ваш email, пароль (нужно придумать самостоятельно) и еще раз пароль. | ||
+ | |||
+ | == Пошаговая установка == | ||
+ | |||
+ | <table cellspacing="0"> | ||
+ | <tr style="background: #F7D9D9"> | ||
+ | <td width="850px" style="vertical-align:top; border-top: 1px solid #D63838; border-left: 1px solid #D63838; border-bottom: 1px solid #D63838; border-right: 1px solid #D63838; padding: 1em;"> | ||
+ | <span style="font-size: 16px; font-weight: bold;">Данная статья предназначена для технических специалистов.</span> | ||
+ | <p>Вы должны знать основы программирования, уметь пользоваться консольными программами и официальной документацией от разработчиков.</p> | ||
+ | |||
+ | В связи с тем, что на сервере могут обновиться версии программ, измениться конфигурация приложений, документация в статье может не соответствовать действительности, поэтому вы должны быть готовы разобраться с возможными проблемами <b>самостоятельно</b> или с помощью специалистов из платной поддержки http://1gbsup.ru/paidsu/, обычная поддержка хостинга <b>не оказывает</b> консультации по установке и отладке скриптов. | ||
+ | </td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | |||
=== Подготовка окружения === | === Подготовка окружения === | ||
'''Внимание!''' Убедитесь, что ваш сайт работает под управлением web-сервера <code>'''UNIX/Apache/FastCGI'''</code>, это можно сделать, а также при необходимости сменить тип сервера, в разделе личного кабинета <code>/Управление сайтами и серверами/</code>. | '''Внимание!''' Убедитесь, что ваш сайт работает под управлением web-сервера <code>'''UNIX/Apache/FastCGI'''</code>, это можно сделать, а также при необходимости сменить тип сервера, в разделе личного кабинета <code>/Управление сайтами и серверами/</code>. | ||
- | '''1.''' На хостинговом сервере может быть установлено несколько версей Python, но поскольку Django работает с версией Python до 2.7 включительно и не работает с Python 3, то нам необходимо определить для себя версию Python по умолчанию. | + | '''1.''' На хостинговом сервере может быть установлено несколько версей Python, но поскольку stable версия Django работает с версией Python до 2.7 включительно и не работает с Python 3, то нам необходимо определить для себя версию Python по умолчанию. |
- | Сделаем это через псевдонимы команд описываемые в файле <code>~/.bashrc</code> . Выполнив команду: | + | Сделаем это через псевдонимы команд, описываемые в файле <code>~/.bashrc</code>, и симлинк. Выполнив команду: |
$ export PYTHON_VERSION=`eselect python list --python2 | awk '/\*$/ {print $2}'`; echo ${PYTHON_VERSION} | $ export PYTHON_VERSION=`eselect python list --python2 | awk '/\*$/ {print $2}'`; echo ${PYTHON_VERSION} | ||
мы увидим какая версия 2-ой ветки Python установлена на сервере. Ее мы и будем использовать.<br /> | мы увидим какая версия 2-ой ветки Python установлена на сервере. Ее мы и будем использовать.<br /> | ||
Определим эту версию в качестве версии по умолчанию: | Определим эту версию в качестве версии по умолчанию: | ||
- | $ grep -q "=${PYTHON_VERSION}" ~/.bashrc || sed -i "/happen/a alias python=${PYTHON_VERSION}\nalias easy_install=easy_install-$(echo ${PYTHON_VERSION} | tr -d python)" ~/.bashrc | + | $ grep -q "=${PYTHON_VERSION}" ~/.bashrc || ( [ -f "/usr/bin/easy_install-${PYTHON_VERSION}" ] \ |
+ | && sed -i "/happen/a alias python=${PYTHON_VERSION}\nalias easy_install=easy_install-${PYTHON_VERSION}" ~/.bashrc \ | ||
+ | || sed -i "/happen/a alias python=${PYTHON_VERSION}\nalias easy_install=easy_install-$(echo ${PYTHON_VERSION} | tr -d python)" ~/.bashrc ) | ||
+ | |||
$ source ~/.bashrc | $ source ~/.bashrc | ||
- | + | '''2.''' Создаем необходимые каталоги: | |
- | $ | + | $ mkdir -p ~/src ~/python/bin ~/python/lib64/${PYTHON_VERSION}/site-packages ~/django |
- | + | ||
- | + | '''3.''' Симлинк на lib64: | |
+ | $ cd ~/python; ln -s lib64 lib; cd | ||
+ | |||
+ | '''4.''' Симлинк на нужную нам версию python: | ||
+ | $ cd ~/python/bin && cp -a /usr/bin/${PYTHON_VERSION} . && ln -sf ${PYTHON_VERSION} python | ||
+ | |||
+ | '''5.''' Для настройки переменных <code>PATH</code>, <code>PYTHONPATH</code> в ваш <code>'''~/.bashrc'''</code> добавьте соответствующие строки командами: | ||
+ | $ echo 'export PATH=${HOME}/python/bin:${HOME}/python/lib64/'${PYTHON_VERSION}'/site-packages:${PATH}' >> ~/.bashrc | ||
- | '''2.''' Для настройки переменных <code>PATH</code>, <code>PYTHONPATH</code> в ваш <code>'''~/.bashrc'''</code> добавьте соответствующие строки командами: | ||
- | $ echo 'export PATH=${HOME}/python/bin:${HOME}/python/lib64/'${PYTHON_VERSION}'/site-packages:${PATH}' >> ~/.bashrc | ||
$ echo 'export PYTHONPATH=${HOME}/python/lib64/'${PYTHON_VERSION}'/site-packages:${PYTHONPATH}' >> ~/.bashrc | $ echo 'export PYTHONPATH=${HOME}/python/lib64/'${PYTHON_VERSION}'/site-packages:${PYTHONPATH}' >> ~/.bashrc | ||
+ | |||
$ source ~/.bashrc | $ source ~/.bashrc | ||
- | + | ||
- | ''' | + | '''6.''' Проверим что получилось: |
+ | $ python -V | ||
+ | Python 2.7.2 | ||
+ | |||
+ | $ env python -V | ||
+ | Python 2.7.2 | ||
+ | |||
+ | Если обе команды показали версию '''2.x''', то можно переходить к следующему шагу. | ||
+ | |||
+ | '''7.''' Создаем в корне домашнего каталога файл <code>.pydistutils.cfg</code> для настройки путей инсталляции модулей, следующей командой: | ||
$ cat > ~/.pydistutils.cfg <<END | $ cat > ~/.pydistutils.cfg <<END | ||
[install] | [install] | ||
Строка 34: | Строка 88: | ||
install_dir = \$HOME/python/lib64/${PYTHON_VERSION}/site-packages | install_dir = \$HOME/python/lib64/${PYTHON_VERSION}/site-packages | ||
END | END | ||
- | |||
- | '''4.''' Создаем различные каталоги: | ||
- | mkdir -p ~/src ~/python/lib64/${PYTHON_VERSION}/site-packages ~/django | ||
- | |||
- | '''5.''' Симлинк: | ||
- | cd ~/python; ln -s lib64 lib; cd | ||
=== Установка библиотек === | === Установка библиотек === | ||
'''1.''' Скачиваем и устанавливаем Django последней версии (другие версии для загрузки можно посмотреть тут https://www.djangoproject.com/download/): | '''1.''' Скачиваем и устанавливаем Django последней версии (другие версии для загрузки можно посмотреть тут https://www.djangoproject.com/download/): | ||
- | $ <nowiki>cd ~/src && lynx -source https://www.djangoproject.com/download/ | awk '/Latest release/ {url = gensub(/ | + | $ <nowiki>cd ~/src && lynx -source https://www.djangoproject.com/download/ \ |
+ | | awk '/Latest release/ {url = gensub(/.*>Django-(.*)\.tar\.gz.*/,"\\1",""); system ("wget -O Django.tar.gz https://www.djangoproject.com/download/"url"/tarball/")}'</nowiki> | ||
$ tar xvfz Django.tar.gz && cd Django-* | $ tar xvfz Django.tar.gz && cd Django-* | ||
$ python setup.py install | $ python setup.py install | ||
Строка 49: | Строка 98: | ||
'''2.''' Устанавливаем модуль flup, для работы Django в FastCGI режиме: | '''2.''' Устанавливаем модуль flup, для работы Django в FastCGI режиме: | ||
$ easy_install flup | $ easy_install flup | ||
+ | если установка заканчивается так: | ||
+ | error: None | ||
+ | то устанавливаем flup по прямой ссылке: | ||
+ | $ easy_install <nowiki>"http://pypi.python.org/packages/source/f/flup/flup-1.0.2.tar.gz#md5=24dad7edc5ada31dddd49456ee8d5254"</nowiki> | ||
+ | |||
+ | Если выбран '''python 3''' и при установке flup появляется ошибка: | ||
+ | File "setup.py", line 2, in <module> | ||
+ | File "/tmp/easy_install-cnsm9_/flup-1.0.2/ez_setup.py", line 98 | ||
+ | except pkg_resources.VersionConflict, e: | ||
+ | ^ | ||
+ | SyntaxError: invalid syntax | ||
+ | |||
+ | то необходимо скачать flup поддерживащий 3-ю версию python. Качаем с репозитория: | ||
+ | $ cd ~/src && hg clone <nowiki>http://hg.saddi.com/flup-py3.0</nowiki> | ||
+ | и устанавливаем: | ||
+ | $ cd flup-py3.0 && python setup.py install | ||
'''3.''' Устанавливаем модуль MySQL-python для работы с базой MySQL | '''3.''' Устанавливаем модуль MySQL-python для работы с базой MySQL | ||
$ easy_install MySQL-python | $ easy_install MySQL-python | ||
+ | |||
+ | '''Важное замечание.''' В случае использования '''Python 3''', модули для работы с MySQL, SQLite3 работать не будут. Поэтому единственным вариантом является использование базы данных PostgreSQL. Соответственно, для работы с этой базой ставим модуль: | ||
+ | $ easy_install psycopg2 | ||
=== Настройка приложения, запуск === | === Настройка приложения, запуск === | ||
- | + | '''1.''' Создаем проект | |
- | cd ~/django; django-admin.py startproject demo | + | $ cd ~/django; django-admin.py startproject demo |
- | + | '''2.''' Переходим в каталог с проектом и делаем базовую настройку: | |
- | cd demo | + | $ cd ~/django/demo/demo |
в файле <code>settings.py</code> редактируем строки в соответствие с параметрами вашей базы: | в файле <code>settings.py</code> редактируем строки в соответствие с параметрами вашей базы: | ||
DATABASES = { | DATABASES = { | ||
'default': { | 'default': { | ||
- | 'ENGINE': 'mysql', # Тип базы данных | + | 'ENGINE': 'django.db.backends.'''mysql'''', # Тип базы данных |
'NAME': <nowiki>''</nowiki>, # Название базы данных | 'NAME': <nowiki>''</nowiki>, # Название базы данных | ||
'USER': <nowiki>''</nowiki>, # Имя пользователя | 'USER': <nowiki>''</nowiki>, # Имя пользователя | ||
Строка 69: | Строка 137: | ||
} | } | ||
} | } | ||
- | |||
TIME_ZONE = 'Europe/Moscow' | TIME_ZONE = 'Europe/Moscow' | ||
LANGUAGE_CODE = 'ru-RU' | LANGUAGE_CODE = 'ru-RU' | ||
импорт данных в базу: | импорт данных в базу: | ||
- | python manage.py syncdb | + | $ cd ~/django/demo && LANG=ru_RU.utf8 python manage.py syncdb |
В процессе создания структуры базы будет предложено ввести параметры администратора, нужно согласиться (набрать yes) и ввести данные пользователя, который будет считаться администратором. | В процессе создания структуры базы будет предложено ввести параметры администратора, нужно согласиться (набрать yes) и ввести данные пользователя, который будет считаться администратором. | ||
- | + | '''3.''' Переходим в каталог ~/http и делаем настройку FastCGI wrapper'а и правил редирета mod_rewrite: | |
- | + | ||
+ | $ cat > ~/http/.htaccess <<END | ||
Options +FollowSymlinks | Options +FollowSymlinks | ||
Строка 85: | Строка 153: | ||
RewriteEngine On | RewriteEngine On | ||
RewriteCond %{REQUEST_FILENAME} !-f | RewriteCond %{REQUEST_FILENAME} !-f | ||
- | RewriteRule ^(.*)$ index.fcgi/$1 [QSA,L] | + | RewriteRule ^(.*)$ index.fcgi/\$1 [QSA,L] |
- | + | END | |
- | + | ||
- | Файл index.fcgi: | + | Файл index.fcgi ('''Не забудьте поменять <code>demo</code> на название своего проекта!''') : |
- | #!/usr/bin/ | + | $ cat > ~/http/index.fcgi <<END |
+ | #!/usr/bin/${PYTHON_VERSION} -OO | ||
import sys, os, site | import sys, os, site | ||
# Add a custom Python path. | # Add a custom Python path. | ||
- | PYTHON_CUSTOM_PATH = os.path.abspath (os.path.join (os.path.dirname (os.path.abspath (__file__)), \ | + | PYTHON_CUSTOM_PATH = os.path.abspath (os.path.join (os.path.dirname (os.path.abspath (__file__)), \\ |
- | '../python/lib64/ | + | '../python/lib64/${PYTHON_VERSION}/site-packages')) |
sys.path.insert (0, PYTHON_CUSTOM_PATH) | sys.path.insert (0, PYTHON_CUSTOM_PATH) | ||
site.addsitedir (PYTHON_CUSTOM_PATH) | site.addsitedir (PYTHON_CUSTOM_PATH) | ||
# Add a custom Python path. | # Add a custom Python path. | ||
- | PYTHON_CUSTOM_PATH = os.path.abspath (os.path.join (os.path.dirname (os.path.abspath (__file__)), \ | + | PYTHON_CUSTOM_PATH = os.path.abspath (os.path.join (os.path.dirname (os.path.abspath (__file__)), \\ |
- | '../django')) | + | '../django/'''demo'''')) |
sys.path.insert (0, PYTHON_CUSTOM_PATH) | sys.path.insert (0, PYTHON_CUSTOM_PATH) | ||
# Add a custom Python path. | # Add a custom Python path. | ||
- | os.chdir(os.path.join (PYTHON_CUSTOM_PATH, 'demo')) | + | os.chdir(os.path.join (PYTHON_CUSTOM_PATH, ''''demo'''')) |
- | os.environ['DJANGO_PROJECT'] = 'demo' | + | os.environ['DJANGO_PROJECT'] = ''''demo'''' |
- | os.environ['DJANGO_SETTINGS_MODULE'] = 'demo.settings' | + | os.environ['DJANGO_SETTINGS_MODULE'] = ''''demo'''.settings' |
from django.core.servers.fastcgi import runfastcgi | from django.core.servers.fastcgi import runfastcgi | ||
- | runfastcgi(method="prefork", | + | runfastcgi(method="prefork", minspare=1, maxspare=2, daemonize="false") |
+ | END | ||
- | + | '''4.''' Создаем симлинк для CSS, JavaScript: | |
- | cd ~/http; ln - | + | $ cd ~/http; ln -sf ../python/lib64/${PYTHON_VERSION}/site-packages/django/contrib/admin/static |
- | + | '''5.''' Выставляем права на выполнение: | |
- | chmod | + | $ chmod 755 ~/http/index.fcgi; rm -v ~/http/index.html |
- | Все. Можно попробовать | + | Все. Можно попробовать открыть сайт в обозревателе. |
+ | Демо версию Django, установленного на хостинге 1Gb.ru, можно посмотреть по этому адресу: http://test-l24-django.1gb.ru/ | ||
=== Перезагрузка === | === Перезагрузка === | ||
- | Если вы сделали какие-то изменения в проекте, то для того чтобы они вступили в силу необходимо перезапустить FastCGI приложение. Делается это так: | + | Если вы сделали какие-то изменения в проекте, то для того чтобы они вступили в силу, необходимо перезапустить FastCGI приложение. Делается это так: |
- | killall | + | killall index.fcgi |
- | Если не сработало - посмотрите список процессов командой top и найдите аналогичное. | + | Если не сработало - посмотрите список процессов командой top и найдите что-то аналогичное про .fcgi или python. |
=== Решение проблем === | === Решение проблем === | ||
Строка 157: | Строка 227: | ||
[[Категория:Программирование]] | [[Категория:Программирование]] | ||
[[Категория:Python]] | [[Категория:Python]] | ||
+ | [[Категория:Django]] |
Текущая версия
Эта инструкция устарела и больше не будет обновляться. |
Содержание |
[править] Общие сведения
Эта статья поможет понять, как можно быстро и просто установить фреймворк Django в режиме FastCGI на хостинге 1Gb.ru, а также как устанавливать собственные модули Python
[править] Быстрая установка
Внимание! Убедитесь, что ваш сайт работает под управлением web-сервера UNIX/Apache/FastCGI
, это можно сделать, а также при необходимости сменить тип сервера, в разделе личного кабинета /Управление сайтами и серверами/
.
Подключитесь к серверу по ssh, параметры подключения те же что для FTP выполните команды:
wget http://rekby.1gb.ru/distrib/django-install.sh bash django-install.sh
Скрипт django-install попросит ввести имя проекта django, затем нужно будет выбрать тип базы данных. Если вы выбираете mysql дальше потребуется ввести сервер базы данных (например mysql65.1gb.ru, имя базы данных и пароль (имя пользователя вводить не надо - оно совпадает с именем базы и подставится автоматически).
Дальше скрипт будет устанавливать нужные модули и настраивать окружение сервера на работу django, после завершения настройки нужно будет ответить на обычные вопросы для нового django-проекта - создавать ли пользователя с правами администратора (введите yes), дальше введите имя пользователя (admin), ваш email, пароль (нужно придумать самостоятельно) и еще раз пароль.
[править] Пошаговая установка
Данная статья предназначена для технических специалистов. Вы должны знать основы программирования, уметь пользоваться консольными программами и официальной документацией от разработчиков. В связи с тем, что на сервере могут обновиться версии программ, измениться конфигурация приложений, документация в статье может не соответствовать действительности, поэтому вы должны быть готовы разобраться с возможными проблемами самостоятельно или с помощью специалистов из платной поддержки http://1gbsup.ru/paidsu/, обычная поддержка хостинга не оказывает консультации по установке и отладке скриптов. |
[править] Подготовка окружения
Внимание! Убедитесь, что ваш сайт работает под управлением web-сервера UNIX/Apache/FastCGI
, это можно сделать, а также при необходимости сменить тип сервера, в разделе личного кабинета /Управление сайтами и серверами/
.
1. На хостинговом сервере может быть установлено несколько версей Python, но поскольку stable версия Django работает с версией Python до 2.7 включительно и не работает с Python 3, то нам необходимо определить для себя версию Python по умолчанию.
Сделаем это через псевдонимы команд, описываемые в файле ~/.bashrc
, и симлинк. Выполнив команду:
$ export PYTHON_VERSION=`eselect python list --python2 | awk '/\*$/ {print $2}'`; echo ${PYTHON_VERSION}
мы увидим какая версия 2-ой ветки Python установлена на сервере. Ее мы и будем использовать.
Определим эту версию в качестве версии по умолчанию:
$ grep -q "=${PYTHON_VERSION}" ~/.bashrc || ( [ -f "/usr/bin/easy_install-${PYTHON_VERSION}" ] \ && sed -i "/happen/a alias python=${PYTHON_VERSION}\nalias easy_install=easy_install-${PYTHON_VERSION}" ~/.bashrc \ || sed -i "/happen/a alias python=${PYTHON_VERSION}\nalias easy_install=easy_install-$(echo ${PYTHON_VERSION} | tr -d python)" ~/.bashrc )
$ source ~/.bashrc
2. Создаем необходимые каталоги:
$ mkdir -p ~/src ~/python/bin ~/python/lib64/${PYTHON_VERSION}/site-packages ~/django
3. Симлинк на lib64:
$ cd ~/python; ln -s lib64 lib; cd
4. Симлинк на нужную нам версию python:
$ cd ~/python/bin && cp -a /usr/bin/${PYTHON_VERSION} . && ln -sf ${PYTHON_VERSION} python
5. Для настройки переменных PATH
, PYTHONPATH
в ваш ~/.bashrc
добавьте соответствующие строки командами:
$ echo 'export PATH=${HOME}/python/bin:${HOME}/python/lib64/'${PYTHON_VERSION}'/site-packages:${PATH}' >> ~/.bashrc
$ echo 'export PYTHONPATH=${HOME}/python/lib64/'${PYTHON_VERSION}'/site-packages:${PYTHONPATH}' >> ~/.bashrc
$ source ~/.bashrc
6. Проверим что получилось:
$ python -V Python 2.7.2
$ env python -V Python 2.7.2
Если обе команды показали версию 2.x, то можно переходить к следующему шагу.
7. Создаем в корне домашнего каталога файл .pydistutils.cfg
для настройки путей инсталляции модулей, следующей командой:
$ cat > ~/.pydistutils.cfg <<END [install] prefix = \$HOME/python [easy_install] install_dir = \$HOME/python/lib64/${PYTHON_VERSION}/site-packages END
[править] Установка библиотек
1. Скачиваем и устанавливаем Django последней версии (другие версии для загрузки можно посмотреть тут https://www.djangoproject.com/download/):
$ cd ~/src && lynx -source https://www.djangoproject.com/download/ \ | awk '/Latest release/ {url = gensub(/.*>Django-(.*)\.tar\.gz.*/,"\\1",""); system ("wget -O Django.tar.gz https://www.djangoproject.com/download/"url"/tarball/")}' $ tar xvfz Django.tar.gz && cd Django-* $ python setup.py install
2. Устанавливаем модуль flup, для работы Django в FastCGI режиме:
$ easy_install flup
если установка заканчивается так:
error: None
то устанавливаем flup по прямой ссылке:
$ easy_install "http://pypi.python.org/packages/source/f/flup/flup-1.0.2.tar.gz#md5=24dad7edc5ada31dddd49456ee8d5254"
Если выбран python 3 и при установке flup появляется ошибка:
File "setup.py", line 2, in <module> File "/tmp/easy_install-cnsm9_/flup-1.0.2/ez_setup.py", line 98 except pkg_resources.VersionConflict, e: ^ SyntaxError: invalid syntax
то необходимо скачать flup поддерживащий 3-ю версию python. Качаем с репозитория:
$ cd ~/src && hg clone http://hg.saddi.com/flup-py3.0
и устанавливаем:
$ cd flup-py3.0 && python setup.py install
3. Устанавливаем модуль MySQL-python для работы с базой MySQL
$ easy_install MySQL-python
Важное замечание. В случае использования Python 3, модули для работы с MySQL, SQLite3 работать не будут. Поэтому единственным вариантом является использование базы данных PostgreSQL. Соответственно, для работы с этой базой ставим модуль:
$ easy_install psycopg2
[править] Настройка приложения, запуск
1. Создаем проект
$ cd ~/django; django-admin.py startproject demo
2. Переходим в каталог с проектом и делаем базовую настройку:
$ cd ~/django/demo/demo
в файле settings.py
редактируем строки в соответствие с параметрами вашей базы:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # Тип базы данных 'NAME': '', # Название базы данных 'USER': '', # Имя пользователя 'PASSWORD': '', # Пароль 'HOST': '', # Сервер базы данных (например mysql51.1gb.ru) 'PORT': '', # Порт для подключения к базе (оставить пустым) } }
TIME_ZONE = 'Europe/Moscow' LANGUAGE_CODE = 'ru-RU'
импорт данных в базу:
$ cd ~/django/demo && LANG=ru_RU.utf8 python manage.py syncdb
В процессе создания структуры базы будет предложено ввести параметры администратора, нужно согласиться (набрать yes) и ввести данные пользователя, который будет считаться администратором.
3. Переходим в каталог ~/http и делаем настройку FastCGI wrapper'а и правил редирета mod_rewrite:
$ cat > ~/http/.htaccess <<END Options +FollowSymlinks AddHandler fcgid-script .fcgi RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.fcgi/\$1 [QSA,L] END
Файл index.fcgi (Не забудьте поменять demo
на название своего проекта!) :
$ cat > ~/http/index.fcgi <<END #!/usr/bin/${PYTHON_VERSION} -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/${PYTHON_VERSION}/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/demo')) 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", minspare=1, maxspare=2, daemonize="false") END
4. Создаем симлинк для CSS, JavaScript:
$ cd ~/http; ln -sf ../python/lib64/${PYTHON_VERSION}/site-packages/django/contrib/admin/static
5. Выставляем права на выполнение:
$ chmod 755 ~/http/index.fcgi; rm -v ~/http/index.html
Все. Можно попробовать открыть сайт в обозревателе. Демо версию Django, установленного на хостинге 1Gb.ru, можно посмотреть по этому адресу: http://test-l24-django.1gb.ru/
[править] Перезагрузка
Если вы сделали какие-то изменения в проекте, то для того чтобы они вступили в силу, необходимо перезапустить FastCGI приложение. Делается это так:
killall index.fcgi
Если не сработало - посмотрите список процессов командой top и найдите что-то аналогичное про .fcgi или python.
[править] Решение проблем
- Сайт не запускается, 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 из файла index.fcgi
такой командой:
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: http://www.example.com/ [Fri Mar 04 18:49:21 2011] [error] [client 195.250.16.6] Premature end of script headers: index.fcgi, referer: http://www.example.com/
Причина этого заключается в том, что не указаны либо указаны неправильно пути к статическим файлам (картинки, стили, JS-скрипты) и вместо того, чтобы сервер Apache отдавал их напрямую, отдача их в обозреватель происходит через обработку запроса Django-приложением. Это порождает большое количество процессов и, как следствие, превышение системных лимитов.
Решение заключается в правильном определении переменных:
MEDIA_ROOT = MEDIA_URL = ADMIN_MEDIA_PREFIX =
в файле settings.py
вашего приложения.