В качестве базы решил использовать 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!