rudyryk ([info]rudyryk) wrote in [info]ru_django,
@ 2008-06-23 01:39:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Запуск Django на .masterhost
Django может работать на виртуальном хостинге .masterhost. Проверено!

На самом деле, .masterhost -- не самый хороший вариант, если требуется делать проект на фреймворке Django. Тем не менее, они "дружат", пусть и с небольшими ограничениями. Часть из них связана просто с удобством, часть -- со скоростью.

Итак, что требуется для Django:
* Pyhton
* Библиотека для работы с базой данных

Что нужно дополнительно, в идеале:
* FastCGI/mod_python -- Django не поддерживает официально CGI, нужно хитрить
* SVN -- для обновлений фреймворка
* библиотека SQLite -- когда нужно что-то попроще, и MySQL избыточна

На .masterhost почти ничего из этого нет :))) Но, как оказалось, всё необходимое можно установить самому.

Коротко, результаты:
* требуется установка Python в домашнюю папку -- это совсем не плохо, можно поставить нужную версию
* Django запускается через CGI -- да, жизнь -- штука не простая :)
* можно использовать MySQL, подключить SQLite мне не удалось

Дальше идет пошаговое описание в двух частях, что и как делается. Решение, которое я применил, основано на этой статье: http://wiki.dreamhost.com/Django. Некоторые важные детали реализованы по-другому. Например, определение переменных среды CFLAGS и CXXFLAGS, без них не получалось собрать библиотеку MySQL-python. Так же, не удалось собрать Python-2.5.2, но Python-2.5.1 вполне меня устроил.

Установка делается из shell'а. Короче, говоря -- вот.

Часть 1. Установка Python, Django


1. Создать директории для установки программ

Для "моих" программ я сделал структуру директорий в домашней директории. Получается, что '~/run' это аналогия корневой директории '/usr'. Так же, я завел директорию для проектов Django.

В директорию '~/soft' будут скачиваться дистрибутивы.

mkdir ~/run
mkdir ~/run/lib
mkdir ~/run/bin
mkdir ~/django_projects
mkdir ~/soft


2. Сконфигурировать переменные среды

Нужно добавить созданные директории в пути. А так же, подключить '~/run/lib' к С/C++ линкеру, чтобы он не забывать искать там библиотеки.

Для этого нужно создать или добавить в файл ~/.bash_profile:




3. Установить Python

Скачать Python 2.5.1:
cd ~/soft
wget http://python.org/ftp/python/2.5.1/Python-2.5.1.tgz


Распаковать:
tar -xzvf Python-2.5.1.tgz


Скомпилировать и установить:
cd Python-2.5.1
./configure --prefix ${RUN} --enable-shared
make
make install
install -c -m 644 ./libpython2.5.a ${RUN}/lib
install -c -m 755 ./libpython2.5.so ${RUN}/lib
install -c -m 755 ./libpython2.5.so.1.0 ${RUN}/lib


4. Установить необходимые для Django библиотеки:

Библиотека MySQL-python:
cd ~/soft
wget http://downloads.sourceforge.net/mysql-python/MySQL-python-1.2.2.tar.gz
tar -xzvf MySQL-python-1.2.2.tar.gz
cd MySQL-python-1.2.2
python setup.py build
python setup.py install


Библиотека Python Imaging Library:
cd ~/soft
wget http://effbot.org/downloads/Imaging-1.1.6.tar.gz
tar -xzvf Imaging-1.1.6.tar.gz
cd Imaging-1.1.6
python setup.py build
python setup.py install


5. Установить Django:

Последний официальный релиз использовать не рекомендуется, если есть возможность использовать версию новее, из репозитория. Я выложил архив текущей на сегодняшний день ревизии (7724).

cd ~/soft
wget http://my-shared.info/rudyryk/files/django_svn.tar.gz
tar -xzvf django_svn.tar.gz
cd django_svn
python setup.py install
chmod +x $RUN/lib/python2.5/site-packages/django/bin/*.py


Часть 2. Тестовый запуск


1. Создать проект

cd ~/django_projects
django-admin.py startproject mastertest
chmod +x manage.py


2. Настроить CGI-диспетчер для проекта

Нужно поместить скрипт django.cgi в папку сайта 'cgi-bin' и разрешить скрипту запуск. Для этого в папке 'cgi-bin' запустить:

wget http://my-shared.info/rudyryk/files/django_mastertest/django_cgi.txt
mv django_cgi.txt django.cgi
chmod +x django.cgi


Можно проверить, все ли хорошо, зайдя по адресу:
http://__my_site__/cgi-bin/django.cgi

Должно появиться приветсвие от Django, как для обычного пустого проекта.

Теперь можно настроить файл .htaccess.

В директории 'www' нужно создать файл .htaccess с текстом:



Для проверки нужно набрать адрес:
http://__my_site_

Приветствие от Django теперь должно быть и здесь.


Всё :) Можно работать дальше, как с обычном Django.



(Post a new comment)


[info]_nik_
2008-06-22 10:27 pm UTC (link)
А откуда такая любовь к кактусу?

(Reply to this)(Thread)


[info]uznick
2008-06-22 10:28 pm UTC (link)
А есть достойные отечественные виртуальные хостинги, на которых Django бегает без плясок с бубном?

(Reply to this)(Parent)(Thread)


[info]_nik_
2008-06-22 10:33 pm UTC (link)
А почему бы именно отечественные? Только не говорите, что django-разработчик не умеет английского или ему позарез необходим пинг меньше полусотни.

(Reply to this)(Parent)(Thread)


[info]rudyryk
2008-06-22 10:35 pm UTC (link)
_nik_, это оффтоп

пост -- не о выборе хостера. пост -- о конкретном решении, конкретной задачи, на одном конкретном хостере. может просто кому-то это пригодится, потому что будет похожая задача. вот и все.

прошу не флудить.

(Reply to this)(Parent)


[info]uznick
2008-06-22 10:36 pm UTC (link)
Не скажу. А вот русскоязычным клиентам django-разработчика будет достатоно трудно объяснить, почему что денежки нужно переводить на какой-то там иностранный хостинг, увы. И в их поддержку, если что, они сами повонить/написать могут и не осилить.

(Reply to this)(Parent)(Thread)


[info]_nik_
2008-06-22 10:45 pm UTC (link)
От оно как. Про малообеспеченных русскоязычных клиентов я не подумал, да.

(Reply to this)(Parent)(Thread)


[info]uznick
2008-06-22 10:47 pm UTC (link)
То есть, брать забугорный хостинг или не брать это, по-вашему, сугубо вопрос обеспеченности?

Интересная логическая цепочка.

(Reply to this)(Parent)(Thread)


[info]_nik_
2008-06-22 11:01 pm UTC (link)
> То есть, брать забугорный хостинг или не брать это,
> по-вашему, сугубо вопрос обеспеченности?

Не то, чтобы сугубо. Вопрос обеспеченности, это почему нельзя взять, скажем, VPS, дедик, колокейшн (в порядке повышения обеспеченности). А также по крайней мере одного part-time webmaster`а.

А так, забугорные хостинги обычно существенно дешевле наших. И деньги на них, кстати, отправляются практически так же, как и на наши — списываются с какой mastercard virtual.

(Reply to this)(Parent)


[info]buriy
2008-06-23 03:55 am UTC (link)
1) русский хостинг дороже раза в два аналогичного по возможностям буржуйского, поэтому лучше зарубежные, но
2) время отклика русского хостинга для сайтов, ориентирующихся на русскую аудиторию, гораздо меньше.

(Reply to this)(Parent)(Thread)


[info]_nik_
2008-06-23 08:33 am UTC (link)
> 2) время отклика русского хостинга для сайтов, ориентирующихся на русскую аудиторию, гораздо меньше.

На самом, деле «гораздо» это разве что ежели сравнивать российские хостинги с заокеанскими. Но существует же ещё и европа.

Скажем, если сравнивать пинг до моего хостинга в Москве (40ms) и до моего хостинга в германии (65ms) то сия разница практически ничтожна, особенно учитывая, что в Москве у меня нагруженный и потому не так, чтобы шибко шустрый шаред с сайтом на CGI, а в германии зато весьма такой быстрый выделенный сервер с сайтом на mod_wsgi.
Собственно, я не замечаю особых задержек и при хостинге сайтов в канаде (пинг от 200ms), посему прошу таки сообщить для какого типа проектов «позарез необходим пинг меньше полусотни».

(Reply to this)(Parent)(Thread)


[info]buriy
2008-06-23 08:40 am UTC (link)
например, для тех, где есть ajax с autocomplete ;)

(Reply to this)(Parent)


[info]l0rda
2008-06-28 08:10 am UTC (link)
у нас бегает отлично и мы всячески это поощряем 8)
ru.fedora-hosting.com

В следующем месяце мы запускаем новую версию биллинга и панели управления, интерфейс которой, кстати говоря, полностью написан на джанго

(Reply to this)(Parent)


[info]rudyryk
2008-06-22 10:30 pm UTC (link)
просто заплочено и уже есть оно :)) а почему такие вопросы? :))))

(Reply to this)(Parent)(Thread)


[info]_nik_
2008-06-22 10:35 pm UTC (link)
Да удивительно просто. На нормальных хостингах джанга парой кликов ставится, а тут вон какой мануал пройти необходимо за ради всего лишь CGI.

(Reply to this)(Parent)(Thread)


[info]uznick
2008-06-22 10:38 pm UTC (link)
Да ладно, автор поста молодец, такой путь прошёл и, причём, успешно.

И что рассказал как, тоже правильно.

(Reply to this)(Parent)


[info]rudyryk
2008-06-22 10:40 pm UTC (link)
предлагаю тебе написать свой, отдельный пост о нормальных хостингах, если действительно тебя это волнует :))

для меня, например, Django -- только один из факторов, есть много других.

(Reply to this)(Parent)


[info]ravli
2008-06-22 11:03 pm UTC (link)
на spaceweb.ru через mod_python работает

оффтоп: хотя spaceweb еще хуже МХ :)

(Reply to this)(Thread)


[info]partweb
2008-08-04 03:03 pm UTC (link)
без всяких ковыряний конфига и писем в саппорт работает?

(Reply to this)(Parent)(Thread)


[info]ravli
2008-08-04 03:13 pm UTC (link)
От сервера зависит, вроде бы. На одном аккаунте они там чего-то подкручивали по запросу в саппорт, на другом из коробки работало, ЕМНИП. Ну и .htaccess написал, не знаю, можно ли его считать конфигом :)

(Reply to this)(Parent)(Thread)


[info]partweb
2008-08-04 03:18 pm UTC (link)
а на каком тарифе? мне в скорости самому придется на спейсвебе поднимать джанго-прожект...паходу засадно буит:)

(Reply to this)(Parent)(Thread)


[info]ravli
2008-08-04 03:37 pm UTC (link)
Один аккаунт - старый Real. На новом SW-1 поднимается, но там с БД засада (sqlite из коробки с Джанго не работает, а больше нету ничего), на SW-2 нормально все.

(Reply to this)(Parent)(Thread)


[info]ji6papuah
2008-08-30 04:14 pm UTC (link)
На новых серваках Джанго "искаропки".
А на старых да, приходится ковыряться.

(Reply to this)(Parent)

appengine?
(Anonymous)
2008-06-25 04:02 pm UTC (link)
один минус -- свалить от них будет трудно

(Reply to this)


[info]kost_bebix
2008-06-28 06:33 am UTC (link)
Вот хорошие люди: http://tophost.com.ua/. Почитайте на главной про питон :-)

(Reply to this)


(Anonymous)
2008-06-28 12:04 pm UTC (link)
Отличная статья спасибо. Вопрос автору, а насколько примерно скорость ниже есть ставить как cgi (субьективно) ?


p.s. Почитал камменты - трындец у народа с пониманием. Вы действительно думаете, что автор не знает о куче хостеров с джанго в пару кликов ? ... Типа умнее чтоли или чего ?

(Reply to this)(Thread)


[info]imil
2008-06-28 07:42 pm UTC (link)
Вы хотите, чтобы в комментариях к статье "как забить гвоздь отверткой" никто не предложил взять молоток? :)

(Reply to this)(Parent)


[info]the_very
2008-06-28 04:50 pm UTC (link)
офф: как всё сложно с джангой по сравнению с грельсами ;)

(Reply to this)

спасибо!!!
[info]notaden
2008-11-04 09:02 am UTC (link)
.

(Reply to this)


Create an Account
Forgot your login?
Login w/ OpenID
English • Español • Deutsch • Русский…