Files
crm.clientright.ru/crm_extensions/deploy_scripts/deploy_to_production.sh
Fedor dabcd43a00 Добавлены скрипты для парсинга судебных документов и обновления проектов в CRM
- court_document_parser.py: парсер судебных документов с извлечением ФИО, номера дела, УИД, суда
- court_parser_api.py: API для вызова парсера из n8n
- pdf_court_parser.py: парсер PDF документов с извлечением текста
- simple_project_updater.php: обновление проектов через CRM API
- simple_project_updater_v2.php: обновленная версия с прямыми SQL запросами и S3Client
- update_project_from_document.php: альтернативный скрипт обновления
- test_input.json: тестовые данные для парсера
- README файлы с документацией для всех скриптов

Скрипты поддерживают:
- Поиск проектов по ФИО, номеру дела, УИД, названию суда
- Создание документов в CRM с загрузкой в S3
- Привязку документов к проектам
- Логирование всех операций
- Работу с n8n через SSH команды
2025-09-30 19:54:37 +03:00

253 lines
8.0 KiB
Bash
Executable File
Raw Permalink 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.

#!/bin/bash
# Скрипт деплоя изменений из тестовой среды в боевую
# Автор: Фёдор
# Дата: 2025-09-26
set -e # Остановка при ошибке
# Цвета для вывода
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Пути
TEST_DIR="/var/www/fastuser/data/www/crm-test.clientright.ru"
PROD_DIR="/var/www/fastuser/data/www/crm.clientright.ru"
BACKUP_DIR="/var/www/fastuser/data/backups/crm_deployments"
LOG_FILE="/var/www/fastuser/data/logs/deploy_$(date +%Y%m%d_%H%M%S).log"
# Функция логирования
log() {
echo -e "${BLUE}[$(date '+%Y-%m-%d %H:%M:%S')]${NC} $1" | tee -a "$LOG_FILE"
}
error() {
echo -e "${RED}[ERROR]${NC} $1" | tee -a "$LOG_FILE"
exit 1
}
success() {
echo -e "${GREEN}[SUCCESS]${NC} $1" | tee -a "$LOG_FILE"
}
warning() {
echo -e "${YELLOW}[WARNING]${NC} $1" | tee -a "$LOG_FILE"
}
# Проверка прав доступа
check_permissions() {
log "Проверка прав доступа..."
if [ ! -d "$TEST_DIR" ]; then
error "Тестовая директория не найдена: $TEST_DIR"
fi
if [ ! -d "$PROD_DIR" ]; then
error "Продакшн директория не найдена: $PROD_DIR"
fi
if [ ! -w "$PROD_DIR" ]; then
error "Нет прав на запись в продакшн директорию: $PROD_DIR"
fi
success "Права доступа проверены"
}
# Создание резервной копии
create_backup() {
log "Создание резервной копии продакшн среды..."
mkdir -p "$BACKUP_DIR"
BACKUP_NAME="crm_backup_$(date +%Y%m%d_%H%M%S).tar.gz"
BACKUP_PATH="$BACKUP_DIR/$BACKUP_NAME"
# Исключаем кеш и временные файлы из бэкапа
tar -czf "$BACKUP_PATH" \
--exclude="$PROD_DIR/cache" \
--exclude="$PROD_DIR/test/templates_c" \
--exclude="$PROD_DIR/logs" \
--exclude="$PROD_DIR/tmp" \
-C "$(dirname "$PROD_DIR")" "$(basename "$PROD_DIR")"
if [ $? -eq 0 ]; then
success "Резервная копия создана: $BACKUP_PATH"
echo "$BACKUP_PATH" > "$BACKUP_DIR/latest_backup.txt"
else
error "Ошибка создания резервной копии"
fi
}
# Синхронизация файлов
sync_files() {
log "Синхронизация файлов из тестовой среды..."
# Список файлов и директорий для синхронизации
SYNC_ITEMS=(
"crm_extensions"
"layouts/v7/skins/images"
"layouts/v7/lib"
"modules"
"libraries"
"include"
"vtlib"
"packages"
"resources"
".htaccess"
)
for item in "${SYNC_ITEMS[@]}"; do
if [ -e "$TEST_DIR/$item" ]; then
log "Синхронизация: $item"
# Создаем директорию если не существует
if [ -d "$TEST_DIR/$item" ]; then
mkdir -p "$PROD_DIR/$(dirname "$item")"
fi
# Копируем с сохранением прав
cp -r "$TEST_DIR/$item" "$PROD_DIR/$(dirname "$item")/"
if [ $? -eq 0 ]; then
success "Синхронизировано: $item"
else
warning "Ошибка синхронизации: $item"
fi
else
warning "Файл/директория не найдена в тестовой среде: $item"
fi
done
}
# Обновление прав доступа
fix_permissions() {
log "Обновление прав доступа..."
# Устанавливаем правильные права для файлов
find "$PROD_DIR" -type f -exec chmod 644 {} \;
find "$PROD_DIR" -type d -exec chmod 755 {} \;
# Специальные права для исполняемых файлов
find "$PROD_DIR" -name "*.sh" -exec chmod 755 {} \;
find "$PROD_DIR" -name "*.php" -path "*/cron/*" -exec chmod 755 {} \;
# Права для кеша и временных файлов
if [ -d "$PROD_DIR/test/templates_c" ]; then
chmod -R 777 "$PROD_DIR/test/templates_c"
fi
if [ -d "$PROD_DIR/cache" ]; then
chmod -R 777 "$PROD_DIR/cache"
fi
# Устанавливаем владельца
chown -R fastuser:fastuser "$PROD_DIR"
success "Права доступа обновлены"
}
# Проверка работоспособности
health_check() {
log "Проверка работоспособности после деплоя..."
# Проверяем доступность главной страницы
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" https://crm.clientright.ru)
if [ "$HTTP_CODE" = "200" ]; then
success "Главная страница доступна (HTTP $HTTP_CODE)"
else
warning "Проблема с главной страницей (HTTP $HTTP_CODE)"
fi
# Проверяем наличие ключевых файлов
KEY_FILES=(
"index.php"
"config.php"
"crm_extensions/README.md"
)
for file in "${KEY_FILES[@]}"; do
if [ -f "$PROD_DIR/$file" ]; then
success "Файл найден: $file"
else
warning "Файл не найден: $file"
fi
done
}
# Откат изменений
rollback() {
log "Выполнение отката изменений..."
if [ -f "$BACKUP_DIR/latest_backup.txt" ]; then
BACKUP_PATH=$(cat "$BACKUP_DIR/latest_backup.txt")
if [ -f "$BACKUP_PATH" ]; then
log "Восстановление из резервной копии: $BACKUP_PATH"
# Останавливаем веб-сервер
systemctl stop apache2
# Восстанавливаем файлы
tar -xzf "$BACKUP_PATH" -C "$(dirname "$PROD_DIR")"
# Запускаем веб-сервер
systemctl start apache2
success "Откат выполнен успешно"
else
error "Резервная копия не найдена: $BACKUP_PATH"
fi
else
error "Файл с информацией о последней резервной копии не найден"
fi
}
# Основная функция
main() {
log "Начало деплоя CRM из тестовой среды в продакшн"
log "Лог файл: $LOG_FILE"
case "${1:-deploy}" in
"deploy")
check_permissions
create_backup
sync_files
fix_permissions
health_check
success "Деплой завершен успешно!"
;;
"rollback")
rollback
;;
"backup")
check_permissions
create_backup
;;
"sync")
check_permissions
sync_files
fix_permissions
;;
"health")
health_check
;;
*)
echo "Использование: $0 {deploy|rollback|backup|sync|health}"
echo " deploy - Полный деплой (по умолчанию)"
echo " rollback - Откат к последней резервной копии"
echo " backup - Создание резервной копии"
echo " sync - Синхронизация файлов"
echo " health - Проверка работоспособности"
exit 1
;;
esac
}
# Запуск основной функции
main "$@"