# Руководство по развертыванию проекта 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 среде перед применением в продакшене!