Compare commits
2 Commits
17bd14383b
...
9b31fcf193
| Author | SHA1 | Date | |
|---|---|---|---|
| 9b31fcf193 | |||
| 5376d5139e |
4
Makefile
4
Makefile
@@ -112,6 +112,10 @@ deploy-full: ## Полное развертывание в продакшен с
|
|||||||
@echo "✅ Полное развертывание завершено!"
|
@echo "✅ Полное развертывание завершено!"
|
||||||
@echo "🌐 Сайт доступен по адресу: https://links.shareon.kr"
|
@echo "🌐 Сайт доступен по адресу: https://links.shareon.kr"
|
||||||
|
|
||||||
|
fix-production: ## Исправление настроек продакшена
|
||||||
|
@echo "🔧 Исправление настроек продакшена..."
|
||||||
|
@./scripts/fix-production-env.sh
|
||||||
|
|
||||||
deploy: ## Развертывание в продакшен
|
deploy: ## Развертывание в продакшен
|
||||||
@echo "🚀 Развертывание в продакшен..."
|
@echo "🚀 Развертывание в продакшен..."
|
||||||
@$(DOCKER_COMPOSE) -f docker-compose.yml -f docker-compose.prod.yml down
|
@$(DOCKER_COMPOSE) -f docker-compose.yml -f docker-compose.prod.yml down
|
||||||
|
|||||||
114
PRODUCTION_FIX.md
Normal file
114
PRODUCTION_FIX.md
Normal file
@@ -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
|
||||||
|
```
|
||||||
@@ -7,7 +7,7 @@ services:
|
|||||||
- DJANGO_SECURE_HSTS_SECONDS=31536000
|
- DJANGO_SECURE_HSTS_SECONDS=31536000
|
||||||
- DJANGO_SECURE_HSTS_INCLUDE_SUBDOMAINS=True
|
- DJANGO_SECURE_HSTS_INCLUDE_SUBDOMAINS=True
|
||||||
- DJANGO_SECURE_HSTS_PRELOAD=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
|
restart: unless-stopped
|
||||||
|
|
||||||
frontend:
|
frontend:
|
||||||
|
|||||||
166
docs/NGINX_DIAGNOSTICS.md
Normal file
166
docs/NGINX_DIAGNOSTICS.md
Normal file
@@ -0,0 +1,166 @@
|
|||||||
|
# Диагностика nginx для CatLink
|
||||||
|
|
||||||
|
## Скрипты проверки
|
||||||
|
|
||||||
|
### 🚀 Быстрая проверка
|
||||||
|
```bash
|
||||||
|
make check-nginx
|
||||||
|
# ИЛИ
|
||||||
|
./scripts/nginx-quick-check.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
**Что проверяет:**
|
||||||
|
- ✅ Статус службы nginx
|
||||||
|
- ✅ Корректность конфигурации
|
||||||
|
- ✅ Прослушивание портов
|
||||||
|
- ✅ Доступность backend (порт 8000)
|
||||||
|
- ✅ Доступность frontend (порт 3000)
|
||||||
|
- ✅ Работа проксирования через nginx
|
||||||
|
- ✅ Доступность по доменному имени
|
||||||
|
|
||||||
|
### 🔍 Полная диагностика
|
||||||
|
```bash
|
||||||
|
make check-nginx-full
|
||||||
|
# ИЛИ
|
||||||
|
./scripts/check-nginx.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
**Что проверяет:**
|
||||||
|
- 🔧 Установка и статус nginx
|
||||||
|
- 📝 Конфигурационные файлы
|
||||||
|
- 🌐 Прослушиваемые порты (80, 443)
|
||||||
|
- 🔗 Доступность backend сервисов
|
||||||
|
- 🌍 Проверка через nginx
|
||||||
|
- 🌐 Доменные имена
|
||||||
|
- 🔒 SSL сертификаты
|
||||||
|
- 📄 Анализ конфигурации
|
||||||
|
- 📊 Логи nginx
|
||||||
|
- 💡 Рекомендации по исправлению
|
||||||
|
|
||||||
|
## Типичные проблемы и решения
|
||||||
|
|
||||||
|
### ❌ nginx не работает
|
||||||
|
```bash
|
||||||
|
sudo systemctl start nginx
|
||||||
|
sudo systemctl enable nginx
|
||||||
|
```
|
||||||
|
|
||||||
|
### ❌ Ошибка в конфигурации
|
||||||
|
```bash
|
||||||
|
sudo nginx -t
|
||||||
|
./scripts/setup-nginx.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### ❌ Порт 80 не прослушивается
|
||||||
|
```bash
|
||||||
|
sudo systemctl restart nginx
|
||||||
|
sudo ss -tlnp | grep nginx
|
||||||
|
```
|
||||||
|
|
||||||
|
### ❌ Backend недоступен
|
||||||
|
```bash
|
||||||
|
make status
|
||||||
|
make up-prod
|
||||||
|
docker ps
|
||||||
|
```
|
||||||
|
|
||||||
|
### ❌ Frontend недоступен
|
||||||
|
```bash
|
||||||
|
make logs-frontend
|
||||||
|
make restart
|
||||||
|
```
|
||||||
|
|
||||||
|
### ❌ Домен недоступен
|
||||||
|
```bash
|
||||||
|
# Проверьте DNS записи
|
||||||
|
dig links.shareon.kr
|
||||||
|
nslookup links.shareon.kr
|
||||||
|
|
||||||
|
# Проверьте nginx конфигурацию
|
||||||
|
sudo nginx -t
|
||||||
|
```
|
||||||
|
|
||||||
|
## Проверка конфигурации вручную
|
||||||
|
|
||||||
|
### Проверка nginx
|
||||||
|
```bash
|
||||||
|
# Статус службы
|
||||||
|
sudo systemctl status nginx
|
||||||
|
|
||||||
|
# Проверка конфигурации
|
||||||
|
sudo nginx -t
|
||||||
|
|
||||||
|
# Перезагрузка конфигурации
|
||||||
|
sudo nginx -s reload
|
||||||
|
|
||||||
|
# Просмотр логов
|
||||||
|
sudo tail -f /var/log/nginx/access.log
|
||||||
|
sudo tail -f /var/log/nginx/error.log
|
||||||
|
```
|
||||||
|
|
||||||
|
### Проверка портов
|
||||||
|
```bash
|
||||||
|
# Все прослушиваемые порты
|
||||||
|
sudo ss -tlnp
|
||||||
|
|
||||||
|
# Только nginx
|
||||||
|
sudo ss -tlnp | grep nginx
|
||||||
|
|
||||||
|
# Проверка портов 80 и 443
|
||||||
|
sudo netstat -tlnp | grep :80
|
||||||
|
sudo netstat -tlnp | grep :443
|
||||||
|
```
|
||||||
|
|
||||||
|
### Проверка сервисов
|
||||||
|
```bash
|
||||||
|
# Backend API
|
||||||
|
curl -I http://localhost:8000/api/
|
||||||
|
|
||||||
|
# Frontend
|
||||||
|
curl -I http://localhost:3000/
|
||||||
|
|
||||||
|
# Через nginx
|
||||||
|
curl -I http://localhost/
|
||||||
|
curl -I http://localhost/api/
|
||||||
|
curl -I http://links.shareon.kr/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Проверка Docker контейнеров
|
||||||
|
```bash
|
||||||
|
# Статус контейнеров
|
||||||
|
docker ps
|
||||||
|
|
||||||
|
# Логи
|
||||||
|
docker logs links-web-1
|
||||||
|
docker logs links-frontend-1
|
||||||
|
docker logs links-db-1
|
||||||
|
|
||||||
|
# Переменные окружения
|
||||||
|
docker exec links-frontend-1 env | grep NEXT_PUBLIC
|
||||||
|
```
|
||||||
|
|
||||||
|
## Автоматическая диагностика
|
||||||
|
|
||||||
|
Для автоматической проверки при развертывании добавьте в ваши скрипты:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# В конце deploy скрипта
|
||||||
|
echo "🔍 Проверка развертывания..."
|
||||||
|
./scripts/nginx-quick-check.sh
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "✅ Развертывание успешно завершено!"
|
||||||
|
else
|
||||||
|
echo "❌ Обнаружены проблемы. Запустите полную диагностику:"
|
||||||
|
echo " ./scripts/check-nginx.sh"
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
|
## Мониторинг
|
||||||
|
|
||||||
|
Для постоянного мониторинга можете добавить в crontab:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверка каждые 5 минут
|
||||||
|
*/5 * * * * /opt/links/scripts/nginx-quick-check.sh >> /var/log/catlink-health.log 2>&1
|
||||||
|
```
|
||||||
77
scripts/fix-production-env.sh
Executable file
77
scripts/fix-production-env.sh
Executable file
@@ -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/"
|
||||||
Reference in New Issue
Block a user