environment emprovements
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2025-11-04 21:18:15 +09:00
parent eb55d06c44
commit 20014d3a81
5 changed files with 351 additions and 137 deletions

111
setup.sh
View File

@@ -78,81 +78,54 @@ create_env_file() {
if [ -f .env ]; then
print_info ".env файл уже существует"
read -p "Пересоздать? (y/N): " recreate
if [[ ! $recreate =~ ^[Yy]$ ]]; then
read -p "Пересоздать с помощью интерактивного генератора? (y/N): " recreate
if [[ $recreate =~ ^[Yy]$ ]]; then
print_info "Запуск интерактивного генератора .env..."
./scripts/generate_env.sh
return
else
print_info "Пропуск создания .env"
return
fi
fi
# Генерация SECRET_KEY
SECRET_KEY=$(python3 -c "import secrets; print(secrets.token_urlsafe(50))" 2>/dev/null || openssl rand -base64 32)
print_info "Запуск интерактивного генератора .env..."
# Запрос данных от пользователя
echo ""
read -p "Имя базы данных [links_db]: " DB_NAME
DB_NAME=${DB_NAME:-links_db}
read -p "Пользователь БД [links_user]: " DB_USER
DB_USER=${DB_USER:-links_user}
read -p "Пароль БД [links_password]: " DB_PASSWORD
DB_PASSWORD=${DB_PASSWORD:-links_password}
read -p "Хост БД [db]: " DB_HOST
DB_HOST=${DB_HOST:-db}
read -p "Порт БД [5432]: " DB_PORT
DB_PORT=${DB_PORT:-5432}
read -p "Домен для продакшена [localhost]: " DOMAIN
DOMAIN=${DOMAIN:-localhost}
read -p "Email для SSL сертификатов: " SSL_EMAIL
# Создание .env файла
cat > .env << EOF
# Django Configuration
SECRET_KEY=$SECRET_KEY
DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1,$DOMAIN
# Database Configuration
DATABASE_URL=postgresql://$DB_USER:$DB_PASSWORD@$DB_HOST:$DB_PORT/$DB_NAME
DB_NAME=$DB_NAME
DB_USER=$DB_USER
DB_PASSWORD=$DB_PASSWORD
DB_HOST=$DB_HOST
DB_PORT=$DB_PORT
# Production Settings
DOMAIN=$DOMAIN
SSL_EMAIL=$SSL_EMAIL
# CORS Settings
CORS_ALLOWED_ORIGINS=http://localhost:3000,https://$DOMAIN
# File Upload Settings
MAX_UPLOAD_SIZE=10485760
MEDIA_ROOT=/app/storage
# Cache Settings
CACHE_TTL=300
# Email Settings (optional)
EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend
EMAIL_HOST=
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_HOST_USER=
EMAIL_HOST_PASSWORD=
# Redis Settings (optional)
REDIS_URL=redis://redis:6379/0
# Logging
LOG_LEVEL=INFO
EOF
# Проверяем наличие скрипта генерации
if [ -f "scripts/generate_env.sh" ]; then
chmod +x scripts/generate_env.sh
./scripts/generate_env.sh
else
print_warning "Скрипт генерации не найден, создаем базовый .env"
# Генерация SECRET_KEY
SECRET_KEY=$(python3 -c "import secrets; print(secrets.token_urlsafe(50))" 2>/dev/null || openssl rand -base64 32)
# Запрос основных данных
echo ""
read -p "Имя базы данных [links_db]: " DB_NAME
DB_NAME=${DB_NAME:-links_db}
read -p "Пользователь БД [links_user]: " DB_USER
DB_USER=${DB_USER:-links_user}
read -p "Пароль БД (пустой для генерации): " DB_PASSWORD
if [ -z "$DB_PASSWORD" ]; then
DB_PASSWORD=$(openssl rand -base64 32 | tr -d "=+/" | cut -c1-25)
print_info "Сгенерирован пароль БД: $DB_PASSWORD"
fi
# Копируем из примера и заполняем основные поля
cp .env.example .env
sed -i "s|^DJANGO_SECRET_KEY=.*|DJANGO_SECRET_KEY=$SECRET_KEY|" .env
sed -i "s|^DATABASE_NAME=.*|DATABASE_NAME=$DB_NAME|" .env
sed -i "s|^DATABASE_USER=.*|DATABASE_USER=$DB_USER|" .env
sed -i "s|^DATABASE_PASSWORD=.*|DATABASE_PASSWORD=$DB_PASSWORD|" .env
sed -i "s|^POSTGRES_DB=.*|POSTGRES_DB=$DB_NAME|" .env
sed -i "s|^POSTGRES_USER=.*|POSTGRES_USER=$DB_USER|" .env
sed -i "s|^POSTGRES_PASSWORD=.*|POSTGRES_PASSWORD=$DB_PASSWORD|" .env
sed -i "s|^NEXT_PUBLIC_API_URL=.*|NEXT_PUBLIC_API_URL=http://localhost:8000|" .env
fi
print_success ".env файл создан"
}