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