From 78174a8ffc4de347e33639cdd169f4fa48ea4615 Mon Sep 17 00:00:00 2001 From: erjemin Date: Thu, 22 Jan 2026 18:55:56 +0300 Subject: [PATCH] =?UTF-8?q?add:=20=D0=BA=D0=B0=D1=81=D1=82=D0=BE=D0=BC?= =?UTF-8?q?=D0=BD=D1=8B=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8=20404?= =?UTF-8?q?=D0=B1=20403=20=D0=B8=2050x?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/nginx/etpgrf--internal-nginx.conf | 11 +++ docker-compose.prod.yml | 13 ++- etpgrf_site/typograph/templates/404.html | 86 ++++++++++++++++++ etpgrf_site/typograph/templates/500.html | 86 ++++++++++++++++++ .../typograph/templates/typograph/403.html | 86 ++++++++++++++++++ .../typograph/templates/typograph/base.html | 4 +- .../templates/typograph/stats_summary.html | 8 +- public/static/502.html | 87 +++++++++++++++++++ public/static/503.html | 86 ++++++++++++++++++ public/static/504.html | 87 +++++++++++++++++++ 10 files changed, 543 insertions(+), 11 deletions(-) create mode 100644 etpgrf_site/typograph/templates/404.html create mode 100644 etpgrf_site/typograph/templates/500.html create mode 100644 etpgrf_site/typograph/templates/typograph/403.html create mode 100644 public/static/502.html create mode 100644 public/static/503.html create mode 100644 public/static/504.html diff --git a/config/nginx/etpgrf--internal-nginx.conf b/config/nginx/etpgrf--internal-nginx.conf index b9274bd..5d7c5fc 100644 --- a/config/nginx/etpgrf--internal-nginx.conf +++ b/config/nginx/etpgrf--internal-nginx.conf @@ -68,6 +68,17 @@ http { # Ограничиваем максимальный размер тела запроса (например, 1MB) client_max_body_size 1M; + # --- КАСТОМНЫЕ СТРАНИЦЫ ОШИБОК --- + error_page 500 /500.html; + error_page 502 /502.html; + error_page 503 /503.html; + error_page 504 /504.html; + + location = /500.html { root /app/public/static_collected; internal; } # файл будет сюда скопирован при сборке образа + location = /502.html { root /app/public/static_collected; internal; } + location = /503.html { root /app/public/static_collected; internal; } + location = /504.html { root /app/public/static_collected; internal; } + # Прямая раздача favicon.ico location = /favicon.ico { alias /app/public/static_collected/favicon.ico; diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 235e09a..5c6a962 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -1,3 +1,11 @@ +# Этот файл предназначен для продакшен окружения. Его необходимо скопировать на продакшн-сервер под именем +# `docker-compose.yml` в корневой каталог проекта. +# Перед запуском убедитесь, что в корне проекта есть файл `.env` с необходимыми переменными окружения. +# Также необходимо создать папки `data` и `media` в корне проекта и убедиться, что у пользователя, под которым +# запускается docker-контейнер, есть права на запись в эти папки. +# Для первого запуска backend-контейнера, возможно, потребуется временно изменить владельца папки `data` на root +# и раскомментировать соответствующие строки в секции etpgrf-backend (смотри комментарии в коде ниже). + version: '3.8' services: @@ -20,6 +28,7 @@ services: # chmod -R 0775 /app/data 2>/dev/null || true && # python etpgrf_site/manage.py migrate --noinput && # python etpgrf_site/manage.py collectstatic --noinput && + # cp /app/etpgrf_site/typograph/templates/500.html /app/public/static_collected/50x.html && # gunicorn --bind 0.0.0.0:8000 --chdir /app/etpgrf_site etpgrf_site.wsgi" # # После первого запуска, на хосте убедиться что файл БД создан. Возвращаем docker-compose.yml (это тот фал который @@ -37,12 +46,12 @@ services: # - # А обычно запускаем в безопасном режиме. Просто миграции, потом collectstatic, потом сервер + # А обычно запускаем в безопасном режиме: миграции, потом collectstatic, потом копируем 500.html для Nginx, потом сервер command: > sh -c "python etpgrf_site/manage.py migrate --noinput && python etpgrf_site/manage.py collectstatic --noinput && + cp /app/etpgrf_site/typograph/templates/500.html /app/public/static_collected/500.html && gunicorn --bind 0.0.0.0:8000 --chdir /app/etpgrf_site etpgrf_site.wsgi" - # command: sh -c "python etpgrf_site/manage.py collectstatic --noinput && gunicorn --bind 0.0.0.0:8000 --chdir /app/etpgrf_site etpgrf_site.wsgi" volumes: # База данных (папка data должна быть создана на хосте) diff --git a/etpgrf_site/typograph/templates/404.html b/etpgrf_site/typograph/templates/404.html new file mode 100644 index 0000000..e25d544 --- /dev/null +++ b/etpgrf_site/typograph/templates/404.html @@ -0,0 +1,86 @@ + + + + + + Ошибка сервера 404 — ETPGRF + + + +
+ + + + ETPGRF — единая типографика для веба + + +

404: Страница не найдена

+

+ Запра­шиваемая страница не найдена.
+ Контент мог быть удалён, перемещён или его тут никогда и не было.
+ На главную +

+
+ + \ No newline at end of file diff --git a/etpgrf_site/typograph/templates/500.html b/etpgrf_site/typograph/templates/500.html new file mode 100644 index 0000000..97f018d --- /dev/null +++ b/etpgrf_site/typograph/templates/500.html @@ -0,0 +1,86 @@ + + + + + + Ошибка сервера 500 — ETPGRF + + + +
+ + + + ETPGRF — единая типографика для веба + + +

500: Внутренняя ошибка сервера

+

+ Извините, что-то сломалось на сервере или пошло не так.
+ Пожалуйста, попробуйте позже.
+ На главную +

+
+ + \ No newline at end of file diff --git a/etpgrf_site/typograph/templates/typograph/403.html b/etpgrf_site/typograph/templates/typograph/403.html new file mode 100644 index 0000000..460ecbc --- /dev/null +++ b/etpgrf_site/typograph/templates/typograph/403.html @@ -0,0 +1,86 @@ + + + + + + Ошибка сервера 403 — ETPGRF + + + +
+ + + + ETPGRF — единая типографика для веба + + +

403: Доступ запрещён, необходимо автори­зоваться

+

+ Записанная в адресной строке страница требует аутенти­фикации.
+ Пожалуйста, войдите в систему и повторите попытку.
+ На главную +

+
+ + \ No newline at end of file diff --git a/etpgrf_site/typograph/templates/typograph/base.html b/etpgrf_site/typograph/templates/typograph/base.html index a7394f3..9e19550 100644 --- a/etpgrf_site/typograph/templates/typograph/base.html +++ b/etpgrf_site/typograph/templates/typograph/base.html @@ -66,14 +66,12 @@
© Sergei Erjemin, 2025–{% now 'Y' %}. - v0.1.3 / v0.1.4 + v0.1.3 / v0.1.5 {# Сводная статистика (HTMX) #} ... - -
diff --git a/etpgrf_site/typograph/templates/typograph/stats_summary.html b/etpgrf_site/typograph/templates/typograph/stats_summary.html index 2b89ddc..e488bdc 100644 --- a/etpgrf_site/typograph/templates/typograph/stats_summary.html +++ b/etpgrf_site/typograph/templates/typograph/stats_summary.html @@ -1,5 +1,4 @@ -{% load typograph_extras %} - +{% load typograph_extras %} {{ copied|humanize_num }} / {{ chars_copied|humanize_num }} @@ -10,7 +9,4 @@ {{ views|humanize_num }} - - - - + \ No newline at end of file diff --git a/public/static/502.html b/public/static/502.html new file mode 100644 index 0000000..3b145a7 --- /dev/null +++ b/public/static/502.html @@ -0,0 +1,87 @@ + + + + + + Ошибка сервера 502 — ETPGRF + + + +
+ + + + ETPGRF — единая типографика для веба + + +

502: Bad Gateway

+

+ Внутренняя ошибка сервера.
+ Недоступен Gunicorn-сервис, база данных или произошла ошибка при обработке запроса.
+ Пожалуйста, попробуйте позже.
+ На главную +

+
+ + \ No newline at end of file diff --git a/public/static/503.html b/public/static/503.html new file mode 100644 index 0000000..0be9a42 --- /dev/null +++ b/public/static/503.html @@ -0,0 +1,86 @@ + + + + + + Ошибка сервера 503 — ETPGRF + + + +
+ + + + ETPGRF — единая типографика для веба + + +

503: Слишком много запросов

+

+ Сервер временно перегружен запросами или находится на техническом обслуживании.
+ Пожалуйста, попробуйте позже.
+ На главную +

+
+ + \ No newline at end of file diff --git a/public/static/504.html b/public/static/504.html new file mode 100644 index 0000000..14e17ad --- /dev/null +++ b/public/static/504.html @@ -0,0 +1,87 @@ + + + + + + Ошибка сервера 50x — ETPGRF + + + +
+ + + + ETPGRF — единая типографика для веба + + +

504: Gateway Timeout

+

+ Сервер не смог ответить вовремя.
+ Возможно, текст для типографа слишком большой илия сервер перегружен.
+ Пожалуйста, попробуйте позже.
+ Обновить страницу +

+
+ +