Django - быстрый старт (устарело)
Материал из 1GbWiki.
Версия 17:55, 31 мая 2010 (править) 77.239.235.129 (Обсуждение) ← К предыдущему изменению |
Версия 20:02, 31 мая 2010 (править) (отменить) Dmih (Обсуждение | вклад) м (Правки 77.239.235.129 (обсуждение) откачены к версии NovaCxarmulo) К следующему изменению → |
||
Строка 1: | Строка 1: | ||
- | + | == Общие сведения == | |
- | + | Эта статья поможет понять, как можно быстро и просто установить фреймворк [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, это можно сделать, а также при необходимости сменить тип сервера, в разделе личного кабинета /Управление сайтами и серверами/. | |
- | http://www. | + | |
- | + | Везде, где написано python2.6 нужно подставлять версию python, работающую на вашем сервере (первые два числа) | |
- | + | ||
- | + | python --version | |
- | + | ||
- | + | * Создаем в корне домашнего каталога файл <code>.pydistutils.cfg</code> для настройки путей инсталляции модулей: | |
- | + | [install] | |
+ | prefix = $HOME/python | ||
+ | |||
+ | [easy_install] | ||
+ | install_dir = $HOME/python/lib64/python2.6/site-packages | ||
+ | * Для настройки переменных <code>PATH</code>, <code>PYTHONPATH</code> добавьте строки: | ||
+ | export PATH=$PATH:$HOME/python/bin:$HOME/python/lib64/python2.6/site-packages | ||
+ | export PYTHONPATH=$PYTHONPATH:$HOME/python/lib64/python2.6/site-packages | ||
+ | в ваш <code>~/.bashrc</code> | ||
+ | |||
+ | * Выполняем команду: | ||
+ | source ~/.bashrc | ||
+ | для того, чтобы сделанные изменения вступили в силу. | ||
+ | |||
+ | * Создаем различные каталоги: | ||
+ | mkdir -p ~/src ~/python/lib64/python2.6/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/python2.6/site-packages/django/contrib/admin/media | ||
+ | |||
+ | Все. Можно попробовать обратиться по HTTP к вашему сайту, вы должны увидеть примерно это: http://django-demo.1gb.ru/ | ||
+ | |||
+ | === Перезагрузка === | ||
+ | Если вы сделали какие-то изменения в проекте, то для того чтобы они вступили в силу необходимо перезапустить FastCGI приложение. Делается это так: | ||
+ | killall python2.6 | ||
+ | |||
+ | Если не сработало - посмотрите список процессов командой top и найдите аналогичное | ||
+ | |||
+ | == См. также == | ||
+ | * [[Юникс шелл]] | ||
+ | == Ссылки == | ||
+ | * [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]] |
Версия 20:02, 31 мая 2010
Содержание |
Общие сведения
Эта статья поможет понять, как можно быстро и просто установить фреймворк Django в режиме FastCGI на хостинге 1Gb.ru, а также как устанавливать собственные модули Python
Установка
Подготовка окружения
Внимание! Убедитесь, что ваш сайт работает под управлением web-сервера UNIX/Apache/FastCGI, это можно сделать, а также при необходимости сменить тип сервера, в разделе личного кабинета /Управление сайтами и серверами/.
Везде, где написано python2.6 нужно подставлять версию python, работающую на вашем сервере (первые два числа)
python --version
- Создаем в корне домашнего каталога файл
.pydistutils.cfg
для настройки путей инсталляции модулей:
[install] prefix = $HOME/python [easy_install] install_dir = $HOME/python/lib64/python2.6/site-packages
- Для настройки переменных
PATH
,PYTHONPATH
добавьте строки:
export PATH=$PATH:$HOME/python/bin:$HOME/python/lib64/python2.6/site-packages export PYTHONPATH=$PYTHONPATH:$HOME/python/lib64/python2.6/site-packages
в ваш ~/.bashrc
- Выполняем команду:
source ~/.bashrc
для того, чтобы сделанные изменения вступили в силу.
- Создаем различные каталоги:
mkdir -p ~/src ~/python/lib64/python2.6/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
в файле settings.py
редактируем строки в соответствие с параметрами вашей базы:
DATABASES = { 'default': { 'ENGINE': 'mysql', # Тип базы данных 'NAME': '', # Название базы данных 'USER': '', # Имя пользователя 'PASSWORD': '', # Пароль 'HOST': '', # Сервер базы данных (например mysql51.1gb.ru) 'PORT': '', # Порт для подключения к базе (оставить пустым) } }
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]
Не забудьте поменять demo
на название своего проекта!
Файл 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/python2.6/site-packages/django/contrib/admin/media
Все. Можно попробовать обратиться по HTTP к вашему сайту, вы должны увидеть примерно это: http://django-demo.1gb.ru/
Перезагрузка
Если вы сделали какие-то изменения в проекте, то для того чтобы они вступили в силу необходимо перезапустить FastCGI приложение. Делается это так:
killall python2.6
Если не сработало - посмотрите список процессов командой top и найдите аналогичное