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