Деплой на shared и VPS: как работает сейчас
Jasefly больше не «только shared PHP». Платформа dual-runtime: один репозиторий, два production-пути — PHP shared hosting и Node VPS. Выбор зависит от хоста, а не от переписывания продукта.
Два артефакта
| Цель | Runtime | Пакет |
|---|---|---|
| Shared hosting | PHP | jasefly-cms-update-*.zip / install ZIP — Node на сервере не нужен |
| VPS / cloud | Node | jasefly-cms-vps-*.tgz — без PHP API tree в пакете |
CLI:
node scripts/jasefly/cli.mjs build --runtime=php --target=shared
node scripts/jasefly/cli.mjs build --runtime=node --target=vps
Shared: привычный путь
- Локально собирается frontend (Vite).
build-hosting.jsкладёт PHP API + статику в update/install ZIP.- На хостинг уходит архив через SiteUpdater / MCP upload.
- Серверу достаточно Apache/Nginx + PHP 8.2+ + MySQL.
Update-пакет бережёт локальный config, uploads, логи и бэкапы. Это не «залить поверх руками».
VPS: атомарный Node-релиз
Для сайта с runtime=node-vps MCP собирает VPS-артефакт и выкладывает по SSH: releases + symlink current, опциональный restart. Откат — cms_rollback с жёсткой грамматикой stamp (без shell-инъекций в аргументе to).
На VPS не тащат PHP-дерево «на всякий случай»: пакет должен соответствовать runtime.
Один операторский жест: cms_release
Независимо от цели, агентский путь один:
- build — локальная сборка пакета
- test — проверки / маркеры ZIP
- changelog — запись что ушло в релиз
- deploy — upload (shared) или SSH atomic (VPS)
- verify — API / site / DB / diagnostics
При нескольких сайтах в CMS_SITES обязателен аргумент site. Сначала cms_sites, потом релиз на конкретный хост. Fan-out «на всех сразу» намеренно нет.
Как выбрать
- Shared — лендинги, витрины, портфолио, документация, предсказуемая нагрузка, не хотите админить ОС.
- VPS / Node — нужен постоянный Node-процесс, свой процесс-менеджер, атомарные symlink-релизы, сценарии ближе к app-server.
Контракты (API, Builder JSON, capabilities) общие. Меняется способ доставки runtime, а не «другой продукт».
Типичные ошибки
- Залить ad-hoc zip вместо
cms_release/ hosting update. - Перепутать install и update.
- Деплоить без
site, когда в MCP уже два хоста. - Забыть Ctrl+F5 после hashed SPA assets.
Итог
Shared остаётся честным default для обычного PHP-хостинга. VPS — осознанный второй путь для Node. Multi-site MCP связывает оба мира одним агентом: вы указываете хост и runtime в env, а пайплайн cms_release делает остальное предсказуемо.