3 октября 2010 г.

Боевой сервер под Django 2

Продолжение. Начало см. в статье Боевой сервер под Django.

В прошлый раз я занимался исключительно теоретическими изысканиями, но теперь настало время для практики. Приступим.

Я ставил себе систему Debian 5.0, потому что неплохо в ней разбираюсь и мне нравится ее несколько параноидальная политика – в репозитории присутствуют только суперпроверенные пакеты. Все примеры будут приведены именно для нее, но с некоторыми изменениями подойдут и для других Linux систем.

Еще одно предупреждение. Я работаю под рутом для администрирования сервера. Если вы поступаете не так, то добавляйте “sudo” перед вводом команд.

Итак, какое программное обеспечение нам понадобится на сервере?

Python.

Во-первых, естественно, сам интерпретатор Python. Как правило, по умолчанию он уже установлен, однако нужно проверить версию. Я использую для разработки Python 2.6, потому что он, как правило, присутствует в репозиториях всех современных систем, что позволяет ставить его из пакетов, а не собирать вручную.

Проверим версию Python:

root@myserver: ~# python
Python 2.6.6 (r266:84292, Sep 15 2010, 16:00:36)
[GCC 4.4.5 20100909 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>


В моем случае все нормально, можно набрать



>>> exit()


для выхода в командную строку.



Если нужно обновление (например, установлен Python ветки 2.5), вводим команду




root@myserver: ~# aptitude install python




Если обновления есть, будет предложено эти обновления автоматически скачать и установить.



Django Framework.



Предположим, интерпретатор Python установлен. Для запуска Django-проекта нам, естественно, понадобится и сам фреймворк. Производим следующие действия (текущая версия Джанго на сейчас – 1.2.3):




root@myserver: ~# wget http://www.djangoproject.com/download/1.2.3/tarball/



root@myserver: ~# tar xzvf Django-1.2.3.tar.gz



root@myserver: ~# cd Django-1.2.3



root@myserver: ~# python setup.py install




На моей установке Debian фреймворк установился в /usr/local/lib/python2.6/dist-packages/django. В вашей системе он может оказаться по другому пути, принципиального значения это не имеет. Чтобы найти, куда установился фреймворк, воспользуйтесь поиском:




find / -name django




Обязательно найдется.



Проверить правильность установки можно следующим образом:



root@myserver: ~# python   Python 2.6.6 (r266:84292, Sep 15 2010, 16:00:36) 
[GCC 4.4.5 20100909 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> 


В моем случае все прошло отлично. Если же вы видите ошибку следующего вида:



>>> import django 
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named django
>>>


Значит, установка прошла неверно, модуль Django не найден. Попробуйте переустановить.



Итак, фреймворк установлен. Мы можем протестировать его работоспособность следующим образом:




root@myserver: ~# mkdir /home/djangotest



root@myserver: ~# cd /home/djangotest



root@myserver: ~# django-admin.py startproject mysite




Это все стандартные процедуры для старта нового проекта. Созданная структура впоследствии понадобится нам для тестирования работоспособности нашей среды.



Можно выполнить нашу любимую команду:




root@myserver:/home/djangotest/mysite# python manage.py runserver

Validating models...


0 errors found



Django version 1.2.3, using settings 'mysite.settings'

Development server is running at http://127.0.0.1:8000/


Quit the server with CONTROL-C.




Останавливаем сервер (CONTROL-C) и приступаем к установке остального ПО.



Снова немного теории.



Для запуска веб-приложения обычно требуются следующие компоненты:




  • - веб-сервер для отдачи продукта пользователю;


  • - сервер СУБД для обслуживания данных;


  • - почтовый сервер для отсылки сообщений пользователям приложения.


  • Этими программами дело, конечно, не ограничиваете, но в первом приближении этого будет достаточно.



Некий потребительский стандарт предполагает набор Apache (веб-сервер) + MySQL (СУБД) +Sendmail/Postfix (почтовый сервер). Все это невероятно удобное и надежное, при этом страшно тяжёлое – наш скромный сервачок это все крутить не сможет.



Мы пойдем другим путем. В качестве веб-сервера мы будем использовать Lighttpd, наше Django-приложение будет работать как FastCGI, базу данных мы будем крутить на SQLite, а без почтового сервера и вовсе обойдемся – будем использовать Gmail через SMTP.



В следующей части установим и настроим Lighhtpd + FastCGI.


Комментариев нет:

Отправить комментарий

Мне интересно ваше мнение.