Top.Mail.Ru

Развертывание Django на сервере: Nginx, Gunicorn и HTTPS

Развертывание Django на сервере: Nginx, Gunicorn и HTTPS

Убедитесь, что у вас есть доступ к Ubuntu-серверу (например, VPS). Подключитесь по SSH:

ssh username@your_server_ip

Обновите систему:

sudo apt update && sudo apt upgrade -y

Установка зависимостей

sudo apt install python3-pip python3-venv nginx git -y

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

mkdir ~/myproject && cd ~/myproject

Настройка виртуального окружения и Django

python3 -m venv venv
source venv/bin/activate
pip install django gunicorn

Склонируйте свой проект (или создайте новый):

git clone https://github.com/ваш-проект.git .

Сделайте миграции и соберите статику:

python manage.py migrate
python manage.py collectstatic

Убедитесь, что в settings.py:

ALLOWED_HOSTS = ['your_domain.com', 'your_server_ip']
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

Настройка Gunicorn (WSGI)

Запустите Gunicorn для теста:

gunicorn --bind 127.0.0.1:8000 myproject.wsgi:application

Если работает — создадим systemd-сервис:

sudo nano /etc/systemd/system/myproject.service
[Unit]
Description=Gunicorn for Django Project
After=network.target

[Service]
User=your_user
Group=www-data
WorkingDirectory=/home/your_user/myproject
ExecStart=/home/your_user/myproject/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/your_user/myproject/myproject.sock myproject.wsgi:application

[Install]
WantedBy=multi-user.target

Запустите и включите Gunicorn:

sudo systemctl daemon-reexec
sudo systemctl start myproject
sudo systemctl enable myproject

Настройка Nginx

Создайте файл конфигурации:

sudo nano /etc/nginx/sites-available/myproject
server {
    listen 80;
    server_name your_domain.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/your_user/myproject;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/your_user/myproject/myproject.sock;
    }
}

Активируйте сайт:

sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl restart nginx

Установка HTTPS через Certbot

Установите:

sudo apt install certbot python3-certbot-nginx -y

Получите сертификат:

sudo certbot --nginx -d your_domain.com

Проверьте автоматическое обновление:

sudo certbot renew --dry-run

Теперь ваше Django-приложение доступно по HTTPS через Nginx и работает через Gunicorn.

 

Автор:

63

Читайте также

0 комментариев

Оставьте комментарий

Комментарии

Бот: Здравствуйте! Я чат-бот веб-разработчика. Чем могу помочь в создании или доработке вашего сайта?