This commit is contained in:
@@ -22,6 +22,8 @@ services:
|
|||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "5432:5432"
|
||||||
|
|
||||||
frontend:
|
frontend:
|
||||||
build: ./frontend/linktree-frontend
|
build: ./frontend/linktree-frontend
|
||||||
|
|||||||
78
scripts/fix-frontend-api-url.sh
Executable file
78
scripts/fix-frontend-api-url.sh
Executable file
@@ -0,0 +1,78 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# scripts/fix-frontend-api-url.sh - Исправление API URL для frontend
|
||||||
|
|
||||||
|
echo "🔧 Исправление NEXT_PUBLIC_API_URL для frontend"
|
||||||
|
echo "=============================================="
|
||||||
|
|
||||||
|
# Проверяем текущие переменные в frontend контейнере
|
||||||
|
echo "📋 Текущие переменные в frontend контейнере:"
|
||||||
|
docker exec links-frontend-1 env | grep NEXT_PUBLIC || echo "NEXT_PUBLIC_API_URL не найден!"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "🛠️ Остановка контейнеров..."
|
||||||
|
docker compose down
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
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
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "🗄️ Удаление старого volume БД (если нужно)..."
|
||||||
|
docker volume rm links_postgres_data 2>/dev/null || echo "Volume не найден или используется"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "🏗️ Полная пересборка контейнеров (особенно frontend!)..."
|
||||||
|
docker compose -f docker-compose.yml -f docker-compose.prod.yml build --no-cache
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "🚀 Запуск контейнеров..."
|
||||||
|
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "⏳ Ожидание запуска БД..."
|
||||||
|
sleep 15
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "🗄️ Выполнение миграций..."
|
||||||
|
docker compose exec web python manage.py migrate
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "✅ Проверка переменных в новом frontend контейнере:"
|
||||||
|
docker exec links-frontend-1 env | grep NEXT_PUBLIC
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "🧪 Тестирование API:"
|
||||||
|
curl -I http://links.shareon.kr/api/ || echo "API недоступно"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "✅ Готово! Проверьте логин на сайте:"
|
||||||
|
echo " http://links.shareon.kr/auth/login"
|
||||||
|
echo ""
|
||||||
|
echo "💡 Если проблема остается, очистите кэш браузера (Ctrl+F5)"
|
||||||
155
scripts/production-server-setup.sh
Executable file
155
scripts/production-server-setup.sh
Executable file
@@ -0,0 +1,155 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# scripts/production-server-setup.sh - Настройка сервера для продакшена
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "🚀 Настройка сервера для CatLink (продакшен)"
|
||||||
|
echo "============================================="
|
||||||
|
|
||||||
|
# Цвета для вывода
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
echo -e "${BLUE}1. Обновление системы${NC}"
|
||||||
|
echo "---------------------"
|
||||||
|
sudo apt update && sudo apt upgrade -y
|
||||||
|
|
||||||
|
echo -e "${BLUE}2. Установка базовых пакетов${NC}"
|
||||||
|
echo "----------------------------"
|
||||||
|
sudo apt install -y \
|
||||||
|
curl \
|
||||||
|
wget \
|
||||||
|
git \
|
||||||
|
htop \
|
||||||
|
iotop \
|
||||||
|
unzip \
|
||||||
|
software-properties-common \
|
||||||
|
apt-transport-https \
|
||||||
|
ca-certificates \
|
||||||
|
gnupg \
|
||||||
|
lsb-release \
|
||||||
|
ufw
|
||||||
|
|
||||||
|
echo -e "${BLUE}3. Настройка firewall (UFW)${NC}"
|
||||||
|
echo "----------------------------"
|
||||||
|
sudo ufw default deny incoming
|
||||||
|
sudo ufw default allow outgoing
|
||||||
|
sudo ufw allow ssh
|
||||||
|
sudo ufw allow 80
|
||||||
|
sudo ufw allow 443
|
||||||
|
sudo ufw --force enable
|
||||||
|
sudo ufw status
|
||||||
|
|
||||||
|
echo -e "${BLUE}4. Установка Docker${NC}"
|
||||||
|
echo "-------------------"
|
||||||
|
# Удаление старых версий
|
||||||
|
sudo apt remove -y docker docker-engine docker.io containerd runc || true
|
||||||
|
|
||||||
|
# Добавление репозитория Docker
|
||||||
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
||||||
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||||
|
|
||||||
|
# Установка Docker
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||||
|
|
||||||
|
# Добавление пользователя в группу docker
|
||||||
|
sudo usermod -aG docker $USER
|
||||||
|
|
||||||
|
# Запуск Docker
|
||||||
|
sudo systemctl enable docker
|
||||||
|
sudo systemctl start docker
|
||||||
|
|
||||||
|
echo -e "${BLUE}5. Установка Nginx${NC}"
|
||||||
|
echo "------------------"
|
||||||
|
sudo apt install -y nginx
|
||||||
|
sudo systemctl enable nginx
|
||||||
|
sudo systemctl start nginx
|
||||||
|
|
||||||
|
echo -e "${BLUE}6. Установка Certbot${NC}"
|
||||||
|
echo "-------------------"
|
||||||
|
sudo apt install -y certbot python3-certbot-nginx
|
||||||
|
|
||||||
|
echo -e "${BLUE}7. Создание директорий для проекта${NC}"
|
||||||
|
echo "-----------------------------------"
|
||||||
|
sudo mkdir -p /opt/links
|
||||||
|
sudo chown $USER:$USER /opt/links
|
||||||
|
|
||||||
|
echo -e "${BLUE}8. Клонирование репозитория${NC}"
|
||||||
|
echo "-----------------------------"
|
||||||
|
cd /opt
|
||||||
|
if [ ! -d "links" ]; then
|
||||||
|
git clone https://github.com/smartsoltech/links.git
|
||||||
|
cd links
|
||||||
|
else
|
||||||
|
cd links
|
||||||
|
git pull
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${BLUE}9. Настройка swap (если нужно)${NC}"
|
||||||
|
echo "------------------------------"
|
||||||
|
if [ $(free | grep Swap | awk '{print $2}') -eq 0 ]; then
|
||||||
|
echo "Создание swap файла 2GB..."
|
||||||
|
sudo fallocate -l 2G /swapfile
|
||||||
|
sudo chmod 600 /swapfile
|
||||||
|
sudo mkswap /swapfile
|
||||||
|
sudo swapon /swapfile
|
||||||
|
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
|
||||||
|
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${BLUE}10. Настройка логирования${NC}"
|
||||||
|
echo "----------------------------"
|
||||||
|
# Настройка logrotate для docker
|
||||||
|
sudo tee /etc/logrotate.d/docker > /dev/null << 'EOF'
|
||||||
|
/var/lib/docker/containers/*/*.log {
|
||||||
|
rotate 7
|
||||||
|
daily
|
||||||
|
compress
|
||||||
|
size=1M
|
||||||
|
missingok
|
||||||
|
delaycompress
|
||||||
|
copytruncate
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo -e "${BLUE}11. Оптимизация производительности${NC}"
|
||||||
|
echo "------------------------------------"
|
||||||
|
# Настройка sysctl для веб-сервера
|
||||||
|
sudo tee -a /etc/sysctl.conf > /dev/null << 'EOF'
|
||||||
|
|
||||||
|
# Network optimizations
|
||||||
|
net.core.somaxconn = 65535
|
||||||
|
net.core.netdev_max_backlog = 5000
|
||||||
|
net.ipv4.tcp_fin_timeout = 30
|
||||||
|
net.ipv4.tcp_keepalive_time = 1200
|
||||||
|
net.ipv4.tcp_max_syn_backlog = 8192
|
||||||
|
net.ipv4.tcp_max_tw_buckets = 5000
|
||||||
|
net.ipv4.tcp_syncookies = 1
|
||||||
|
net.ipv4.tcp_tw_reuse = 1
|
||||||
|
net.ipv4.ip_local_port_range = 1024 65535
|
||||||
|
|
||||||
|
# File system optimizations
|
||||||
|
fs.file-max = 65535
|
||||||
|
EOF
|
||||||
|
|
||||||
|
sudo sysctl -p
|
||||||
|
|
||||||
|
echo -e "${GREEN}✅ Сервер готов для развертывания CatLink!${NC}"
|
||||||
|
echo ""
|
||||||
|
echo -e "${YELLOW}📝 Следующие шаги:${NC}"
|
||||||
|
echo "1. Выйдите и войдите заново (для применения docker group)"
|
||||||
|
echo "2. Настройте DNS записи для вашего домена"
|
||||||
|
echo "3. Запустите: cd /opt/links && make fix-production"
|
||||||
|
echo "4. Получите SSL сертификат: make ssl-cert"
|
||||||
|
echo ""
|
||||||
|
echo -e "${BLUE}🔍 Проверка установки:${NC}"
|
||||||
|
echo "- Docker: $(docker --version)"
|
||||||
|
echo "- Docker Compose: $(docker compose version)"
|
||||||
|
echo "- Nginx: $(nginx -v 2>&1)"
|
||||||
|
echo "- Certbot: $(certbot --version 2>&1 | head -1)"
|
||||||
|
echo ""
|
||||||
|
echo -e "${GREEN}🎉 Сервер готов!${NC}"
|
||||||
Reference in New Issue
Block a user