Установка Django на BlueHost
BlueHost – хороший хостинг-провайдер. Хочет заметно меньше денег, предоставляет заметно больше всего за эти деньги. Чем кто? Чем “наши”.
Все, лирика закончена. Итак, все у этого хостера хорошо, но вот python у него старый (2.3 какой-то) и нет официальной поддержки Django. А если хочется? Если хочется, то поставить это все можно. Итак… А! И еще напоследок — для дальнейших манипуляций, нам нужен ssh доступ. Дается он просто, нужно всего лишь послать им скан паспорта и название своей учетки/домена.
Для начала нужно обновить python. Вообще, его можно скачать wget’ом прям на сервер, но я тут пошел длинным путем. Скачал его себе, а потом залил уже на BlueHost… Ну в общем это детали.
mkdir ~/src
cd ~/src
wget http://www.python.org/ftp/python/2.6.1/Python-2.6.1.tgz
tar xzf Python-2.6.1.tgz
Сам python будем ставить в домашнюю директорию.
cd Python-2.6.1
./configure --prefix="$HOME"
make
make install
Теперь у нас есть новый python, пропишем его…
vim ~/.bash_profile
И добавим туда следующее
export PATH=$HOME/bin:${PATH}:$HOME/lib/python2.6/site-packages/django/bin
export PYTHONPATH=$HOME/lib/python2.6/site-packages:$HOME/djangoapps
Что это: $HOME/bin тут лежит наш свежий питон – пусть в путях будет раньше. $HOME/djangoapps — тут будут в дальнейшем лежать наши джанго-приложения. Должно быть все понятно. Сохраняем, выходим (:wq) и проверяем.
source ~/.bash_profile
python
Должно показать
# python
Python 2.6.1 (r261:67515, Feb 12 2009, 09:39:30)
[GCC 3.4.6 20060404 (Red Hat 3.4.6-10)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
Теперь нам нужна Django. Ну и заодно всяко разное, что пригодится далее.
cd ~/src
wget http://media.djangoproject.com/releases/1.0.2/Django-1.0.2-final.tar.gz
wget http://www.saddi.com/software/flup/dist/flup-1.0.1.tar.gz
Теперь это все ставим.
tar xzvf Django-1.0.2-final.tar.gz
cd Django-1.0.2-final
mv django ~/lib/python2.6/site-packages/
С flup у меня так просто не вышло… небыло setuptools. А свежий не подошел версией. В общем я особо не разбирался…
tar xzvf flup-1.0.1.tar.gz
cd flup-1.0.1
wget http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c6-py2.6.egg
mv setuptools-0.6c9-py2.6.egg setuptools-0.6c6-py2.6.egg
python setup.py install
По идее, все готово для первого приложения Django!
cd ~/djangoapps/
django-admin.py startproject helloworld
и что-бы враги не лазили
chmod 600 helloworld/settings.py
Теперь нам нужен домен для нашего приложения. Я его делал как поддомен с помощью панели управления самого BlueHost. Пусть его название… “habahaba” =) Теперь нужны последние штрихи…
touch ~/public_html/habahaba/django.fcgi
ln -s ~/lib/python2.6/site-packages/django/contrib/admin/media $HOME/www/habahaba/adminmedia
chmod a+x ~/public_html/habahaba/django.fcgi
В django.fcgi пишем
#!/home/USER/bin/python <- ваш юзернейм!
import sys, os
sys.path.insert(0,"/home/USER/var/lib/python2.6/site-packages/django")
sys.path.insert(0,"/home/USER/djangoapps")
from flup.server.fcgi import WSGIServer
os.environ['DJANGO_SETTINGS_MODULE'] = 'helloworld.settings'
from django.core.handlers.wsgi import WSGIHandler
WSGIServer(WSGIHandler()).run()
Включаем админский модуль в settings.py и urls.py, добавляем БД (для теста можно и sqlite обойтись)
mkdir ~/sqlite-db/
cd ~/sqlite-db/
sqlite3 helloworld.db
cd ~/djangoapps/helloworld
./manage.py syncdb
Вот по идее и все. Должно работать. Теперь еще кое-что. После изменения в коде нашего приложения, нам нужно перезапустить fcgi процессы… Я это делаю скриптиком, честно найденным в инете…
# cat ~/bin/redjango.sh
#!/bin/sh
# PYTHON SCRIPT PROCESS KILLER by GBO v0.1
# This script will look for all the lines containing $SOFTWARENAME in the process list, and close them
SOFTWARENAME='django.fcgi' # This is case insensitive
JOBPRESENT=$(ps -ef | grep -i $SOFTWARENAME | grep -v grep)
echo $JOBPRESENT
ps -ef | grep -i $SOFTWARENAME | grep -v grep | awk '{print $2}' | xargs kill
Не забываем только chmod a+x ~/bin/redjango.sh
Ах да! Чуть не забыл :) Еще нужно подправить файл .htaccess
# cat ~/public_html/habahaba/.htaccess
AddHandler fcgid-script .fcgi
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^(media/.*)$ - [L]
RewriteRule ^(adminmedia/.*)$ - [L]
RewriteCond %{REQUEST_URI} !(django.fcgi)
RewriteRule ^(.*)$ django.fcgi/$1 [L]
Вот теперь точно все. Должно работать.
Это все делалось из предположения, что джанго-приложения у вас живут как под-домены. Ежели это не так – то нужно чуть больше покурить на .htaccess файлом. Я этого не пробовал.



Забавно, а у многих “наших” есть питон так чтобы джангу крутить? И много ли из заявленного действительно надо? И как качество у хостера?
Phil Kulin
17 Feb 09 at 5:07
Про “наших” не знаю… Не пробовал.
Как цены узнал — все желание пропало :)
На счет нужности заявленного — по идее да, все нужно. Даже чуть больше, чем описано… Нужно еще psycopg например (для Postgres)…
Качество можно видеть в правой панельке, в разделе “Разное” ;) В двух словах – меня оно полностью устраивает.
NilColor
17 Feb 09 at 9:55
http://alextreppass.co.uk/blog/2008/11/14/getting-django-working-on-bluehost/
как покурить на .htaccess файлом
.htaccess:
AddHandler fcgid-script .fcgi Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteRule ^(media/.)$ – [L] RewriteRule ^(adminmedia/.)$ – [L] RewriteCond %{REQUEST_URI} !(django.fcgi) RewriteRule ^(.*)$ django.fcgi/$1 [L]
испытано на http://journaliga.org/
w-495
6 Oct 09 at 20:41
w-495 Da tak ispitano 4to debug mode zabili otklyu4it’ :)
Avtor spasibo… a to menya etot bluehost dostal. …nedeyus’ pomojet.
ledjin
9 Jun 10 at 23:31