266 lines
5.9 KiB
Markdown
266 lines
5.9 KiB
Markdown
|
||
# Инструкция по развертыванию Global-IT24 на Ubuntu с Traefik
|
||
|
||
## Предварительные требования
|
||
|
||
1. Ubuntu Server (20.04 или новее)
|
||
2. Docker и Docker Compose установлены
|
||
3. Traefik настроен как reverse proxy
|
||
4. Домен направлен на ваш сервер
|
||
|
||
## Шаг 1: Настройка Traefik
|
||
|
||
Если Traefik еще не настроен, создайте базовую конфигурацию:
|
||
|
||
```bash
|
||
# Создайте сеть для Traefik
|
||
docker network create traefik-public
|
||
|
||
# Создайте директорию для Traefik
|
||
mkdir -p ~/traefik
|
||
cd ~/traefik
|
||
```
|
||
|
||
Создайте `docker-compose.yml` для Traefik:
|
||
|
||
```yaml
|
||
version: '3.8'
|
||
|
||
services:
|
||
traefik:
|
||
image: traefik:v2.10
|
||
container_name: traefik
|
||
restart: unless-stopped
|
||
security_opt:
|
||
- no-new-privileges:true
|
||
networks:
|
||
- traefik-public
|
||
ports:
|
||
- "80:80"
|
||
- "443:443"
|
||
volumes:
|
||
- /etc/localtime:/etc/localtime:ro
|
||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||
- ./traefik.yml:/traefik.yml:ro
|
||
- ./acme.json:/acme.json
|
||
- ./config.yml:/config.yml:ro
|
||
labels:
|
||
- "traefik.enable=true"
|
||
- "traefik.http.routers.traefik.entrypoints=web"
|
||
|
||
networks:
|
||
traefik-public:
|
||
external: true
|
||
```
|
||
|
||
Создайте `traefik.yml`:
|
||
|
||
```yaml
|
||
api:
|
||
dashboard: true
|
||
insecure: false
|
||
|
||
entryPoints:
|
||
web:
|
||
address: ":80"
|
||
http:
|
||
redirections:
|
||
entryPoint:
|
||
to: websecure
|
||
scheme: https
|
||
websecure:
|
||
address: ":443"
|
||
http:
|
||
tls:
|
||
certResolver: letsencrypt
|
||
|
||
providers:
|
||
docker:
|
||
endpoint: "unix:///var/run/docker.sock"
|
||
exposedByDefault: false
|
||
network: traefik-public
|
||
file:
|
||
filename: /config.yml
|
||
|
||
certificatesResolvers:
|
||
letsencrypt:
|
||
acme:
|
||
email: your-email@example.com
|
||
storage: acme.json
|
||
httpChallenge:
|
||
entryPoint: web
|
||
```
|
||
|
||
Создайте файл для SSL сертификатов:
|
||
|
||
```bash
|
||
touch acme.json
|
||
chmod 600 acme.json
|
||
```
|
||
|
||
Запустите Traefik:
|
||
|
||
```bash
|
||
docker-compose up -d
|
||
```
|
||
|
||
## Шаг 2: Развертывание Global-IT24
|
||
|
||
1. **Клонируйте или скопируйте проект на сервер:**
|
||
|
||
```bash
|
||
cd /home/your-user
|
||
# Скопируйте папку global_it24_landing на сервер
|
||
```
|
||
|
||
2. **Создайте .env файл:**
|
||
|
||
```bash
|
||
cd global_it24_landing
|
||
cp .env.example .env
|
||
nano .env
|
||
```
|
||
|
||
Отредактируйте `.env`:
|
||
|
||
```env
|
||
DOMAIN=ваш-домен.ru
|
||
NEXT_PUBLIC_SITE_URL=https://ваш-домен.ru
|
||
NODE_ENV=production
|
||
```
|
||
|
||
3. **Соберите и запустите контейнер:**
|
||
|
||
```bash
|
||
# Сборка образа
|
||
docker-compose build
|
||
|
||
# Запуск контейнера
|
||
docker-compose up -d
|
||
|
||
# Проверка логов
|
||
docker-compose logs -f
|
||
```
|
||
|
||
## Шаг 3: Проверка работы
|
||
|
||
1. Откройте браузер и перейдите на ваш домен
|
||
2. Проверьте, что HTTPS работает корректно
|
||
3. Проверьте мобильную версию сайта
|
||
|
||
## Команды для управления
|
||
|
||
```bash
|
||
# Перезапуск контейнера
|
||
docker-compose restart
|
||
|
||
# Остановка контейнера
|
||
docker-compose down
|
||
|
||
# Просмотр логов
|
||
docker-compose logs -f
|
||
|
||
# Обновление после изменений
|
||
docker-compose down
|
||
docker-compose build
|
||
docker-compose up -d
|
||
|
||
# Проверка статуса
|
||
docker-compose ps
|
||
```
|
||
|
||
## Оптимизация производительности
|
||
|
||
1. **Включите кэширование в Traefik** (добавьте в labels):
|
||
```yaml
|
||
- "traefik.http.middlewares.cache-control.headers.customResponseHeaders.Cache-Control=public, max-age=31536000"
|
||
```
|
||
|
||
2. **Настройте компрессию** (добавьте в labels):
|
||
```yaml
|
||
- "traefik.http.middlewares.compress.compress=true"
|
||
- "traefik.http.routers.global-it24-secure.middlewares=compress@docker"
|
||
```
|
||
|
||
3. **Ограничьте ресурсы контейнера** (добавьте в docker-compose.yml):
|
||
```yaml
|
||
deploy:
|
||
resources:
|
||
limits:
|
||
cpus: '1'
|
||
memory: 512M
|
||
reservations:
|
||
cpus: '0.5'
|
||
memory: 256M
|
||
```
|
||
|
||
## Резервное копирование
|
||
|
||
```bash
|
||
# Создайте скрипт для бэкапа
|
||
cat > backup.sh << 'EOF'
|
||
#!/bin/bash
|
||
BACKUP_DIR="/backup/global-it24"
|
||
DATE=$(date +%Y%m%d_%H%M%S)
|
||
mkdir -p $BACKUP_DIR
|
||
docker-compose exec global-it24-web tar czf - /app > $BACKUP_DIR/backup_$DATE.tar.gz
|
||
EOF
|
||
|
||
chmod +x backup.sh
|
||
```
|
||
|
||
## Мониторинг
|
||
|
||
```bash
|
||
# Проверка использования ресурсов
|
||
docker stats global-it24-landing
|
||
|
||
# Проверка здоровья контейнера
|
||
docker inspect --format='{{.State.Health.Status}}' global-it24-landing
|
||
```
|
||
|
||
## Устранение неполадок
|
||
|
||
### Контейнер не запускается:
|
||
```bash
|
||
docker-compose logs global-it24-web
|
||
```
|
||
|
||
### Проблемы с SSL:
|
||
```bash
|
||
docker logs traefik
|
||
# Проверьте acme.json
|
||
```
|
||
|
||
### Сайт недоступен:
|
||
```bash
|
||
# Проверьте, что контейнер работает
|
||
docker ps | grep global-it24
|
||
|
||
# Проверьте сеть
|
||
docker network inspect traefik-public
|
||
|
||
# Проверьте порты
|
||
netstat -tulpn | grep -E '80|443'
|
||
```
|
||
|
||
## Безопасность
|
||
|
||
1. Регулярно обновляйте Docker образы
|
||
2. Используйте файрвол (ufw):
|
||
```bash
|
||
sudo ufw allow 80/tcp
|
||
sudo ufw allow 443/tcp
|
||
sudo ufw enable
|
||
```
|
||
|
||
3. Настройте автоматические обновления безопасности:
|
||
```bash
|
||
sudo apt install unattended-upgrades
|
||
sudo dpkg-reconfigure --priority=low unattended-upgrades
|
||
```
|
||
|
||
## Контакты для поддержки
|
||
|
||
При возникновении проблем проверьте логи и документацию Traefik: https://doc.traefik.io/traefik/
|