ZANIN блог
Контакты
Крути вниз
Фильтр по:
Категории
//Post title

Установка Django на сервер Nginx

17 Окт 2020Категория : Django

Установка Django на сервер Nginx

Установка Django на сервер Nginx и запуск с помощью uwsgi довольно простая, хотя в первый раз может показаться, что для настройки необходимо много манипуляций, но настроек даже меньше, чем при установке Wordpress на Nginx. Для полноты картины, я сразу опишу процесс установки React.js вместе с Django в одну рабочую директорию.

Проблемы с настройкой могут быть, если у вас сервер с такими правами, что вы можете настраивать абсолютно любые права, и при неверной настройке прав у вас могут быть проблемы, особенно при установке пакетов Python с помощью pip.

Например, если у вас при установке пакетов через pip идут такие сообщения:

Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.python.org', port=443): Read timed out. (read timeout=15)",)': /simple/openssl-python/

В этом случае попробуйте такую команду

ip link set eth0 mtu 1450

Если и после у вас пакеты не устанавливаются, то у вас надо настроить нормальные права для пользователя.

Если все нормально, то начинаем установку. Сначала ставим следующие пакеты:

sudo apt install uwsgi uwsgi-plugin-python3

Установка Django на сервер Nginx

sudo apt-get install python3-venv

Установка Django на сервер Nginx

Далее нам надо создать каталог, где будет наш проект. Логичнее всего создать этот каталог в папке /var/www/ там обычно располагают все сайты на сервере, но иногда встречается, что Django стоит в папке /home/nameuser/ , а также, если вы устанавливали готовую сборку от хостинга, то Django может лежать в /usr/share/django.

Создаем папку для проекта в папке, которую я назвал по имени домена привязанного к серверу.

mkdir /var/www/feil.pro/djproject

Затем переходим в созданную папку

cd /var/www/feil.pro/djproject

Чтобы проверить, действительно ли мы в нужной папке, вводим команду

pwd

Установка Django на сервер Nginx

После этого создаем виртуальное окружение, в которое будем ставить необходимые пакеты и сам Django

/usr/bin/python3 -m venv djangoenv

Можем посмотреть, что в папке с проектом появилась папка.

Установка Django на сервер Nginx

Активируем виртуальное окружение, чтобы устанавливать пакеты python и выполнять различные команды Django.

source djangoenv/bin/activate

Установка Django на сервер Nginx

Теперь можно устанавливать пакеты Python, и начнем с самого Django. Не забывайте писать pip3 и python3, если работаете на сервере, так как на сервере Linux всегда есть еще и Python 2, который сработает на pip и python (не всегда, но лучше делать команды так, чтобы потом не возникло ошибок).

pip3 install --upgrade pip && pip install django

Установка Django на сервер Nginx

Далее нам необходимо установить некоторые библиотеки для работы с базами данных. Я приведу пример для PosttgreSQL и MySQL.

sudo apt-get update

sudo apt-get install python3-dev libpq-dev postgresql postgresql-contrib

pip3 install psycopg2-binary

pip3 install psycopg2

Установка Django на сервер Nginx

Для MySQL

sudo apt-get install mysql-server mysql-client

Установка Django на сервер Nginx

sudo apt-get install libmysqlclient-dev build-essential

pip3 install mysqlclient

Установка Django на сервер Nginx

Далее создадим проект. Это просто папка, ее название можете придумать любое.

django-admin.py startproject name_django

Установка Django на сервер Nginx

Настроим базу PostgreSQL

sudo -u postgres psql

CREATE DATABASE psql_django;

CREATE USER psql_django WITH PASSWORD '******';

ALTER ROLE psql_django SET client_encoding TO 'utf8';

ALTER ROLE psql_django SET default_transaction_isolation TO 'read committed';

ALTER ROLE psql_django SET timezone TO 'UTC';

GRANT ALL PRIVILEGES ON DATABASE psql_django TO psql_django;

Установка Django на сервер Nginx

Чтобы выйти

\q

Установка Django на сервер Nginx

Настроим базу MySQL

mysql -u root -p

CREATE DATABASE mysql_django;

CREATE USER 'user_django'@'%' IDENTIFIED BY '*****_xrt';

GRANT ALL PRIVILEGES ON mysql_django.* TO 'user_django'@'%';

exit

Далее настраиваем в файле settings.py соединение с нужной вам базой данных. Потом производим команду миграции.

python3 name_django/manage.py makemigrations

python3 name_django/manage.py migrate

Основные настройки сделаны, теперь остается настроить статические файлы и то, чтобы Django работал постоянно, а не только пока мы в консоли запустили команду python3 manage.py runserver 0.0.0.0:8000

Чтобы настроить работу сайта на сервере Nginx, надо понимать, что в конфиге Nginx есть директива server_name, в которую пишут или имя домена или IP-адрес, далее директива root - сюда пишут путь до папки с сайтом, в нашем случае до папки с проектом django, а также директива listen - чтобы прописать, какой порт слушать. Если пропишем 80 порт, то при заходе по IP или имени домена мы сразу попадем на наш сайт, а если пропишем другой порт, то к IP-адресу или имени домена придется добавлять этот порт (name-domain:8000). Так как я настраиваю Django, а потом React в одной папке, то порты у нас будут разные. Django отрабатывая за бэкенд может сидеть на любом порту, а приложение React можно повесить на 80 порт.

Сейчас у меня сделана настройка так, что при заходе на мой домен feil.pro мы попадаем на обычную тестовую страничку:

Установка Django на сервер Nginx

На сервере эта страничка лежит в папке /var/www/html

Установка Django на сервер Nginx

Кстати переадресация на HTTPS у меня не настроена, как настраивать - покажу потом.

Установка Django на сервер Nginx

Конфигурационный файл NGINX /etc/nginx/nginx.conf - это файл, который отвечает за глобальные настройки. Если на сервере будет несколько сайтов или каких-то микросервисов, то под каждый лучше иметь свой файл с настройками. Индивидуальный конфиг под проект лежит в папке /etc/nginx/sites-available/default - это дефолтный файл, из него можно копировать настройки в свой или создавать свои, если базовые настройки не нужны. На скриншоте показан этот файл и рядом находится /etc/nginx/sites-enabled/default - это ссылка на файл /etc/nginx/sites-available/default и соответственно, если вы создаете свой файл с настройками и называете своим именем, то необходимо сделать ссылку на этот файл, так как основной конфиг ngnix.conf инклудит себе все ссылки из папки /sites-enabled/.

Установка Django на сервер Nginx

  • 687

Готовы заказать проект?

© ZANIN 2019 / All rights reserved.
Контакты
Close