Мазмунга өтүү

Cloudflare Workers'теги веб катмары

Quire'дин кыскартылган веб катмарын Cloudflare Workers'те иштетиңүз.

Markdown түрүндө көрүү

Дизайн docs/architecture/23-ops.md 6-бөлүмүндө. Workers кыскартылган веб катмарын иштетет. Workers’те толук мүмкүнчүлүк теңдиги диапазондон тыш (PRD 12-бөлүм): бул максат кылалбайт нерселери башталганда, аты боюнча, четке кагылат.

Бул релиздин абалы

Конфигурация даяр (apps/web/wrangler.jsonc, cloudflare-module Nitro пресети, Hyperdrive көпүрөсү жана башталыш текшерүүлөрү). Worker’ге R2 үчүн S3 ылайыктуу сактоо (QUIRE_STORAGE_DRIVER=s3), суроолор бойунча реалдуу убакыт драйвери (QUIRE_REALTIME_DRIVER=durable_objects же centrifugo), орток кэш (QUIRE_CACHE_DRIVER=postgres же valkey) жана HTTP почта провайдери керек. Алар болбосо Worker башталыштан баш тартат жана анын журналы ар бир жөндөөнү атайт. Durable Objects драйвери apps/realtime-worker’деги реалдуу убакыт Worker’инин клиенти (fan-out, болуу жана тарых үчүн канал сайын бир Durable Object, ажыроолор үчүн адам сайын бирөө); аны төмөндөгүдөй чогуу жайгаштырыңыз же Centrifugo’ну колдонуңуз.

Бөлүктөр

Piece On Cloudflare
web nodejs_compat бар Worker
Postgres Сырткы, Hyperdrive аркылуу жетилет: колдонмо ролу үчүн HYPERDRIVE, ошол эле физикалык маалымат базасындагы отчёт ролу үчүн REPORT_HYPERDRIVE. Веб катмары башталганда ар бир туташтыруу стригин DATABASE_URL жана QUIRE_REPORT_DATABASE_URL’ге көчүрөт
Файлдар R2, анын S3 API аркылуу (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); FILES байламасы bucket’ты туташтырат
Фон жумуштары Жумуш жазуу менен кезекке турушу керек болсо Hyperdrive үстүндөгү pg-boss. Кошумча жумушчуда QUIRE_QUEUE_DRIVER=cloudflare болсо, жеңил жумуштар (тартиби жок билдирүү жана вебхук жеткирүүлөрү) ордуна Cloudflare Queues аркылуу өтөт, ошондуктан алар үчүн Postgres суранбайт. Кошумча жумушчу экөөсүн иштетет
Реалдуу убакыт Durable Objects менен реалдуу убакыт Worker’и, apps/realtime-worker
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg Кошумча контейнер хосту. Worker аларды иштете албайт
Көзөмөл wrangler.jsonc’де иштетилген Workers observability

REPORT_HYPERDRIVE HYPERDRIVE атаган физикалык маалымат базасы үчүн отчёт ролун берет. Бул максат, төмөндө сүрөттөлгөндөй, кошумча физикалык маалымат базаларына бекитилген tenantтарды тейлей албайт.

Бул максат кылалбайт нерселер

Башталышта четке кагылат, ар бир ката бир учурда тизилген:

  • SMTP жок. QUIRE_EMAIL_PROVIDER_CONFIG ичинде HTTP провайдерди колдонуңуз.
  • Жергиликтүү диск жок. QUIRE_STORAGE_DRIVER объекттик сактоону аташы керек.
  • Процесс ичинде реалдуу убакыт же кэш жок. Workers суроолор ортосунда эс тутумун бөлүшпөйт, ошондуктан QUIRE_REALTIME_DRIVER=inprocess жана QUIRE_CACHE_DRIVER=memory четке кагылат.
  • Worker’де ClamAV, Gotenberg же ffmpeg жок. Worker’де коюлган CLAMAV_URL, GOTENBERG_URL жана FFMPEG_PATH четке кагылат; алардын ордуна кошумча жумушчуга коюңуз.
  • Айырмаланган маалымат базасы бар уюмдар жок. Worker’дин Hyperdrive байламалары жайгаштыруу учурунда бекитилет, ошондуктан өз маалымат базасы бар уюм так “unavailable here” бетин алат. Аны Compose же Vercel’ден тейлеңиз.

Жана четке кагылбайт, бирок билүү керек болгон бир нерсе: алдын ала рендерлөө жана тактыктуу статикалык кайра жаңылоо Workers’те иштебейт, фреймворк документациясы эмне айтпасын. Ар бир маршрут суроо сайын рендерленет.

Бул максатта транзакцияларды кыска кармаңыз жана бирөөсүн тармак чакырымынын үстүнөн кармабайт: байланыш бассейнге кайтканда Hyperdrive сессия абалын баштапкы абалга келтирет, ошондуктан tenant контексти ар бир транзакция үчүн коюлат.

Жайгаштыруу

  1. Ресурстарды түзүңүз:
    bun run --bun wrangler hyperdrive create quire-app --connection-string="postgres://quire_app:...@db.example.com:5432/quire"
    bun run --bun wrangler hyperdrive create quire-report --connection-string="postgres://quire_report:...@db.example.com:5432/quire"
    bun run --bun wrangler r2 bucket create quire-files
    bun run --bun wrangler queues create quire-jobs
    Эки Hyperdrive id’син apps/web/wrangler.jsonc’ге коюңуз.
  2. Сырларды bun run --bun wrangler secret put <NAME> менен apps/web’ден бирден коюңуз: QUIRE_SECRET_KEY, QUIRE_MASTER_KEY, QUIRE_EMAIL_PROVIDER_CONFIG, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, QUIRE_COLLAB_SIGNING_KEY, QUIRE_REALTIME_WORKER_SECRET. Адаттагы жөндөөлөр (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) vars’ка кирет.
  3. apps/web’ден куруп, жайгаштырыңыз:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. Реалдуу убакыт Worker’ин веб катмарынын QUIRE_REALTIME_WORKER_SECRET жана анын токен сыры QUIRE_REALTIME_TOKEN_SECRET катары менен жайгаштырыңыз (веб катмары реалдуу убакыт токендерин өзүнүн QUIRE_REALTIME_TOKEN_SECRET менен кол коёт, же ал орнотулбаса QUIRE_SECRET_KEY менен, ошондуктан ал колдонгонун колдонуңуз), жана веб катмарында QUIRE_REALTIME_WORKER_URL’ди анын дарегине коюңуз:
    cd apps/realtime-worker
    bun run --bun wrangler secret put QUIRE_REALTIME_WORKER_SECRET
    bun run --bun wrangler secret put QUIRE_REALTIME_TOKEN_SECRET
    bun run --bun wrangler deploy
  5. Cloudflare Queues’теги жеңил жумуштар үчүн ар бир жеңил кезекке бир кезек түзүп, төмөнкүлөрдү кошумча жумушчуга коюңуз (Queues окуу жана жазуу укуктары бар API белгиси):
    bun run --bun wrangler queues create quire-events-notifications
    bun run --bun wrangler queues create quire-events-notifications-dead
    bun run --bun wrangler queues create quire-events-webhooks
    bun run --bun wrangler queues create quire-events-webhooks-dead
    QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_QUEUES_TOKEN, жана QUIRE_QUEUE_PREFIX quire- болбосо.
  6. Кошумча хостту Vercel нускакасындагыдай 3-кадамда иштетиңиз. Миграциялар ошол жерде, ар бир Worker жайгаштыруусунан мурун иштетилет.

Четке кагылган конфигурация bun run --bun wrangler tail’де “The web tier did not start on cloudflare” катары көрсөтүлөт, андан кийин өзгөртүү керек болгон ар бир жөндөө келет.

Навигация

Издөө үчүн жазыңыз…

↑↓ навигация↵ тандооEsc жабуу