# Руководство по развертыванию проекта ERV ## Обзор Данное руководство описывает процесс развертывания и настройки проекта ERV (Единая Реестровая Выплата) в продакшене. ## Системные требования ### Минимальные требования - **ОС**: Ubuntu 20.04+ (рекомендуется 22.04) - **PHP**: 7.4+ (рекомендуется 8.0+) - **MySQL**: 5.7+ (рекомендуется 8.0+) - **Apache**: 2.4+ или Nginx 1.18+ - **RAM**: 2GB минимум, 4GB рекомендуется - **Диск**: 20GB минимум, 50GB рекомендуется - **SSL**: Действующий SSL сертификат ### Рекомендуемые расширения PHP ```bash php-mysql php-curl php-json php-mbstring php-xml php-zip php-gd php-openssl php-intl ``` ## Установка зависимостей ### 1. Обновление системы ```bash sudo apt update && sudo apt upgrade -y ``` ### 2. Установка Apache ```bash sudo apt install apache2 -y sudo systemctl enable apache2 sudo systemctl start apache2 ``` ### 3. Установка PHP ```bash sudo apt install php php-cli php-fpm php-mysql php-curl php-json php-mbstring php-xml php-zip php-gd php-openssl php-intl -y ``` ### 4. Установка MySQL ```bash sudo apt install mysql-server -y sudo systemctl enable mysql sudo systemctl start mysql sudo mysql_secure_installation ``` ### 5. Установка дополнительных инструментов ```bash sudo apt install curl wget unzip git htop -y ``` ## Настройка веб-сервера ### Apache конфигурация #### 1. Создание виртуального хоста ```bash sudo nano /etc/apache2/sites-available/erv.clientright.ru.conf ``` Содержимое файла: ```apache ServerName erv.clientright.ru DocumentRoot /var/www/fastuser/data/www/erv.clientright.ru AllowOverride All Require all granted ErrorLog ${APACHE_LOG_DIR}/erv_error.log CustomLog ${APACHE_LOG_DIR}/erv_access.log combined ServerName erv.clientright.ru DocumentRoot /var/www/fastuser/data/www/erv.clientright.ru AllowOverride All Require all granted SSLEngine on SSLCertificateFile /path/to/certificate.crt SSLCertificateKeyFile /path/to/private.key ErrorLog ${APACHE_LOG_DIR}/erv_ssl_error.log CustomLog ${APACHE_LOG_DIR}/erv_ssl_access.log combined ``` #### 2. Активация сайта ```bash sudo a2ensite erv.clientright.ru.conf sudo a2enmod rewrite ssl sudo systemctl reload apache2 ``` ### Nginx конфигурация (альтернатива) ```nginx server { listen 80; server_name erv.clientright.ru; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name erv.clientright.ru; root /var/www/fastuser/data/www/erv.clientright.ru; index index.php index.html; ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } } ``` ## Настройка базы данных ### 1. Создание базы данных ```sql CREATE DATABASE ci20465_erv CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'ci20465_erv'@'localhost' IDENTIFIED BY 'c7vOXbmG'; GRANT ALL PRIVILEGES ON ci20465_erv.* TO 'ci20465_erv'@'localhost'; FLUSH PRIVILEGES; ``` ### 2. Создание таблицы полисов ```sql USE ci20465_erv; CREATE TABLE lexrpiority ( id INT AUTO_INCREMENT PRIMARY KEY, voucher VARCHAR(50) NOT NULL UNIQUE, insured_from DATE NOT NULL, insured_to DATE NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_voucher (voucher) ); ``` ### 3. Импорт данных полисов ```bash mysql -u ci20465_erv -p ci20465_erv < polisy_data.sql ``` ## Настройка проекта ### 1. Клонирование или копирование файлов ```bash # Если файлы уже есть, пропустите этот шаг sudo cp -r /path/to/source/files/* /var/www/fastuser/data/www/erv.clientright.ru/ ``` ### 2. Установка прав доступа ```bash sudo chown -R www-data:www-data /var/www/fastuser/data/www/erv.clientright.ru sudo chmod -R 755 /var/www/fastuser/data/www/erv.clientright.ru sudo chmod -R 644 /var/www/fastuser/data/www/erv.clientright.ru/*.php sudo chmod -R 755 /var/www/fastuser/data/www/erv.clientright.ru/uploads sudo chmod -R 755 /var/www/fastuser/data/www/erv.clientright.ru/cache ``` ### 3. Настройка .htaccess ```bash sudo nano /var/www/fastuser/data/www/erv.clientright.ru/.htaccess ``` Содержимое: ```apache RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # Защита от прямого доступа к PHP файлам Order Allow,Deny Deny from all Order Allow,Deny Deny from all # Ограничение размера загружаемых файлов php_value upload_max_filesize 5M php_value post_max_size 5M php_value max_execution_time 300 php_value max_input_time 300 ``` ## Настройка внешних сервисов ### 1. SMS API (SigmaSMS) - Регистрация на https://online.sigmasms.ru/ - Получение токена API - Настройка в файле `sms-test.php` ### 2. DaData API - Регистрация на https://dadata.ru/ - Получение API ключа - Настройка в JavaScript коде ### 3. CRM ClientRight - Настройка webhook URL - Получение API ключей - Настройка в JavaScript коде ## Настройка SSL сертификата ### Let's Encrypt (рекомендуется) ```bash sudo apt install certbot python3-certbot-apache -y sudo certbot --apache -d erv.clientright.ru ``` ### Коммерческий сертификат 1. Получите сертификат от CA 2. Разместите файлы сертификата 3. Обновите конфигурацию Apache/Nginx ## Настройка мониторинга ### 1. Установка cron задач ```bash sudo crontab -e ``` Добавить: ```cron # Резервное копирование каждый день в 2:00 0 2 * * * /var/www/fastuser/data/www/crm.clientright.ru/erv_project_tools/backup_erv.sh # Мониторинг каждые 15 минут */15 * * * * /var/www/fastuser/data/www/crm.clientright.ru/erv_project_tools/monitor_erv.sh # Обслуживание каждую неделю в воскресенье в 3:00 0 3 * * 0 /var/www/fastuser/data/www/crm.clientright.ru/erv_project_tools/maintenance_erv.sh ``` ### 2. Настройка логирования ```bash sudo nano /etc/rsyslog.d/50-erv.conf ``` Содержимое: ``` # Логи проекта ERV :programname, isequal, "erv" /var/log/erv.log & stop ``` ## Тестирование развертывания ### 1. Проверка доступности ```bash curl -I https://erv.clientright.ru/ ``` ### 2. Проверка SSL ```bash openssl s_client -connect erv.clientright.ru:443 -servername erv.clientright.ru ``` ### 3. Проверка базы данных ```bash mysql -u ci20465_erv -p -e "SELECT COUNT(*) FROM lexrpiority;" ci20465_erv ``` ### 4. Проверка внешних API ```bash curl -s https://online.sigmasms.ru/api/ curl -s https://suggestions.dadata.ru/ curl -s https://form.clientright.ru/ ``` ## Безопасность ### 1. Настройка файрвола ```bash sudo ufw enable sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp ``` ### 2. Настройка fail2ban ```bash sudo apt install fail2ban -y sudo systemctl enable fail2ban sudo systemctl start fail2ban ``` ### 3. Регулярные обновления ```bash sudo apt update && sudo apt upgrade -y ``` ## Резервное копирование ### 1. Автоматическое резервное копирование Используйте скрипт `backup_erv.sh` из папки инструментов. ### 2. Ручное резервное копирование ```bash # База данных mysqldump -u ci20465_erv -p ci20465_erv > backup_$(date +%Y%m%d).sql # Файлы проекта tar -czf project_backup_$(date +%Y%m%d).tar.gz /var/www/fastuser/data/www/erv.clientright.ru/ ``` ## Мониторинг производительности ### 1. Использование скрипта мониторинга ```bash ./monitor_erv.sh ``` ### 2. Настройка алертов Настройте уведомления по email при обнаружении проблем. ## Обслуживание ### 1. Регулярное обслуживание Используйте скрипт `maintenance_erv.sh` для автоматического обслуживания. ### 2. Обновления - Регулярно обновляйте систему - Следите за обновлениями PHP и MySQL - Тестируйте изменения в staging среде ## Устранение неполадок ### Частые проблемы 1. **Ошибка 500** - Проверьте права доступа к файлам - Проверьте логи Apache/Nginx - Проверьте синтаксис PHP 2. **Проблемы с базой данных** - Проверьте подключение - Проверьте права пользователя БД - Проверьте логи MySQL 3. **Проблемы с загрузкой файлов** - Проверьте права на папку uploads - Проверьте настройки PHP (upload_max_filesize) - Проверьте свободное место на диске 4. **Проблемы с SMS** - Проверьте API ключ SigmaSMS - Проверьте баланс аккаунта - Проверьте логи отправки ## Контакты поддержки - **Разработчик**: Фёдор - **Система**: Ubuntu 22.04 - **Статус**: Продакшен --- **ВАЖНО**: Всегда тестируйте изменения в staging среде перед применением в продакшене!