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

11 KiB
Raw Permalink Blame History

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

php-mysql
php-curl
php-json
php-mbstring
php-xml
php-zip
php-gd
php-openssl
php-intl

Установка зависимостей

1. Обновление системы

sudo apt update && sudo apt upgrade -y

2. Установка Apache

sudo apt install apache2 -y
sudo systemctl enable apache2
sudo systemctl start apache2

3. Установка PHP

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

sudo apt install mysql-server -y
sudo systemctl enable mysql
sudo systemctl start mysql
sudo mysql_secure_installation

5. Установка дополнительных инструментов

sudo apt install curl wget unzip git htop -y

Настройка веб-сервера

Apache конфигурация

1. Создание виртуального хоста

sudo nano /etc/apache2/sites-available/erv.clientright.ru.conf

Содержимое файла:

<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. Активация сайта

sudo a2ensite erv.clientright.ru.conf
sudo a2enmod rewrite ssl
sudo systemctl reload apache2

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. Создание базы данных

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. Создание таблицы полисов

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. Импорт данных полисов

mysql -u ci20465_erv -p ci20465_erv < polisy_data.sql

Настройка проекта

1. Клонирование или копирование файлов

# Если файлы уже есть, пропустите этот шаг
sudo cp -r /path/to/source/files/* /var/www/fastuser/data/www/erv.clientright.ru/

2. Установка прав доступа

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

sudo nano /var/www/fastuser/data/www/erv.clientright.ru/.htaccess

Содержимое:

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 (рекомендуется)

sudo apt install certbot python3-certbot-apache -y
sudo certbot --apache -d erv.clientright.ru

Коммерческий сертификат

  1. Получите сертификат от CA
  2. Разместите файлы сертификата
  3. Обновите конфигурацию Apache/Nginx

Настройка мониторинга

1. Установка cron задач

sudo crontab -e

Добавить:

# Резервное копирование каждый день в 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. Настройка логирования

sudo nano /etc/rsyslog.d/50-erv.conf

Содержимое:

# Логи проекта ERV
:programname, isequal, "erv" /var/log/erv.log
& stop

Тестирование развертывания

1. Проверка доступности

curl -I https://erv.clientright.ru/

2. Проверка SSL

openssl s_client -connect erv.clientright.ru:443 -servername erv.clientright.ru

3. Проверка базы данных

mysql -u ci20465_erv -p -e "SELECT COUNT(*) FROM lexrpiority;" ci20465_erv

4. Проверка внешних API

curl -s https://online.sigmasms.ru/api/
curl -s https://suggestions.dadata.ru/
curl -s https://form.clientright.ru/

Безопасность

1. Настройка файрвола

sudo ufw enable
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

2. Настройка fail2ban

sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

3. Регулярные обновления

sudo apt update && sudo apt upgrade -y

Резервное копирование

1. Автоматическое резервное копирование

Используйте скрипт backup_erv.sh из папки инструментов.

2. Ручное резервное копирование

# База данных
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. Использование скрипта мониторинга

./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 среде перед применением в продакшене!