WD5 - разработка сайтов

Django на хостинге NIC.RU

На хостинге NIC.RU по умолчанию доступен python2.6 и Django 1.1.1.

Использоваться будет Apache + FastCGI + Django (также, при желании, можно настроить nginx + fastcgi).

Порядок установки

1) заходим в панель управления хостингом в раздел "Веб-сервер"\"Управление модулями"
2) включаем модули mod_fastcgi и mod_rewrite.
Отключаем модуль PHP, если его использование не планируется.

3) создаём директорию для проектов:
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!

None