Skip to content

Деплой Django проекта с nginx и gunicorn

Notifications You must be signed in to change notification settings

MRX580/how_deploy_django

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Простое руководство, как деплоить Django проект

Деплой проводился на операционной системе ubuntu 20

Подготовка всех компонентов

Первым делом нам нужно обновить пакеты линукса
sudo apt update
sudo apt upgrade

Устанавливаем nginx

sudo apt install nginx

Устанавливаем gunicorn

sudo apt install gunicorn

Устанавливаем python 3.9 + venv

sudo apt install python3.9 python3.9-venv

С подготовкой компонентов закончили, переходим в установке и настройке

Установка проекта на сервер

Переходим в директорию /home

cd /home

Создаем виртуальное окружение

python3.9 -m venv venv

Переходим в него и устанавливаем все нужные зависимости

source venv/bin/activate
pip install gunicorn
pip install django

Импортируем наш проект с гихаба

git clone <url>

Настройка проекта (!)

Начнем с nginx, создадим наш конфиг с проектом

Очень важно не запутаться с путями, читайте внимательно чтобы не пропустить ничего

Для начала создадим наш файл конфигурации nginx

sudo nano /etc/nginx/sites-available/my_django_project

КАК УКАЗЫВАТЬ ПУТЬ?

Заходим в директорию где у нас находится manage.py и пишем там:

pwd

Получаем: /home/mysite

И то что получили записываем в /static/ и /media/ (!)

и записываем туда (не забываем указать your_ip):

server {

    listen 80;
    server_name your_ip;

    location /static/ {
        root /home/mysite;
    }
  
    location /media/ {
        root /home/mysite;
    }
    location / {
        include proxy_params;
        proxy_pass http://unix:/run/gunicorn.sock;
    }
}

Переносим конфигурацию в рабочее пространство

sudo ln -s /etc/nginx/sites-available/my_django_project /etc/nginx/sites-enabled/

перезагружаем nginx

service nginx restart

Nginx настроен.

Настройка gunicorn

Идем в каталог /etc/systemd/system/

cd /etc/systemd/system/

Создаем файл gunicorn.service

nano gunicorn.service

И записываем туда:

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=root
WorkingDirectory=/home/mysite
ExecStart=/home/venv/bin/gunicorn --workers 5 --bind unix:/run/gunicorn.sock your_project_wsgi.wsgi:application

[Install]
WantedBy=multi-user.target

В WorkingDirectory записываем путь к manage.py

В ExecStart записываем виртуальное окружение с gunicorn

(!) И не забываем указать your_project_wsgi, wsgi называеться так же как вы назвали проект, или же можно найти в settings в переменной: WSGI_APPLICATION

Сохраняем и выходим, и создаем еще один файл в той же директории под названием gunicorn.socket

nano gunicorn.socket

И записываем туда

[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target

Сохраняем и закрываем, менять ничего не нужно

Теперь нам нужно запустить сервисы gunicorn

sudo systemctl enable gunicorn
sudo systemctl start gunicorn
service gunicorn restart

После всех манипуляций у вас должен заработать проект, если у вас не получилось, можно написать мне в телеграмм https://t.me/MRXlllll

About

Деплой Django проекта с nginx и gunicorn

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published