poker/DEPLOYMENT.md

440 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<VirtualHost *:80>
ServerName poker.yourdomain.com
ServerAdmin admin@yourdomain.com
# Логи
ErrorLog ${APACHE_LOG_DIR}/poker_error.log
CustomLog ${APACHE_LOG_DIR}/poker_access.log combined
# Проксирование на Docker контейнер
ProxyPreserveHost On
ProxyPass / http://localhost:3336/
ProxyPassReverse / http://localhost:3336/
# WebSocket поддержка
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://localhost:3336/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*) http://localhost:3336/$1 [P,L]
# Заголовки для WebSocket
<Location />
ProxyPass http://localhost:3336/
ProxyPassReverse http://localhost:3336/
ProxyPreserveHost On
# WebSocket headers
RequestHeader set X-Forwarded-Proto "http"
RequestHeader set X-Forwarded-Port "80"
</Location>
</VirtualHost>
# SSL версия (если используете HTTPS)
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName poker.yourdomain.com
ServerAdmin admin@yourdomain.com
# SSL сертификаты
SSLEngine on
SSLCertificateFile /etc/ssl/certs/poker.crt
SSLCertificateKeyFile /etc/ssl/private/poker.key
# SSLCertificateChainFile /etc/ssl/certs/chain.pem
# Логи
ErrorLog ${APACHE_LOG_DIR}/poker_ssl_error.log
CustomLog ${APACHE_LOG_DIR}/poker_ssl_access.log combined
# Проксирование на Docker контейнер
ProxyPreserveHost On
ProxyPass / http://localhost:3336/
ProxyPassReverse / http://localhost:3336/
# WebSocket поддержка
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://localhost:3336/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*) http://localhost:3336/$1 [P,L]
# Заголовки для WebSocket
<Location />
ProxyPass http://localhost:3336/
ProxyPassReverse http://localhost:3336/
ProxyPreserveHost On
# WebSocket headers
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
</Location>
# Безопасность
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
</VirtualHost>
</IfModule>
# 🃏 Texas Hold'em Poker - Развертывание в Docker
## 📋 Содержание
- [Быстрый старт](#быстрый-старт)
- [Развертывание с Docker](#развертывание-с-docker)
- [Настройка Apache](#настройка-apache)
- [Переменные окружения](#переменные-окружения)
- [Backup и восстановление](#backup-и-восстановление)
---
## 🚀 Быстрый старт
### Запуск через Docker Compose (рекомендуется)
```bash
# Клонируйте репозиторий
git clone <repository-url>
cd onlinepocker
# Запустите контейнер
docker-compose up -d
# Проверьте статус
docker-compose ps
# Просмотр логов
docker-compose logs -f
```
Приложение будет доступно по адресу: `http://localhost:3336`
---
## 🐳 Развертывание с Docker
### Сборка Docker образа вручную
```bash
# Сборка образа
docker build -t texas-holdem-poker:latest .
# Запуск контейнера
docker run -d \
--name poker-app \
-p 3336:3336 \
-v $(pwd)/data:/app/data \
-e NODE_ENV=production \
-e PORT=3336 \
texas-holdem-poker:latest
# Проверка работы
docker ps
docker logs poker-app
```
### Управление контейнером
```bash
# Остановка
docker stop poker-app
# Запуск
docker start poker-app
# Перезапуск
docker restart poker-app
# Удаление
docker stop poker-app
docker rm poker-app
# Просмотр логов
docker logs -f poker-app
```
### Docker Compose команды
```bash
# Запуск в фоне
docker-compose up -d
# Остановка
docker-compose down
# Перезапуск
docker-compose restart
# Пересборка образа
docker-compose build
# Пересборка и запуск
docker-compose up -d --build
# Просмотр логов
docker-compose logs -f
# Остановка с удалением volumes
docker-compose down -v
```
---
## 🌐 Настройка Apache
### Включение необходимых модулей Apache
```bash
# Включаем модули для проксирования и WebSocket
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_wstunnel
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod ssl # Если используете HTTPS
# Перезапуск Apache
sudo systemctl restart apache2
```
### Копирование конфигурации
```bash
# Копируем конфиг в Apache
sudo cp apache-config.conf /etc/apache2/sites-available/poker.conf
# Редактируем домен (замените poker.yourdomain.com на ваш домен)
sudo nano /etc/apache2/sites-available/poker.conf
# Включаем сайт
sudo a2ensite poker.conf
# Проверяем конфигурацию
sudo apache2ctl configtest
# Перезагружаем Apache
sudo systemctl reload apache2
```
### Проверка статуса Apache
```bash
# Проверка статуса
sudo systemctl status apache2
# Просмотр логов ошибок
sudo tail -f /var/log/apache2/poker_error.log
# Просмотр логов доступа
sudo tail -f /var/log/apache2/poker_access.log
```
---
## ⚙️ Переменные окружения
### Основные переменные
| Переменная | Значение по умолчанию | Описание |
|------------|----------------------|----------|
| `PORT` | 3336 | Порт для запуска сервера |
| `NODE_ENV` | production | Режим работы (production/development) |
### Настройка в docker-compose.yml
```yaml
environment:
- NODE_ENV=production
- PORT=3336
```
### Настройка в Dockerfile
```dockerfile
ENV NODE_ENV=production
ENV PORT=3336
```
---
## 📦 Структура проекта после развертывания
```
onlinepocker/
├── data/ # База данных (создается автоматически)
│ └── poker.db
├── logs/ # Логи приложения (опционально)
├── public/ # Статические файлы
├── node_modules/ # Зависимости
├── server.js # Основной сервер
├── database.js # Работа с БД
├── package.json
├── Dockerfile # Docker образ
├── docker-compose.yml # Docker Compose конфигурация
├── .dockerignore # Исключения для Docker
└── apache-config.conf # Конфигурация Apache
```
---
## 💾 Backup и восстановление
### Создание резервной копии базы данных
```bash
# Остановка контейнера
docker-compose stop
# Копирование БД
cp data/poker.db data/poker.db.backup.$(date +%Y%m%d_%H%M%S)
# Запуск контейнера
docker-compose start
```
### Восстановление из резервной копии
```bash
# Остановка контейнера
docker-compose stop
# Восстановление БД
cp data/poker.db.backup.20260201_120000 data/poker.db
# Запуск контейнера
docker-compose start
```
### Автоматический backup (cron)
```bash
# Создаем скрипт backup
nano /opt/poker-backup.sh
```
```bash
#!/bin/bash
BACKUP_DIR="/opt/poker-backups"
DATE=$(date +%Y%m%d_%H%M%S)
# Создаем директорию для backup
mkdir -p $BACKUP_DIR
# Копируем БД
docker cp texas-holdem-poker:/app/data/poker.db $BACKUP_DIR/poker.db.$DATE
# Удаляем старые backup (старше 30 дней)
find $BACKUP_DIR -name "poker.db.*" -mtime +30 -delete
echo "Backup создан: poker.db.$DATE"
```
```bash
# Делаем скрипт исполняемым
chmod +x /opt/poker-backup.sh
# Добавляем в cron (каждый день в 3:00)
crontab -e
# Добавьте строку:
0 3 * * * /opt/poker-backup.sh >> /var/log/poker-backup.log 2>&1
```
---
## 🔧 Troubleshooting
### Проблемы с портами
```bash
# Проверка, не занят ли порт 3336
sudo netstat -tlnp | grep 3336
# Если порт занят, найти процесс
sudo lsof -i :3336
# Убить процесс
sudo kill -9 <PID>
```
### Проблемы с WebSocket
```bash
# Проверка модулей Apache
apache2ctl -M | grep proxy
# Должны быть включены:
# - proxy_module
# - proxy_http_module
# - proxy_wstunnel_module
```
### Проблемы с правами доступа
```bash
# Установка правильных прав на директорию data
sudo chown -R www-data:www-data data/
sudo chmod 755 data/
# Для Docker
sudo chown -R 1000:1000 data/
```
### Просмотр логов контейнера
```bash
# Все логи
docker logs texas-holdem-poker
# Последние 100 строк
docker logs --tail 100 texas-holdem-poker
# В реальном времени
docker logs -f texas-holdem-poker
```
---
## 🔐 Безопасность
### Рекомендации
1. **Используйте HTTPS** - настройте SSL сертификаты (Let's Encrypt)
2. **Firewall** - ограничьте доступ к порту 3336 только с localhost
3. **Регулярные обновления** - обновляйте зависимости и Docker образы
4. **Backup** - настройте автоматическое резервное копирование
5. **Мониторинг** - отслеживайте логи и производительность
### Настройка Let's Encrypt (опционально)
```bash
# Установка certbot
sudo apt-get install certbot python3-certbot-apache
# Получение сертификата
sudo certbot --apache -d poker.yourdomain.com
# Автоматическое обновление
sudo certbot renew --dry-run
```
---
## 📞 Поддержка
Если возникли проблемы:
1. Проверьте логи: `docker-compose logs -f`
2. Проверьте статус: `docker-compose ps`
3. Проверьте Apache: `sudo systemctl status apache2`
4. Проверьте логи Apache: `sudo tail -f /var/log/apache2/poker_error.log`
---
## 📝 Лицензия
Этот проект предназначен для личного использования.
---
**Версия:** 1.0.0
**Дата обновления:** 2026-02-01