Nginx Django

Матеріал з Wiki Welard
Перейти до навігації Перейти до пошуку

Налаштування зв'язки Django та nginx

Операційна система Debian.


1. Встановлюємо все необхідне:

apt-get install python nginx dajngo flux python-mysqldb python-imaging

2. Настроюємо nginx (/etc/nginx). Ставорюємо файл /etc/nginx/django_fcgi_params для передачі параметрів у Django

fastcgi_pass_header Authorization;                   
fastcgi_intercept_errors off;                        
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_param SERVER_PORT       $server_port;        
fastcgi_param SERVER_PROTOCOL   $server_protocol;    
fastcgi_param SERVER_NAME       $server_name;        
fastcgi_param REQUEST_URI       $request_uri;        
fastcgi_param DOCUMENT_URI      $document_uri;       
fastcgi_param DOCUMENT_ROOT     $document_root;  
fastcgi_param SERVER_ADDR       $server_addr;    
fastcgi_param REMOTE_USER       $remote_user;        
fastcgi_param REMOTE_ADDR       $remote_addr;        
fastcgi_param REMOTE_PORT       $remote_port;        
fastcgi_param SERVER_SOFTWARE   "nginx";             
fastcgi_param GATEWAY_INTERFACE "CGI/1.1";

3. У файл /etc/nginx/nginx.conf добавляємо у секцію http {}

 log_format main      '$remote_addr - $remote_user [$time_local] '
                      '"$request" $status $bytes_sent $body_bytes_sent '
                      '"$http_referer" "$http_user_agent"'
                      '"$gzip_ratio" "$uid_set" "$uid_got"';

4. Добавляємо в каталог /etc/nginx/sites-available свої налаштування (файл django-site):

# Django project
server {
  listen  80;
  server_name energy-service.com;
  error_log  /var/www/energy-service/error_log  info;
  location / {
      fastcgi_pass unix:/var/www/energy-service/server.sock; # зв'язок з демоном django через сокет
      # fastcgi_pass 127.0.0.1:8000; # можна і через порт
      include   django_fcgi_params; 
      access_log  /var/www/energy-service/logs/django.log  main;
  }
  #  location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|bmp|js)$ {
  #      root   /var/www/energy-service/site;
  #      access_log   off;
  #      expires      30d;
  #  }
  location /sm  {
      root /var/www/energy-service/site;
      access_log   off;
  }
  location /media  {
      root /var/lib/python-support/python2.5/django/contrib/admin;
      access_log   off;
  }
}

5. Робимо символічну ссилку файла django-site в папку /etc/nginx/sites-available/sites-enabled

6. Потрібно створити запускний файл для створення демона django

Обов'язщково потрбіно змінити користувача на відповідного (www-data або www в залежності від дистрибутиву)

#!/bin/sh
su www-data -c "./manage.py runfcgi  method=threaded  socket=/var/www/energy-service/server.sock pidfile=/var/www/energy-service/server.pid"