Към съдържанието

Уеб слоят във Vercel

Изпълнявайте уеб слоя Quire във Vercel с придружаващ worker.

Преглед като Markdown

Проектът е описан в раздел 5 на docs/architecture/23-ops.md. Vercel изпълнява само уеб слоя. Всичко останало работи на придружаващ хост, който управлявате, и той е задължителен.

Състояние в тази версия

Конфигурацията е подготвена (apps/web/vercel.json, vercel Nitro preset и проверките при стартиране). Vercel изисква споделено файлово хранилище (QUIRE_STORAGE_DRIVER=s3 или azure), драйвер за реално време, който работи между екземплярите на функциите (QUIRE_REALTIME_DRIVER=sse или centrifugo), и HTTP доставчик на поща. Без тях уеб слоят отказва стартиране, а журналът посочва всяка липсваща настройка.

Компоненти

Компонент Къде работи
web Vercel Functions, Bun runtime: страници, REST, MCP, LTI, получаване на уебкуки
worker, scheduler, collab, content Придружаващ хост: Fly, Railway, ECS или собствен Docker хост с docker/compose.yaml
Postgres Външна услуга зад пулър на транзакции: Neon, Supabase или RDS с PgBouncer
Файлове S3 или R2. Постоянен диск няма
Фонови задачи Добавят се чрез pg-boss в транзакцията на заявката и се изпълняват от придружаващия worker. Когато на него е настроено QUIRE_QUEUE_DRIVER=vercel, леките задачи (несортирани известия и доставки на уебкуки) се прехвърлят към Vercel Queues (VERCEL_QUEUE_REGION, VERCEL_QUEUE_TOKEN), така че пулът на Postgres да не се проверява за тях
Периодични задачи Придружаващият scheduler. Няма Vercel Cron маршрут, защото задача, изпълнявана във функция, надхвърля времевото ограничение
Проследяване OpenTelemetry към вашия колектор, OTEL_EXPORTER_OTLP_ENDPOINT

Възможности, които тази цел не поддържа

Уеб слоят проверява настройките при стартиране и отказва, като изброява всички проблеми, вместо да се провали по-късно при първия имейл, който не успее да се изпрати:

  • Няма SMTP. Vercel блокира изходящ SMTP трафик. Задайте QUIRE_EMAIL_PROVIDER_CONFIG на HTTP доставчик (Postmark, SES, Mailgun, SendGrid или Resend). QUIRE_SMTP_URL се отхвърля.
  • Няма локален диск. QUIRE_STORAGE_DRIVER=local се отхвърля.
  • Няма споделена памет между извикванията. QUIRE_REALTIME_DRIVER=inprocess се отхвърля. Изпращането на събития чрез SSE е ограничено от времето на изпълнение на функцията; клиентът се свързва отново с курсор, така че събитие не се губи, но присъствието не е налично.
  • Ограничен е броят на фиксираните бази данни за организации до около осем, защото всяка добавя нов пул от връзки в среда, където пуловете не могат да се споделят.

Разгръщане

  1. Създайте проект във Vercel от хранилището с Основна директория apps/web. apps/web/vercel.json задава командите за инсталиране и компилация (NITRO_PRESET=vercel) и обслужва /sw.js без кеширане.
  2. Задайте променливите на средата. Използвайте поне следните стойности от docker/.env.example: QUIRE_DEPLOY_TARGET=vercel, QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_SECRET_KEY, QUIRE_MASTER_KEY, DATABASE_URL (адресът на пулъра), QUIRE_REPORT_DATABASE_URL, QUIRE_AUDIT_DATABASE_URL, QUIRE_DATABASE_ID, QUIRE_EMAIL_PROVIDER_CONFIG, QUIRE_MAIL_FROM, настройките за хранилището, както и QUIRE_COLLAB_URL и QUIRE_COLLAB_SIGNING_KEY, насочени към придружаващата услуга collab. QUIRE_REPORT_DATABASE_URL трябва да съответства на физическата база, посочена в DATABASE_URL. За всяка допълнително регистрирана база добавете неин собствен quire_report URL за връзка в средите на web и worker, след което регистрирайте името на променливата като env:NAME в конзолата на платформата. Аналитиката отказва работа, ако липсва URL за отчетната база.
  3. На придружаващия хост стартирайте docker/compose.yaml без услугата web и със същия docker/.env:
    docker compose -f docker/compose.yaml up -d migrate init worker scheduler collab content
    Миграциите се изпълняват там преди активиране на всяко Vercel разгръщане.
  4. Разгърнете. При отказана конфигурация журналът на функцията започва с „The web tier did not start on vercel“ и изброява настройките за корекция.

Надстройване

Първо мигрирайте от придружаващия хост, после активирайте новото Vercel разгръщане и накрая обновете worker-ите на придружаващия хост: редът е описан в upgrade.md. Незабавното връщане назад във Vercel е връщане на кода и винаги е безопасно в рамките на една версия.

Навигация

Въведете текст за търсене…

↑↓ навигация↵ избериEsc затвори