type: standard
aspect: process
title: "Размещение скриптов на хостинге"
version: 1.0.0
date: 2026-02-19
status: active
Версия: 2.0.0
Дата: 2026-01-25
При работе с проектами на сторонних хостингах (Beget, Timeweb, AWS и др.) возникает необходимость выполнять скрипты в обход движка для:
- Проверки установки модулей
- Очистки базы данных
- Обслуживания и диагностики
- Миграции данных
Правило: Скрипты для хостинга НЕ должны быть доступны через веб.
Где: $WORKSPACE/projects/org/{project}/app/{platform}/scripts/
Назначение:
- Разработка скриптов
- Версионирование (git)
- Документация
- Исходники с шаблонами credentials
Правила:
- ✅ Полная документация в README.md
- ✅ Credentials в .credentials.md (не в коде!)
- ✅ Git контроль
- ✅ Примеры использования
Пример:
projects/org/{PROJECT_NAME}/app/cscart/scripts/
├── check_installation.php ← Исходник с placeholder credentials
├── clean_database.php
├── change_timestamp.sh
└── README.md ← Документация
Где: Скрытая папка ВНУТРИ проекта
Путь: ~/project/.scripts/ (рекомендуется)
Варианты (устаревшие, не используйте):
- ~/.scripts/project/ - отдельная папка в home
- _scripts/ - видимая папка
Назначение:
- Выполнение скриптов на production
- Обслуживание и диагностика
- Недоступность через веб
Правила:
- ✅ Скрытая папка .scripts/ ВНУТРИ проекта
- ✅ Права доступа: chmod 700 (только владелец)
- ✅ Реальные credentials (из .credentials.md)
- ✅ Веб-доступ автоматически заблокирован (начинается с точки)
- ✅ Золотой бэкап для быстрого восстановления
Структура на хостинге:
~/work.lideravto.ru/ ← Папка проекта
├── .scripts/ ← Скрытая папка (НЕТ веб-доступа)
│ ├── golden_cscart_419.tar.gz ← Золотой бэкап файлов
│ ├── golden_database.sql.gz ← Золотой бэкап БД
│ ├── restore_golden.sh ← Быстрое восстановление
│ ├── create_golden.sh ← Создание золотого бэкапа
│ ├── check_installation.php ← Проверка модуля
│ ├── clean_database.php ← Очистка БД
│ └── change_timestamp.sh ← Изменение timestamp
├── admin.php ← Файлы CS-Cart (веб-доступ)
├── index.php
└── ...
Преимущества:
- Всё для проекта в одном месте
- Не нужно искать скрипты отдельно
- Легко бэкапить весь проект
- Быстрое восстановление (1-2 минуты)
app/{platform}/scripts/php
// Вместо: $DB_PASS = '8jR*Y!eB0r%G';
$DB_PASS = getenv('DB_PASS') ?: 'PLACEHOLDER';Из app/{platform}/.credentials.md проекта:
# Credentials: CS-Cart LiderAvto
## База данных (Beget)
- Host: localhost
- Database: lideravto_wcs
- User: lideravto_wcs
- Password: 8jR*Y!eB0r%G
Создать скрытую папку В ПРОЕКТЕ:
bash
ssh user@host
mkdir -p ~/work.lideravto.ru/.scripts
chmod 700 ~/work.lideravto.ru/.scripts
Загрузить скрипты:
```bash
# Локально
cd $WORKSPACE/projects/org/{PROJECT_NAME}/app/cscart/scripts/
scp check_installation.php user@host:~/work.lideravto.ru/.scripts/
scp clean_database.php user@host:~/work.lideravto.ru/.scripts/
scp change_timestamp.sh user@host:~/work.lideravto.ru/.scripts/
scp restore_golden.sh user@host:~/work.lideravto.ru/.scripts/
scp create_golden.sh user@host:~/work.lideravto.ru/.scripts/
```
Заменить credentials:
bash
# На хостинге
nano ~/work.lideravto.ru/.scripts/check_installation.php
nano ~/work.lideravto.ru/.scripts/clean_database.php
# Заменить PLACEHOLDER на реальные значения из .credentials.md
Установить права:
bash
chmod 700 ~/work.lideravto.ru/.scripts/*.php
chmod 700 ~/work.lideravto.ru/.scripts/*.sh
Проверить веб-доступ (должен быть запрещён):
bash
curl http://domain.ru/.scripts/lideravto/check_installation.php
# Ожидаем: 403 Forbidden или 404 Not Found
Проверить выполнение через SSH:
bash
ssh user@host
php ~/.scripts/lideravto/check_installation.php
# Ожидаем: успешное выполнение
| Тип | Примеры |
|---|---|
| PHP скрипты с DB access | check_installation.php, clean_database.php |
| Bash утилиты | change_timestamp.sh, backup.sh |
| Python admin скрипты | migrate_data.py, verify_install.py |
| SQL дампы | schema.sql, test_data.sql |
| Конфиги для деплоя | deploy.conf, .env.production |
| Тип | Почему | Где хранить |
|---|---|---|
| Конфиги движка | Должны быть в правильном месте | config/, settings.php |
| Публичные файлы | Нужен веб-доступ | Document root |
| Статика (CSS, JS, изображения) | Нужен веб-доступ | assets/, media/ |
| Плагины/модули движка | Должны быть в структуре движка | modules/, plugins/ |
НЕ хардкодить в скриптах workspace:
// ❌ ПЛОХО (в git попадёт пароль)
$DB_PASS = '8jR*Y!eB0r%G';
// ✅ ХОРОШО (placeholder для workspace)
$DB_PASS = getenv('DB_PASS') ?: 'CHANGE_ME';
На хостинге:
- ✅ Можно хардкодить (не под git)
- ✅ Или использовать environment variables
- ✅ Права доступа 700 (только владелец)
Концепция: Вместо многократной установки движка создать "золотой бэкап" чистого состояния и быстро восстанавливать его для экспериментов.
Проблема:
- Установка движка с нуля: 30-40 минут
- Настройка параметров: 10-15 минут
- Каждый эксперимент требует чистого состояния
Решение:
- Один раз установить чисто
- Создать золотой бэкап (БД + файлы)
- Восстановление: 1-2 минуты
1. Установить чистый движок (один раз):
# На хостинге
# Установить движок через веб-интерфейс
# Настроить базовые параметры
# Проверить что админка работает
2. Создать золотой бэкап:
ssh user@host
cd ~/work.lideravto.ru
# Запустить скрипт создания
./.scripts/create_golden.sh
# Скрипт создаст:
# - .scripts/golden_database.sql.gz (БД)
# - .scripts/golden_cscart_419.tar.gz (файлы)
Что делает create_golden.sh:
- Создаёт дамп БД
- Архивирует файлы движка (исключая cache, logs, images)
- Сохраняет в .scripts/
Для экспериментов:
ssh user@host
cd ~/work.lideravto.ru
# Восстановить из золотого бэкапа
./.scripts/restore_golden.sh
# 1-2 минуты → чистый движок готов
Что делает restore_golden.sh:
1. Очищает БД (DROP всех таблиц)
2. Восстанавливает БД из golden_database.sql.gz
3. Удаляет файлы проекта (кроме .scripts/ и .htaccess)
4. Распаковывает файлы из golden_cscart_419.tar.gz
# 1. Восстановить чистый движок
./.scripts/restore_golden.sh
# 2. Установить модуль для тестирования
# (через админку или загрузить архив)
# 3. Протестировать
# 4. Если что-то сломалось:
./.scripts/restore_golden.sh # Вернуться к чистому состоянию
# 5. Повторить эксперимент
~/work.lideravto.ru/.scripts/
├── golden_cscart_419.tar.gz ← Золотой бэкап файлов (~5-10 MB)
├── golden_database.sql.gz ← Золотой бэкап БД (~500 KB)
├── restore_golden.sh ← Восстановление (1-2 мин)
├── create_golden.sh ← Создание бэкапа (один раз)
├── check_installation.php ← Проверка модулей
├── clean_database.php ← Очистка БД
└── change_timestamp.sh ← Изменение timestamp
Создавать новый золотой бэкап если:
- Обновили версию движка
- Изменили базовые настройки
- Установили обязательные модули в базовую конфигурацию
Не нужно обновлять:
- После каждого эксперимента
- При временных изменениях
- При тестировании модулей
Workspace:
app/cscart/scripts/
├── check_installation.php
├── clean_database.php
└── README.md
Хостинг (Beget):
# Путь
~/.scripts/lideravto/
# Выполнение
ssh user@beget
php ~/.scripts/lideravto/check_installation.php
# Через HTTP (если нужно)
# Добавить .htaccess защиту + confirm=secret_token
Workspace:
app/django/scripts/
├── check_migrations.py
├── verify_celery.py
└── README.md
Хостинг:
# Путь
~/.scripts/pirotehnika/
# Выполнение
ssh user@server
cd /path/to/project
python ~/.scripts/pirotehnika/check_migrations.py
Workspace:
app/wordpress/scripts/
├── check_plugins.php
├── db_optimize.php
└── README.md
Хостинг:
# Путь
~/.scripts/myblog/
# Выполнение
ssh user@host
php ~/.scripts/myblog/check_plugins.php
Workspace:
app/nextjs/scripts/
├── verify_deployment.js
├── clear_cache.js
└── README.md
Хостинг:
# Путь
~/.scripts/myapp/
# Выполнение
ssh user@server
node ~/.scripts/myapp/verify_deployment.js
#!/usr/bin/env php
<?php
// Проверяет что модуль/плагин установлен корректно
// Workspace: placeholders
// Хостинг: реальные credentials
#!/usr/bin/env php
<?php
// ОСТОРОЖНО: DROP всех таблиц
// Защита: require ?confirm=yes
// Только для dev/staging
#!/bin/bash
# Изменяет настройки через sed/awk
# Для миграций и обновлений
#!/usr/bin/env python3
# Перенос данных между системами
# Использует credentials из .env
Обязательные разделы:
Пример:
# CS-Cart Утилиты и Скрипты
## Скрипты
### check_installation.php
Проверяет корректность установки модуля.
**Использование:**
- CLI: `php check_installation.php`
- HTTP: `curl http://domain.ru/check_installation.php`
**Безопасность:** Только чтение, безопасен
**Размещение на хостинге:**
1. Создать `~/.scripts/lideravto/`
2. Скопировать файл
3. Заменить credentials из `.credentials.md`
4. `chmod 700`
## Размещение на хостинге
ВСЕ скрипты размещать в `~/.scripts/lideravto/`:
- НЕТ веб-доступа
- Права 700
- Реальные credentials
Формат:
# Credentials: {Platform} {Project}
## База данных ({Хостинг})
- Host: localhost
- Database: db_name
- User: db_user
- Password: ••••••••
## API Keys
- Service: key_value
Безопасность:
- ✅ В .gitignore
- ✅ Права 600
- ✅ Только локально в workspace
Перед размещением на хостинге:
.credentials.md (НЕ в коде)Workspace:
projects/org/{PROJECT_NAME}/app/cscart/
├── scripts/
│ ├── check_installation.php
│ ├── clean_database.php
│ ├── change_timestamp.sh
│ └── README.md
└── .credentials.md
Хостинг:
/home/l/lideravto/.scripts/lideravto/
├── check_installation.php (с реальными credentials)
├── clean_database.php
└── change_timestamp.sh
Выполнение:
ssh lideravto@beget
php ~/.scripts/lideravto/check_installation.php
Версия: 1.0.0