Легкая установка и настройка Django+Nginx+Uwsgi

Блог Полезное

Легкая установка и настройка Django+Nginx+Uwsgi

Легкая установка и настройка Django+Nginx+Uwsgi

Перепробовав кучу вариантов с разными хостингами, с разными видами vds, мы остановились на vds от firstvds.ru. Вы наверно думаете, что это реклама? Спешу огорчить, просто сервера у них идут с возможностью предустановки Nginx и Uwsgi. Профессионал скажет, что здесь такого, ведь эти приложения устанавливаются и настраиваются за 15 минут. Согласен, для человека, который проделывал эту процедуру много раз, это именно 10-15 минут. Для новичка же это может обернуться большолй проблемой, пишу это из собственного опыта и опыта людей задающих кучу вопросов по этому поводу в сети. Уж поверьте, запросов "установка и настройка Django+Nginx+Uwsgi" очень большое количество.

Установка и настройка проектов на Django, Nginx и Uwsgi

И так, давайте перейдем к делу. Что такое пред установка и настройка Nginx и Uwsgi? Это значит, что при создании сервера вы можете дополнительно плюсануть на установку этих приложений. Выбираем сервер, можно самый дешевый, в предустановленном ПО выбираем Django и создаем сервер.

Django+Nginx+Uwsgi легко

После того как сервер создан, вам на почту прилетят инструкции, как управлять сервером и как на него зайти. Заходить мы будем через ssh. Все пароли и логины для доступа прилетают на почту. Для работы через ssh, я использую Putty клиент.

Заходим через ssh под пользователем root и выполняем следующие манипуляции:

adduser username

passwd username

gpasswd -a username wheel

yum install sudo

yum install nano

Добавляем пользователя, задаем ему пароль, добавляем его в группу администраторов, устанавливаем sudo, устанавливаем редактор nano. Yum используем, если у вас Centos, если Ubuntu, то apt-get install.

Теперь вам надо залогиниться пол своим пользователем, так как под root работать не безопасно, тем более, если вы новичек. Выполним команду:

su - username

Теперь можно работать в системе.  По умолчанию тестовый сайт на Django уже работает и он доступен по ip адресу вашего сервера. Находится он в папке /var/www/django/. Собственно здесь мы и будем размещать свои проекты. Сейчас у вас там проект под название project. Его можно удалить либо оставить для примера. Берем наш проект, будем предполагать, что он у вас лежит на Git, клонируем его. Кстати, для этого нам еще надо установить Git:

sudo yum install git

Теперь клонируем проект, я для примера беру этот :

sudo git clone https://github.com/sibtc/simple-django-skeleton.git

Это скелет для django проектов, причем очень хороший! Сейчас у вас должна получится такая иерархия:

/var/www/django/simple-django-skeleton

В папке /var/www/django уже имеется вирутальное окружение venv. Можно использовать его, но лучше создать свое и с ним работать:

virtualenv myenv

или если вы используете python3, то:

sudo yum install epel-release

sudo yum install python34

virtualenv -p python3.4 myenv

Теперь у вас есть свое окружение, куда вы и будете устанавливать пакеты.

Заходим в наше окружение:

source myenv/bin/activate

установим необходимые модули для проекта:

pip install -r requirements.txt

Чуть не забыл, pip нужно использовать обязательно без sudo, в противном случае все модули будут устанавливаться глобально, а не локально в ваше окружение! Чтобы использовать pip без sudo нужно дать права на папку вашему пользователю, сделать это очень просто:

sudo chown -R username /var/www/django/

Теперь самое интересное, нужно поправить конфигурационные файлы Nginx и Uwsgi. Пути:

sudo nano /etc/nginx/conf.d/django.conf

Правим все пути на пути вашего проекта. Теперь открываем файл:

sudo nano /etc/uwsgi.d/django.ini

Также правим пути на свои, а конкретно:

chdir=/var/www/django/ваш_проект

virtualenv=/var/www/django/ваше_окружение

module=ваш_проект.wsgi:application

Если у вас python3, то еще необходимо заменить plugin:

plugin=python3

Но чтобы этот плагин работал, так же необходимо утсановить:

sudo yum install uwsgi-plugin-python3

Теперь python3 должен работать. Очень важно после каждой настройки файлов конфигурации Uwsgi и Nginx, перегружать эти сервисы:

sudo service nginx restart

sudo service uwsgi restart

Если сайт не запускается, то смотрите ошибки в логах nginx и ошибки uwsgi:

sudo cat /var/log/nginx/error.log

sudo service uwsgi status

На этом пока все.