Files
crm.clientright.ru/erv_project_tools/DEPLOYMENT_GUIDE.md

397 lines
11 KiB
Markdown
Raw 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.

# Руководство по развертыванию проекта 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
<VirtualHost *:80>
ServerName erv.clientright.ru
DocumentRoot /var/www/fastuser/data/www/erv.clientright.ru
<Directory /var/www/fastuser/data/www/erv.clientright.ru>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/erv_error.log
CustomLog ${APACHE_LOG_DIR}/erv_access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerName erv.clientright.ru
DocumentRoot /var/www/fastuser/data/www/erv.clientright.ru
<Directory /var/www/fastuser/data/www/erv.clientright.ru>
AllowOverride All
Require all granted
</Directory>
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
</VirtualHost>
```
#### 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 файлам
<Files "database.php">
Order Allow,Deny
Deny from all
</Files>
<Files "sms-test.php">
Order Allow,Deny
Deny from all
</Files>
# Ограничение размера загружаемых файлов
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 среде перед применением в продакшене!