Продвинутый Django 5 для продолжающих

Прогресс по курсу:  0/193

12.4 Получение SSL-сертификата от Let's Encrypt и настройка HTTPS
2 из 2 шагов пройдено

Настройка HTTPS

Сначала перейдём в директорию проекта, остановим и удалим контейнеры:

cd ../../..
docker compose -f docker-compose.prod.yml down


Затем перейдём в директорию nginx и отредактируем его конфиг:

cd nginx
vi htmx_book.conf


Изменим его содержимое на следующее:

upstream htmx_book {
    # Список бэкэнд серверов для проксирования
    server web:8000;
}

server {
    listen 80;
    server_name ваше_доменное_имя;

    location / {
        return 301 https://$host$request_uri;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }
}

server {
    listen 443 ssl http2;
    server_name ваше_доменное_имя;

    ssl_certificate /etc/letsencrypt/live/ваше_доменное_имя/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ваше_доменное_имя/privkey.pem;

    client_max_body_size 20M;
    charset utf-8;

    gzip on;
    gzip_min_length 1000;
    gzip_vary on;
    gzip_proxied expired no-cache no-store private auth;
    gzip_types   text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;

    location / {
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Url-Scheme $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://htmx_book;
    }

    # подключаем статические файлы
    location /static/ {
        alias /home/app/web/static/;
    }

    # подключаем медиа файлы
    location /media/ {
        alias /home/app/web/media/;
    }
}


Примечание: обязательно замените строку ваше_доменное_имя в server_name, в ssl_certificate и в ssl_certificate_key, на имя вашего домена!


Переходим в директорию проекта, пересобираем образы, создаём и запускаем контейнеры:

cd ..
docker compose -f docker-compose.prod.yml build
docker compose -f docker-compose.prod.yml up -d


Проверяем результат, переходим по адресу http://ваше_доменное_имя, должен произойти редирект на https://ваше_доменное_имя:


Теперь сайт работает через HTTPS, с использованием протокола HTTP/2 и с GZIP сжатием контента:


Добавление поддержки HTTPS было успешно выполнено.


Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий

Здравствуйте, возможно на данном этапе это будет немного глупый вопрос, но всё же. 

Вот допустим мы на сервере подняли докер, настроили сертификаты, все работает. Но ведь проект мы продолжаем как-либо улучшать/дорабатывать и как в таком случае будут вносится все изменения на удаленный сервер? Мы их там будем подгружать через git или как-то иначе? Хотелось бы узнать как это происходит с реальными проектами более подробно.

P.S. Спасибо за курс! :) 

@Корнев_Степан, На самом деле вариантов много, от простого, как например в прошлом разделе копировали с гита, до уже продвинутых вариантов.

@Корнев_Степан, в нашем случае мы обновляем проект с гитхаба:

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

git remote -v

 Результат команды:

origin  https://github.com/Permin0ff/htmx_books_docker.git (fetch)
origin  https://github.com/Permin0ff/htmx_books_docker.git (push)

Удалённый репозиторий у нас называется origin.

Выкачиваем изменения с удалённого репозитория:

git fetch origin

А затем выполняем слияние:

git merge origin/master

master это имя ветки удалённого репозитория, может быть выбрана другая если нужно.

Прежде чем это всё делать необходимо создать коммит, в котором будут все последние изменения.

Так-же рекомендую создать файл .gitignore, в котором будут все игнорируемые файлы например все файлы в директории certbot/*.

@Дмитрий_Селезнев@Илья_Перминов, благодарю за подробные объяснения.