Django на хостинге NIC.RU
На хостинге NIC.RU по умолчанию доступен python2.6 и Django 1.1.1.
Использоваться будет Apache + FastCGI + Django (также, при желании, можно настроить nginx + fastcgi).
Порядок установки
1) заходим в панель управления хостингом в раздел "Веб-сервер"\"Управление модулями"
2) включаем модули mod_fastcgi и mod_rewrite.
Отключаем модуль PHP, если его использование не планируется.
mkdir ~/django
cd ~/django
4) создаём проект project и переходим в его директорию:
django-admin.py startproject project
cd project
- можно запустить встроенный в django веб-сервер (если используется тариф 301, то на него можно зайти по IP-адресу):
python -W ignore::DeprecationWarning ./manage.py runserver 123.45.67.89:8000
Узнать IP-адрес сервера можно в конфигах, либо такой командой:
$ cat $HOME/etc/httpd.conf.auto | grep 'ServerName' |sed 's/ServerName\ /''/g'
123.45.67.89
5) запускаем fastcgi сервер
python -W ignore::DeprecationWarning ~/django/project/manage.py runfcgi method=prefork maxrequests=1000 maxspare=3 minspare=2 maxchildren=3 daemonize=true socket=/tmp/project.sock pidfile=~/django/project.pid
6) остановка fastcgi сервера производится следующей командой
kill -9 `cat ~/django/project.pid`
7) создаём скрипт для автоматического запуска fastcgi сервера (на случай его остановки):
touch ~/etc/rc.d/fastcgi_project.sh
chmod u+x ~/etc/rc.d/fastcgi_project.sh
- далее в файл ~/etc/rc.d/fastcgi_project.sh добавляем следующие данные (сохранять следует с переводом строки CR(Unix))
- можно отредактировать с помощью редактора mc:
mc -e ~/etc/rc.d/fastcgi_project.sh
#!/bin/sh
DJANGO=$HOME/django
PROJECT=project
PROJDIR=$DJANGO/$PROJECT
PIDFILE=$DJANGO/$PROJECT.pid
SOCKET=/tmp/$PROJECT.sock
PYTHON="/usr/local/bin/python -W ignore::DeprecationWarning"
if [ -e $PIDFILE ]; then
if kill -0 `cat $PIDFILE` > /dev/null 2>&1 ; then
echo "django: $PROJECT alredy started"
exit 0
fi
rm $PIDFILE
fi
cd $PROJDIR
$PYTHON ./manage.py runfcgi method=prefork maxrequests=1000 maxspare=3 minspare=2 maxchildren=3 daemonize=true socket=$SOCKET pidfile=$PIDFILE
sleep 3
if [ -e $PIDFILE ]; then
if kill -0 `cat $PIDFILE` > /dev/null 2>&1 ; then
echo "django: $PROJECT started"
exit 0
fi
fi
echo "django: $PROJECT NOT started"
- для проверки запускаем скрипт:
~/etc/rc.d/fastcgi_project.sh
если проект пустили ранее, то получим сообщение:
django: project alredy started
Порядок настройки Apache
8) настраиваем Apache для использования fastcgi сервера django для сайта sitename.ru:
- заходим в панель управления хостингом в раздел "Веб-сервер"- переключаем "Режим настройки" в параметр "Ручной"
- переходим в раздел "Файл конфигурации" и добавляем в самом конце файла следующее:
<IfModule mod_fastcgi.c>
FastCGIExternalServer sitename.ru/docs/index.fcgi -socket /tmp/project.sock
</IfModule>
- в конце файла конфигурации обязательно добавляем пустую строку- сохраняем
9) настраиваем sitename.ru:
- в директории сайта sitename.ru/docs создаём файл .htaccess со следующим содержимым: RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/index.fcgi
RewriteRule ^(.*)$ /index.fcgi/$1 [QSA,L]
10) заходим по адресу http://sitename.ru и видим It worked!