Дизайн 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
REPORT_HYPERDRIVEHYPERDRIVE атаган физикалык маалымат базасы үчүн
отчёт ролун берет. Бул максат, төмөндө сүрөттөлгөндөй, кошумча
физикалык маалымат базаларына бекитилген 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 контексти ар
бир транзакция үчүн коюлат.
Жайгаштыруу
Ресурстарды түзүңүз:
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-filesbun run --bun wrangler queues create quire-jobs
Эки Hyperdrive id’син apps/web/wrangler.jsonc’ге коюңуз.
Сырларды 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’ка кирет.
apps/web’ден куруп, жайгаштырыңыз:
NITRO_PRESET=cloudflare-module bun run buildbun run --bun wrangler deploy
Реалдуу убакыт Worker’ин веб катмарынын QUIRE_REALTIME_WORKER_SECRET
жана анын токен сыры QUIRE_REALTIME_TOKEN_SECRET катары менен
жайгаштырыңыз (веб катмары реалдуу убакыт токендерин өзүнүн
QUIRE_REALTIME_TOKEN_SECRET менен кол коёт, же ал орнотулбаса
QUIRE_SECRET_KEY менен, ошондуктан ал колдонгонун колдонуңуз), жана
веб катмарында QUIRE_REALTIME_WORKER_URL’ди анын дарегине коюңуз:
cd apps/realtime-workerbun run --bun wrangler secret put QUIRE_REALTIME_WORKER_SECRETbun run --bun wrangler secret put QUIRE_REALTIME_TOKEN_SECRETbun run --bun wrangler deploy
Cloudflare Queues’теги жеңил жумуштар үчүн ар бир жеңил кезекке бир
кезек түзүп, төмөнкүлөрдү кошумча жумушчуга коюңуз (Queues окуу жана
жазуу укуктары бар API белгиси):
bun run --bun wrangler queues create quire-events-notificationsbun run --bun wrangler queues create quire-events-notifications-deadbun run --bun wrangler queues create quire-events-webhooksbun run --bun wrangler queues create quire-events-webhooks-dead
QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID,
CLOUDFLARE_QUEUES_TOKEN, жана QUIRE_QUEUE_PREFIXquire- болбосо.
Кошумча хостту Vercel нускакасындагыдай 3-кадамда
иштетиңиз. Миграциялар ошол жерде, ар бир Worker жайгаштыруусунан
мурун иштетилет.
Четке кагылган конфигурация bun run --bun wrangler tail’де “The web tier did
not start on cloudflare” катары көрсөтүлөт, андан кийин өзгөртүү керек
болгон ар бир жөндөө келет.