В качестве базы решил использовать PostgreSQL, лично для меня пофиг какая база PostgreSQL или MySQL, решил использовать PostgreSQL потому что сами разработчики Django когда разрабатывали свой фреймворк, затачивали его под Postgres.

aptitude install postgresql

Если все сделали правильно Postgres начнет ждать подключений.

netstat -tanp |grep postgre
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      23104/postgres
tcp6       0      0 ::1:5432                :::*                    LISTEN      23104/postgres

Создаем нового юзера (в моем примере newuser) и зададим ему пароль qwerty

su postgres
createuser newuser
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
psql template1
alter user newuser password 'qwerty';

Заодно сменим пароль для пользователя Postgres

ALTER ROLE postgres WITH ENCRYPTED PASSWORD 'my-super-secret-password';
\q

Создаем базу для пользователя newuser, на запрос пароля вводим пароль, который мы установили для пользователя postgres (my-super-secret-password)

createdb websitedb --owner=newuser -hlocalhost
Password:

Теперь пробуем подключиться

psql -Unewuser -W -hsrv01.lan
Password for user newuser:
psql (8.4.1)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

newuser=>

С базой покончено, можно настраивать сайт

mkdir /var/www/django-trunk
chown www-data:www-data /var/www/django-trunk/
cd /var/www/django-trunk/
su www-data
svn co http://code.djangoproject.com/svn/django/trunk/ .
exit
python django/setup.py build
python django/setup.py install

Для запуска Django как FastCGI server понадобится flup, который можно установить из пакетов.

aptitude install python-flup

Создаем новый проект

django-admin.py startproject yourproject

Проект создан, теперь можно запускать FastCGI сервер и настраивать Nginx.

/var/www/yourproject$ ./manage.py runfcgi method=threaded host=127.0.0.1 port=3033

Теперь создаем конфиг для nginx /etc/nginx/sites-available/yourwebsite (если не установлен, то устанавливаем командой sudo aptitude install nginx). Ниже содержимое этого файла:

upstream djangoserv {
    server 127.0.0.1:3033;
}
server {
        listen   80;
        server_name  yourwebsite;
        root /var/www/yourwebsite/yourproject;

        access_log  /var/www/yourproject/logs/access.log;
        error_log   /var/www/yourproject/logs/error.log;

        location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov) {
            access_log   off;
            expires      30d;
        }

        location / {
            fastcgi_pass   127.0.0.1:3033;
            fastcgi_param PATH_INFO $fastcgi_script_name;
            fastcgi_param REQUEST_METHOD $request_method;
            fastcgi_param QUERY_STRING $query_string;
            fastcgi_param SERVER_NAME $server_name;
            fastcgi_param SERVER_PORT $server_port;
            fastcgi_param SERVER_PROTOCOL $server_protocol;
            fastcgi_param CONTENT_TYPE $content_type;
            fastcgi_param CONTENT_LENGTH $content_length;
            fastcgi_pass_header Authorization;
            fastcgi_intercept_errors off;
        }

}

После чего делаем symlink и включаем конфиг для нового виртуал хоста, создаем папку с логами и выставляем ей нужного владельца (www-data), после чего перезагружаем nginx.

cd /etc/nginx/sites-available
ln -s /etc/nginx/sites-available/yourwebsite /etc/nginx/sites-enabled/yourwebsite
mkdir /var/www/yourproject/logs
chown www-data:www-data /var/www/yourproject/logs
/etc/init.d/nginx reload

Если все сделали правильно теперь можно зайти по адресу http://yourwebsite и увидеть там дефолтную страницу Django с надписью It worked!

© 2011 Записи о настройке Debian, Ubuntu
Украина онлайн Rambler's Top100 Каталог MyList.com.ua каталог сайтів