11 KiB
11 KiB
Руководство по развертыванию проекта 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
Коммерческий сертификат
- Получите сертификат от CA
- Разместите файлы сертификата
- Обновите конфигурацию 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 среде
Устранение неполадок
Частые проблемы
-
Ошибка 500
- Проверьте права доступа к файлам
- Проверьте логи Apache/Nginx
- Проверьте синтаксис PHP
-
Проблемы с базой данных
- Проверьте подключение
- Проверьте права пользователя БД
- Проверьте логи MySQL
-
Проблемы с загрузкой файлов
- Проверьте права на папку uploads
- Проверьте настройки PHP (upload_max_filesize)
- Проверьте свободное место на диске
-
Проблемы с SMS
- Проверьте API ключ SigmaSMS
- Проверьте баланс аккаунта
- Проверьте логи отправки
Контакты поддержки
- Разработчик: Фёдор
- Система: Ubuntu 22.04
- Статус: Продакшен
ВАЖНО: Всегда тестируйте изменения в staging среде перед применением в продакшене!