Django: установка NGINX + uWSGI на CentOS

Автор: | 12/11/2014

django_logo_2Домашняя страница проекта – тут>>>.

Установка Django

# yum -y install django

Проверяем:

# python
Python 2.6.6 (r266:84292, Jan 22 2014, 09:37:14)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> print(django.get_version())
1.2.3

Во время установки Django создаёт директорию /var/www/django/:

# yum provides "/var/www/django/"
...
python-django-1.2.3-2.el6.rf.noarch : The Web framework for perfectionists with deadlines
...
Other       : Provides-match: /var/www/django/

Создадим проект:

# cd /var/www/django/
# django-admin.py startproject project
# ls -l
total 4
drwxr-xr-x 2 root root 4096 Nov  9 09:50 project
# ls -l project/
total 12
-rw-r--r-- 1 root root    0 Nov  9 09:50 __init__.py
-rw-r--r-- 1 root root  546 Nov  9 09:50 manage.py
-rw-r--r-- 1 root root 3388 Nov  9 09:50 settings.py
-rw-r--r-- 1 root root  484 Nov  9 09:50 urls.py

Запускаем проект, проверяем:

# cd project/
# python manage.py runserver 192.168.1.114:8081
Validating models...
0 errors found

Django version 1.2.3, using settings 'project.settings'
Development server is running at http://192.168.1.114:8081/
Quit the server with CONTROL-C.

Переходим браузером:

django_1

И в консоли видим:

[09/Nov/2014 01:53:51] "GET / HTTP/1.1" 200 2053

Настройка uWSGI

Предполагается, что uWSGI уже установлен и настроен согласно этой>>> статье, и имеет скрипт управления и директорию /etc/uwsgi/ для конфигураций.

Останавливаем uWSGI:

 # service uwsgi stop
Shutting down uWSGI

В каталоге /etc/uwsgi/ создаём файл django_project.ini:

[uwsgi]
# http заменим на socket после настройки NGINX
http = 192.168.1.114:9092
# корневая директория проекта
chdir = /var/www/django/project
# путь поиска модулей для Python
pythonpath = ..
# WSGI модуль для использования
module = django.core.handlers.wsgi:WSGIHandler()
# путь к файлу настроек, относительно файла manage.py
env = DJANGO_SETTINGS_MODULE=settings
master = True
pidfile = /tmp/project-master.pid

Запускаем:

# uwsgi /etc/uwsgi/django_project.ini

Проверяем в браузере – работает.

Настройка NGINX

Установка и настройка NGINX описана тут>>>.

В каталоге /etc/nginx/conf.d создаём файл django_project.conf:

server {

    listen        80 default_server;
    server_name   project.com  www.project.com;
    access_log    /var/log/nginx/project-access.log;
    error_log     /var/log/nginx/project-error.log;

    location ~* /(w+)/static/ {
        root /var/www/django/project;
    }

    location / {
        uwsgi_pass 127.0.0.1:9092;
        include         /etc/nginx/uwsgi_params;
        uwsgi_param     UWSGI_SCHEME $scheme;
        uwsgi_param     SERVER_SOFTWARE    nginx/$nginx_version;
    }
}

В файле /etc/uwsgi/django_project.ini меняем:

http = 192.168.1.114:9092

на:

socket = 127.0.0.1:9092

Запускаем uWSGI:

# service uwsgi start
Starting uWSGI

Проверяем конфиг NGINX:

# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Перезапускаем его:

# service nginx restart
Stopping nginx:                                            [  OK  ]
Starting nginx:                                            [  OK  ]

Готово.