В качестве веб сервера не будем использовать Apache. Иногда просто может не хватить памяти для его нормального запуска вместе с Django. Вместо Apache лучше использовать nginx в связке с Django через FastCGI. Тем более что nginx, кроме значительно меньшего потребления ресурсов, еще и работает значительно быстрее Apache в конфигурации по умолчанию.
Установка nginx
В первую очередь необходимо установить fron-end, коим будет являться весьма популярный http-сервер nginx. Установка проста:
sudo aptitude install nginx
Ошибки во время установки nginx
ошибка
Setting up install-info (4.13a.dfsg.1-10) ... /etc/default/locale: line 1: en_US.UTF-8: command not found dpkg: error processing install-info (--configure): subprocess installed post-installation script returned error exit status 127 Errors were encountered while processing: install-info
решение
update-locale LC_CTYPE=en_US.UTF-8 aptitude install locales locale-gen
Необходимо объяснить системе на каком языке мы будем с ней общаться, то есть настроить локаль
dpkg-reconfigure locales
Выбираем в списке ru_RU.UTF-8 и, если нужно, ru_RU.CP1251. Затем устанавливаем локалью по-умолчанию ru_RU.UTF-8. (оставляем в файле /etc/default/locale только LC_CTYPE=en_US.UTF-8)
Запускаем nginx
sudo /etc/init.d/nginx start
Файлы Nginx сервера находятся тут /usr/share/nginx/www
В Debian конфиг nginx'а хранится в т.н. debian-style, поэтому правильно следовать тому же стилю. Конфиг лежит в директории /etc/nginx. Основной файл nginx.conf не включает в себя описание сайтов, вместо этого сайты вынесены в директорию /etc/nginx/sites-enabled. На самом деле, в sites-enabledлежат символьные ссылки на файлы из /etc/nginx/sites-available. Если нам нужно разместить всего один сайт, можно особо не вникать в эти нюансы. Достаточно проделать следующее:
sudo mcedit /etc/nginx/sites-available/default
Файл конфигурации должен выглядеть приблизительно следующим образом:
upstream backends { server 127.0.0.1:8001; server 127.0.0.1:8002; } server { listen 80; server_name tornado.debianworld.ru; access_log /home/django-projects/debianworld_ru/logs/nginx_access.log; error_log /home/django-projects/debianworld_ru/logs/nginx_error.log; location = /robots.txt { alias /home/django-projects/debianworld_ru/media/robots.txt; } location = /favicon.ico { alias /home/django-projects/debianworld_ru/media/img/favicon.ico; } location /media/ { alias /home/django-projects/debianworld_ru/media/; expires 30d; } location /media_admin/ { alias /usr/lib/python2.6/dist-packages/django/contrib/admin/media/; expires 30d; } location / { proxy_pass http://backends; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }