Django хостинг
|
Здесь описано как дистанционно установить Django на хостинге, позволяющем это сделать. Я размещаю свои сайты на Django, в том числе этот, здесь. Это — виртуальный выделенный сервер (VDS) по абсолютно виртуальной цене от 5 уе в месяц. На нем можно разместить любой сайт, требующий нестандартного программного обеспечения, в том числе Django сайт. Что такое VDS? VDS — это практически полноценный выделенный сервер, на котором вы — полный хозяин: вы можете установить или удалить любое программное обеспечение, вы можете конфигурировать все, что угодно, под свои нужды, вы можете перезагружать сервер или отключить его совсем и установить другой. Root доступ, отличная панель управления, возможность не только разместить множество собственных сайтов, но и перепродавать услуги хостинга, техническая поддержка. При этом ваш сервер не является отдельной физической машиной, но реализован программно, разделяя один физический компьютер с рядом других таких же виртуальных выделенных серверов. Ограничения данной схемы: вы имеете в распоряжении не все ресурсы, имеющиеся в наличии, а только столько, сколько предусмотрено вашим тарифным планом. Если ваш проект потребует больше ресурсов, нужно подключить другой тарифный план. Делается это за несколько секунд из панели управления и делать это можно ежедневно. Скажем, если на младших тарифных планах не проходит компиляция какой-нибудь толстой штуковины вроде Sphinx, нужно просто включить максимальный тарифный план, установить все, что нужно, а на следующий день переключиться обратно. Есть также полезная опция "VDS-Анлим", которая снимает ограничения по ресурсам при необходимости и при наличии этих самых свободных ресурсов. Превышение сверх оплаченноой в абонентской плате квоты просто будет добавляться в счет. Преимущества VDS: вместо сотен $$$ (аренда выделенного сервера) вы платите в ДЕСЯТКИ раз меньше и имеете полную свободу действий в ваших web-экспериментах. Цена младшего тарифного плана около 5 уе. Для ресурсоемких проектов та же компания предлагает хостинг посерьезнее. Основные отличия от предыдущего хостинга заключаются в бОльшем просторе для роста и возможности иметь за отдельную плату профессиональное администрирование вашего виртуально сервера. Тарифные планы VDS здесь начинаются с 20 уе, т.е. как раз там, где кончаются VDS предложения firstvds, рассмотренные выше. Обычный виртуальный хостинг также предоставляется и стоит от 4 уе в месяц. И уж совсем роскошное предложение - выделенные сервера от 69 уе в месяц. Обратите внимание: по этой ссылке вы получите немедленно, БЕЗ ОПЛАТЫ, полнофункциональный VDS на 3 часа для тестирования. Если вас что-то не устроит, вы не потеряете ни копейки. Да, еще вы получите скидку 25% при заказе хостинга, т.к. приведенные ссылки - партнёрские. Установка Django + modpythonДалее описан процесс уcтановки Django по SSH на вышеуказанном хостинге. Надеюсь, эта шпаргалка поможет вам устроиться на новом месте быстрее.Наша цель — запустить джанго-проект на freeBSD + Apache + modpython + MySQL + Django SVN (текущая версия из транка).
Для работы необходим ssh клиент. Я использую putty. Установка SubversionSubversion — программа контроля версий. С её помощью мы далее установим Django и его модули и всегда сможем одной командой обновить их до последних версий.
Ставим из портов. cd /usr/ports/devel/subversion make install cleanОтмечаем только эти 2 опции: [X] MOD_DAV_SVN mod_dav_svn module for Apache 2.X [X] NEON WebDAV/Delta-V repository access module На втором появившемся экране настроек жмем "cancel". Установка Djangocd /usr/local/lib/python2.5/site-packages svn co http://code.djangoproject.com/svn/django/trunk/ django-trunkСоздаем символическую ссылку, указывающую, что /django на самом деле нужно искать в /django-trunk/django ln -s django-trunk/django /usr/local/lib/python2.5/site-packages/djangoДалее "подкладываем" ссылку на django-admin.py туда, где система может ее найти. cd /usr/local/bin ln -s /usr/local/lib/python2.5/site-packages/django-trunk/django/bin/django-admin.py django-admin.pyЕсли вы ошиблись при создании ссылки и хотите, чтобы новая ссылка перезаписала уже существующую, используйте ключ f: ln -fs ... Установка mysql-pythonmysql-python — драйвер, реализующий доступ к MySQL из python.Ставим из портов. cd /usr/ports/databases/py-MySQLdb make install cleanОтмечаем единственную опцию [X] MYSQLCLIENT_R Use libmysqlclient_r (thread safe) Установка mod_pythonmod_python — модуль python для ApacheСтавим из портов. cd /usr/ports/www/mod_python3 make install clean Создание папки для наших django проектовДжанго-код рекомендуется хранить в местах, недоступных по http. В остальном место, куда вы его положите, принципиального значения не имеет. Предположим, ваш пользовательский эккаунт называется myname (существует пользователь myname).cd /home/myname/data/ mkdir django-appsСоздаем symlink, чтобы иметь отсюда доступ к django: cd django-apps ln -s /usr/local/lib/python2.5/site-packages/django-trunk/django djangoпроверяем, доступен ли здесь django: python import djangoесли сообщений об ошибке не появилось, выходим из коммандной оболочки python коммандой quit() Если django недоступен, проверяем, имеется ли в папке django-apps ссылка django и действительно ли она ведет туда, куда мы ожидаем. Например, щелкните по ссылке в ftp — если появится ссобщение об ошибке ("файл не найден"), это значит, что ссылка неверна. В WinSCP можно получить окно редактирования символической ссылки, выделив ее и нажав Alt+F6. Создание django проектаВ папке django-apps создаем папку проекта (например, myproject1) и переносим туда по FTP все имеющиеся у нас файлы и папки из папки нашего django-проекта.mkdir myproject1В эту папку мы переносим наши папки приложений, файлы urls.py, settings.py и т.д.
Чистый проект можно содать командой python django-admin.py startproject myproject2Возможная ошибка: No module named django.core Решение: возвращаемя к пункту "Если django недоступен" python manage.py syncdb Установка модулей Djangocd /home/myname/data/django-apps/myproject1/ svn co http://откуда ставить модульи т.д. Установка memcachedmemcached реализует кэширование страниц. Установка этого ПО опциональна и не влияет на работоспособность всего остального.Ставим из портов. cd /usr/ports/databases/memcached make install cleanОпцию REPCACHED не отмечаем Установка python библиотеки для memcachedcd /usr/ports/databases/py-memcached make install cleanПодробнее о конфигурировании и использовании Django + memcached см. на сайте Django. Настройка settings.pyДля добавления пути к проекту в system path включите в начале settings.py
import sys
sys.path.append('/home/myname/data/django-apps/myproject1')
Не забудьте, что данные доступа к БД на продакшн сервере скорее всего не такие, как на
тестовом сервере.После отладки проекта нужно будет отключить вывод подробных сообщений об ошибках: DEBUG = FalseНастройте пути к медиа файлам (своим и админки Джанго): MEDIA_ROOT = '/home/myname/data/www/mydomain.ru/files/' MEDIA_URL = 'http://mydomain.ru/files/' ADMIN_MEDIA_PREFIX = '/media/'Предполагается, что пути к медийным файлам (которые обрабатываются сервером, а не django), указаны в вашем коде как "/files/myimage.jpg", "/files/js/myscript.js" и т.п.
Теперь по URL Теперь нужно создать папку files /home/myname/data/www/mydomain.ru/files и положить туда по FTP свои файлы и папки. Чтобы админка django нашла свои медийные файлы, нужно будет создать ссылку, связывающую путь /media в URL файлов с их реальным расположением в папке django: cd /home/myname/data/www/mydomain.ru ln -s /usr/local/lib/python2.5/site-packages/django-trunk/django/contrib/admin/media media Настройка httpd.confhttpd.conf — конфигурационный файл Apache, путь к нему:/usr/local/etc/apache22/httpd.conf Рекомендую перед внесением изменений в httpd.conf сохранить его копию в тихом теплом месте. Если вы в нем допустите ошибку, Apache не будет работать и вам пригодится начальная копия для восстановления порядка. Кстати, ISPmanager (панель управления) позволяет редактировать любые файлы, в том числе этот.
Итак, вносим в httpd.conf команду загрузки мод-питона: LoadModule python_module libexec/apache22/mod_python.soДалее дополняем определение вашего виртуального хоста так, чтобы получилось похоже на это:
<VirtualHost 11.222.3.44:80>
ServerName mydomain.ru
DocumentRoot /home/myname/data/www/mydomain.ru
SuexecUserGroup myname myname
CustomLog /home/httpd-logs/mydomain.ru.access.log combined
ErrorLog /home/httpd-logs/mydomain.ru.com.error.log
ServerAlias www.mydomain.ru
ServerAdmin webmaster@mydomain.ru
AddDefaultCharset utf8
......
#Этот блок определяет, что все url (/) обрабатываются mod-python,
#устанавливает корневую папку нашего джанго-проекта,
#включает вывод сообщений об ошибках mod-python и его рестарт при рестарте сервера,
#добавляет пути к папке наших проектов и к Django в PythonPath
<Location "/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE myproject1.settings
PythonOption django.root /myproject1
PythonAutoReload On
PythonDebug On
PythonPath "['/home/myname/data/django-apps', '/usr/local/lib/python2.5/site-packages/django'] + sys.path"
</Location>
#Этот блок определяет, что все пути, начинающиеся на /files, обрабатываются сервером.
#В папке mydomain.ru/files/... хранятся все наши медиа файлы - картинки, css, js, pdf...
<Location "/files">
SetHandler None
</Location>
#Этот блок определяет, что все пути, начинающиеся на /media, обрабатываются сервером.
#В папке mydomain.ru/media/... как бы хранятся медиа файлы джанго-админ интерфейса.
#На самом деле нет никакой надобности куда-то переносить сами файлы, достаточно
#создать в mydomain.ru/ ссылку media, указывающую на действительное расположение файлов.
<Location "/media">
SetHandler None
</Location>
#этот блок определяет, что все пути, кончающиеся .jpg .gif и т.д., обрабатываются сервером.
<LocationMatch "\.(jpg|gif|pdf|zip|css|js|ico)$">
SetHandler None
</LocationMatch>
</VirtualHost>
Перезапускаем сервер (это можно сделать из панели управления).
Если после перезагрузки в списке сервисов (см. в панели управления) нет
ни одного процесса httpd — проверяем, что мы написали в httpd.conf и исправляем ошибки.
Если httpd (один или несколько) есть в списке процессов — сервер работает нормально.
Не забывайте, что после любых изменений в httpd.conf или settings.py сервер необходимо перезагрузить. Осталось набрать в браузере URL вашего сайта и посмотреть, что из всего этого получилось...
Если с первого раза не все идет гладко — не расстаивайтесь, внимательно пройдитесь
по всем моментам процесса настройки и разберитесь, что вы пропустили. Зайдите по FTP и посмотрите,
действительно ли все созданные вами папки и ссылки находятся там, где им предполагается быть. |

