From 9b31fcf19392f507fa7bd70fe8d0088483ac0c8a Mon Sep 17 00:00:00 2001 From: "Andrey K. Choi" Date: Sun, 2 Nov 2025 15:09:10 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF=D1=82=20?= =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BF=D1=80=D0=BE=D0=B4=D0=B0=D0=BA=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ✨ Новый функционал: - scripts/fix-production-env.sh - автоматическое исправление .env для продакшена - make fix-production - команда для быстрого исправления 🎯 Что исправляет: - DJANGO_DEBUG=False (вместо True) - NEXT_PUBLIC_API_URL=http://links.shareon.kr (вместо localhost) - Правильные настройки для продакшена - Пересоздание БД с правильным паролем - Выполнение миграций - Создание суперпользователя 📝 Документация: - PRODUCTION_FIX.md - инструкция по исправлению проблем 🚨 Решает проблему: - password authentication failed for user links_user - undefined в API URL фронтенда - Неправильные настройки DEBUG режима --- Makefile | 4 ++ PRODUCTION_FIX.md | 114 ++++++++++++++++++++++++++++++++++ docker-compose.prod.yml | 2 +- scripts/fix-production-env.sh | 77 +++++++++++++++++++++++ 4 files changed, 196 insertions(+), 1 deletion(-) create mode 100644 PRODUCTION_FIX.md create mode 100755 scripts/fix-production-env.sh diff --git a/Makefile b/Makefile index a636932..d03f2ea 100644 --- a/Makefile +++ b/Makefile @@ -112,6 +112,10 @@ deploy-full: ## Полное развертывание в продакшен с @echo "✅ Полное развертывание завершено!" @echo "🌐 Сайт доступен по адресу: https://links.shareon.kr" +fix-production: ## Исправление настроек продакшена + @echo "🔧 Исправление настроек продакшена..." + @./scripts/fix-production-env.sh + deploy: ## Развертывание в продакшен @echo "🚀 Развертывание в продакшен..." @$(DOCKER_COMPOSE) -f docker-compose.yml -f docker-compose.prod.yml down diff --git a/PRODUCTION_FIX.md b/PRODUCTION_FIX.md new file mode 100644 index 0000000..79df1b8 --- /dev/null +++ b/PRODUCTION_FIX.md @@ -0,0 +1,114 @@ +# Быстрое исправление проблем продакшена + +## 🚨 Проблема: password authentication failed + +### Причина +Неправильные настройки в `.env` файле: +- `DJANGO_DEBUG=True` (должно быть False) +- `NEXT_PUBLIC_API_URL=http://localhost:8000` (должно быть домен) +- Возможно проблема с паролем БД + +### ⚡ Быстрое решение + +На сервере выполните: + +```bash +cd /opt/links +git pull + +# Автоматическое исправление +make fix-production +``` + +### 🔧 Ручное исправление + +Если автоматическое не сработало: + +```bash +# 1. Остановить контейнеры +make down + +# 2. Создать правильный .env +cat > .env << 'EOF' +# Django настройки +DJANGO_SECRET_KEY=lskjflSDJHFdSFYU7TYOREIFLUDJKFBNKLJSDHFP9Q234856QT80OUAEIYDWSF9PQ28345701784QRTEOYAGWDFLSBAPWO9I485Y +DJANGO_DEBUG=False +DJANGO_ALLOWED_HOSTS=links.shareon.kr,sharon.kr,localhost,127.0.0.1 + +# База данных PostgreSQL +DATABASE_ENGINE=django.db.backends.postgresql +DATABASE_NAME=links_db +DATABASE_USER=links_user +DATABASE_PASSWORD=links_OASDUIFH90324*ftye(guBJ;O234789SDgfu{ +DATABASE_HOST=db +DATABASE_PORT=5432 + +# PostgreSQL настройки для контейнера +POSTGRES_DB=links_db +POSTGRES_USER=links_user +POSTGRES_PASSWORD=links_OASDUIFH90324*ftye(guBJ;O234789SDgfu{ + +# Frontend настройки (ВАЖНО!) +NEXT_PUBLIC_API_URL=http://links.shareon.kr + +# Для продакшена +DJANGO_SECURE_SSL_REDIRECT=False +DJANGO_SECURE_HSTS_SECONDS=31536000 +DJANGO_SECURE_HSTS_INCLUDE_SUBDOMAINS=True +DJANGO_SECURE_HSTS_PRELOAD=True +EOF + +# 3. Удалить старые данные БД +docker volume rm links_postgres_data + +# 4. Пересобрать и запустить +make build-prod +make up-prod + +# 5. Подождать запуска БД +sleep 15 + +# 6. Выполнить миграции +make migrate + +# 7. Создать суперпользователя +make superuser +``` + +### ✅ Проверка + +После исправления проверьте: + +```bash +# Быстрая проверка +make check-nginx + +# Проверка API +curl http://links.shareon.kr/api/ + +# Проверка админки +curl http://links.shareon.kr/admin/ +``` + +### 🎯 Результат + +После исправления должно работать: +- ✅ Сайт: http://links.shareon.kr +- ✅ API: http://links.shareon.kr/api/ +- ✅ Админка: http://links.shareon.kr/admin/ +- ✅ Логин через фронтенд + +### 🔍 Диагностика + +Если проблемы остались: + +```bash +# Полная диагностика +make check-nginx-full + +# Логи контейнеров +make logs + +# Статус контейнеров +make status +``` \ No newline at end of file diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index d79e66f..944036c 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -7,7 +7,7 @@ services: - DJANGO_SECURE_HSTS_SECONDS=31536000 - DJANGO_SECURE_HSTS_INCLUDE_SUBDOMAINS=True - DJANGO_SECURE_HSTS_PRELOAD=True - - DJANGO_ALLOWED_HOSTS=links.shareon.kr,sharon.kr,localhost,127.0.0.1 + - DJANGO_ALLOWED_HOSTS=links.shareon.kr,shareon.kr,localhost,127.0.0.1 restart: unless-stopped frontend: diff --git a/scripts/fix-production-env.sh b/scripts/fix-production-env.sh new file mode 100755 index 0000000..8476635 --- /dev/null +++ b/scripts/fix-production-env.sh @@ -0,0 +1,77 @@ +#!/bin/bash +# scripts/fix-production-env.sh - Исправление .env для продакшена + +echo "🔧 Исправление .env файла для продакшена" +echo "========================================" + +# Создание правильного .env файла +cat > .env << 'EOF' +# Django настройки +DJANGO_SECRET_KEY=lskjflSDJHFdSFYU7TYOREIFLUDJKFBNKLJSDHFP9Q234856QT80OUAEIYDWSF9PQ28345701784QRTEOYAGWDFLSBAPWO9I485Y +DJANGO_DEBUG=False +DJANGO_ALLOWED_HOSTS=links.shareon.kr,sharon.kr,localhost,127.0.0.1 + +# База данных PostgreSQL +DATABASE_ENGINE=django.db.backends.postgresql +DATABASE_NAME=links_db +DATABASE_USER=links_user +DATABASE_PASSWORD=links_OASDUIFH90324*ftye(guBJ;O234789SDgfu{ +DATABASE_HOST=db +DATABASE_PORT=5432 + +# PostgreSQL настройки для контейнера +POSTGRES_DB=links_db +POSTGRES_USER=links_user +POSTGRES_PASSWORD=links_OASDUIFH90324*ftye(guBJ;O234789SDgfu{ + +# Frontend настройки (ВАЖНО для продакшена!) +NEXT_PUBLIC_API_URL=http://links.shareon.kr + +# Для продакшена +DJANGO_SECURE_SSL_REDIRECT=False +DJANGO_SECURE_HSTS_SECONDS=31536000 +DJANGO_SECURE_HSTS_INCLUDE_SUBDOMAINS=True +DJANGO_SECURE_HSTS_PRELOAD=True + +# Опциональные настройки +# DJANGO_EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend +# DJANGO_EMAIL_HOST= +# DJANGO_EMAIL_PORT=587 +# DJANGO_EMAIL_HOST_USER= +# DJANGO_EMAIL_HOST_PASSWORD= +# DJANGO_EMAIL_USE_TLS=True +EOF + +echo "✅ .env файл обновлен для продакшена" +echo "" +echo "🔄 Перезапуск контейнеров..." + +# Остановка контейнеров +make down + +# Удаление старого volume с БД (если пароль изменился) +echo "🗄️ Очистка старых данных БД..." +docker volume rm links_postgres_data 2>/dev/null || true + +# Пересборка и запуск +echo "🏗️ Пересборка контейнеров..." +make build-prod + +echo "🚀 Запуск контейнеров..." +make up-prod + +echo "⏳ Ожидание запуска БД..." +sleep 15 + +echo "🗄️ Выполнение миграций..." +make migrate + +echo "👤 Создание суперпользователя..." +echo "Создайте суперпользователя для входа в админку:" +make superuser + +echo "" +echo "✅ Готово! Проверьте работу:" +echo "• Сайт: http://links.shareon.kr" +echo "• API: http://links.shareon.kr/api/" +echo "• Админка: http://links.shareon.kr/admin/" \ No newline at end of file