Django + Nginx + FastCGI
Linux, Программирование 14.04.2009
Интро
Уже пару месяцев я разбираюсь с Python & Django. И вот настало время выкладывать свои художества в сеть ) Правда, мой первый сайт на Django посвящен ведению отчетов по работе. Он довольно прост и хвалиться нечем. Вместо этого я расскажу как просто развертывается проект на Django + Nginx + FastCGI.
Устанавливаем
У меня на офисном сервере стоит Ubuntu.
Выполняем ритуальное:
# sudo aptitude update
Mysql
# sudo aptitude install mysql-server
Далее создаем пользователя и БД:
# sudo mysqladmin -u user password ********
# mysql -u user -p
> CREATE DATABASE `report` CHARACTER SET utf8;
Теперь установим библиотеку для работы Python с MySQL:
# sudo aptitude install python-mysqldb
Все, база настроена.
Django
Узнаем расположение “питоновских” библиотек:
python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
Полученное значение подставляем, в листинг ниже. У меня это /usr/local/lib/python2.5/site-packages
Django устанавливаем последней версии из офф. репозитория, а вот путь:
З.Ы.: для python 2.6 путь -/usr/local/lib/python2.6/dist-packages/django
# cd /usr/local/lib/python2.5/site-packages
# sudo svn co http://code.djangoproject.com/svn/django/trunk/ django-trunk
# sudo ln -s django-trunk/django /usr/local/lib/python2.5/site-packages/django
# cd /usr/local/bin
# sudo ln -s /usr/local/lib/python2.5/site-packages/django-trunk/django/bin/django-admin.py django-admin.py
Nginx
Устанавливаем стандартным способом:
# mkdir ~/tmp
# cd ~/tmp
# wget http://sysoev.ru/nginx/nginx-0.6.36.tar.gz
# tar -xzf nginx-0.6.36.tar.gz
# cd nginx-0.6.36
# ./configure
# make
# sudo make install
Далее настраиваем Nginx для нашего сайта, создаем виртуальных хост для нашего проекта, добавляем секцию server в фалик /usr/local/nginx/conf/nginx.conf:
# sudo vim /usr/local/nginx/conf/nginx.conf
server {
server_name report.loc;
location / {
root /var/www/report.loc/www;
index index.html index.htm;
fastcgi_pass 127.0.0.1:7777;
include /usr/local/nginx/conf/fastcgi.conf;
}
location /media {
root /var/www/report.loc/www;
}
location /admin-media {
alias /usr/local/lib/python2.5/site-packages/django-trunk/django/contrib/admin/media;
}
}
# sudo vim /usr/local/nginx/conf/fastcgi.conf
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_pass_header Authorization;
fastcgi_intercept_errors off;
Перенос проекта
Файлы проекта будем хранить в месте не доступном для WEB-пользователя. Создаем в /var/www/report.loc/ каталог с именем своего проекта, в моем случае это publishing. И копируем в него все файлы проекта. Всю статику (js, css, img, etc) сайта я храню в одном каталоге media, т.е. /media/js/, /media/css/ & etc. Этот каталог будет находиться в web-директории, т.е. /var/www/report.loc/www/media.
Поехали!
Вот и все, все настроено, настало время запуска:
Инициализируем БД проекта:
# python /var/www/report.loc/publishing/manage.py syncdb
и запускаем сервер:
# python /var/www/report.loc/publishing/manage.py runfcgi host=127.0.0.1 port=7777
# /usr/local/nginx/sbin/nginx
Все (:







Да, действительно просто :)
По питону порекомендуешь эту книгу?
http://www.ozon.ru/context/detail/id/3889012/
Привет!
Конечно рекомендую - она же у меня в блоке справа “Хорошие книги” =) Только как вариант можно купить русский вариант, он просто дешевле )
А так книга очень хорошая - для новичка как раз, хотя подойдет и для профессионалов )
Сенк, куплю её :)
Купил http://adw0rd.ru/2009/python-first-book/
И по django http://adw0rd.ru/2009/django-first-book/
@adw0rd, поздравляю!
И как успехи в разработке на Питоне? “Кинсбург” - уже на Django построен? =)
Не, на django будет http://liburg.ru/ :)
А что такое “либург”? О чем сайт?
http://adw0rd.ru/2009/python-introduction/
О! Тоже по книгам ) Если что могу предложить сотрудничество: “мойлиб” и “либург” )
Да, можем посотрудничать. Я в скайп тебя добавил :)
Вот не люблю я пособия с ошибками и недописками!
1) Неплохо бы рассказать начинающим, что комманда svn будет выполняться, если в системе установлен subversion.
2) Неплохо бы указывать sudo для тех комманд, которые без этого выполняться не будут.
Это моё суровое дилетантское замечание :)
Выполнение инструкции make install закончилось ошибками (коды ошибок 1 и 2)
А чем, собственно, не устраивает sudo aptitude install nginx?
1. Если вы это не знаете, то лучше вам сменить область
2. Смотря под кем вы это выполняете (и sudo не везде есть)
>А чем, собственно, не устраивает sudo aptitude install nginx?
может в пакетах была старая версия?
>> Если вы это не знаете, то лучше вам сменить область
Область чего? Специалиста по linux? Я и не претендую. А статья, как мне кажется, для начинающих.
@polosatyi
Статья написана, как “записка на память”, и по формату явно не для специалистов.
З.Ы.
Вообще это нормально ))) К этому просто стоит привыкнуть, скорее всего на моменте ./configure скрипт писал, что не достает каких либо библиотек.
@polosatyi, я о svn