Зохион байгуулалт нь docs/architecture/23-ops.md хэсэг 6. Workers нь хязгаарлагдсан веб түвшинг ажиллуулна. Workers дээр бүтээгдэхүүн адил байх нь хүрээнээс гадуур (PRD хэсэг 12): энэ зорилт чаддаггүй зүйлсийг эхлэх үед нэрээр нь татгалздаг.
Энэ хувилбарын төлөв
Тохиргоо бэлэн (apps/web/wrangler.jsonc, cloudflare-module Nitro preset, 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-ийн клиент юм (тархалт, байршил, түүхийн хувьд суваг бүрт нэг Durable Object, салалтын хувьд хүн бүрт нэг); доорхоор хамт байршуулна уу, эсвэл Centrifugo ашиглаарай.
Хэсгүүд
| Хэсэг | 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 холболт савыг хавсаргана |
| Арын ажлууд | Ажил бичлэг шаардлагатай үед Hyperdrive дээрх pg-boss. Туслах ажилч дээр QUIRE_QUEUE_DRIVER=cloudflare байвал хөнгөн ажлууд (ээлжлээгүй мэдэгдэл болон вебхүүкийн хүргэлтүүд) оронд нь Cloudflare Queues дамжуулан явдаг тул Postgres-ийг тэдгээрийн тулд асуухгүй. Туслах ажилч хоёуланг нь ажиллуулна |
| Бодит цаг | Бодит цагийн Worker, apps/realtime-worker, Durable Objects-тэй |
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg |
Туслах контейнер хост. Worker тэдгээрийг ажиллуулж чадахгүй |
| Мөрдөн хянах | Workers ажиглалт, wrangler.jsonc-д идэвхжүүлсэн |
REPORT_HYPERDRIVE нь HYPERDRIVE-аар нэрлэгдсэн физик өгөгдлийн санд тайлангийн үүргийг өгдөг. Энэ зорилт доор тайлбарласны дагуу нэмэлт физик өгөгдлийн санд бэхэлэгдсэн түрээсчдэд үйлчлэхгүй.
Энэ зорилт чаддаггүй зүйлс
Эхлэх үед татгалзагдаж, асуудал бүрийг нэгэн зэрэг жагсаана:
- 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 холболтууд байршуулах үедээ тогтмол байдаг тул өөрийн өгөгдлийн сантай байгууллага тодорхой “энд боломжгүй” хуудас авна. Үүнийг Compose эсвэл Vercel-ээр үйлчилнэ үү.
Мөн татгалзагдаагүй боловч мэдэж байх ёстой нэг зүйл: урьдчилан дүрсэлж байгуулах болон нэмэлт статик шинэчлэл Workers дээр ажиллахгүй — фреймворкийн баримт бичиг юу ч хэлсэн. Маршрут бүр хүсэлт бүрт дүрсэгдэнэ.
Энэ зорилт дээр гүйлгээнүүдийг богино байлгаад, сүлжээний дуудлагын турш нэгийг ч барьж байхгүй: холболт холболтын санд буцах үед Hyperdrive сессийн байдлыг дахин тохируулдаг тул түрээсчийн контекст гүйлгээн бүрээр тогтоогддог.
Байршуулах
- Нөөцүүдийг үүсгэнэ үү:
Хоёр Hyperdrive id-г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-jobsapps/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 build bun run --bun wrangler deploy- Бодит цагийн Worker-ийг веб түвшний
QUIRE_REALTIME_WORKER_SECRET, мөн түүний token нууцыгQUIRE_REALTIME_TOKEN_SECRETболгон байршуулна уу (веб түвшин бодит цагийн token-уудыг өөрийн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 - Cloudflare Queues дээрх хөнгөн ажлуудын хувьд хөнгөн ээлж бүрт нэг ээлж үүсгээд, тэдгээрийг туслах ажилч дээр тогтооно уу (Queues унших, бичих эрхтэй API token):
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-deadQUIRE_QUEUE_DRIVER=cloudflare,CLOUDFLARE_ACCOUNT_ID,CLOUDFLARE_QUEUES_TOKEN, мөнQUIRE_QUEUE_PREFIXньquire-биш бол. - Туслах хостыг Vercel гарын авлага-ын 3-р алхмын дагуу ажиллуулна уу. Шилжүүлэлтүүд тэнд, Worker байршуулалт бүрээс өмнө ажиллана.
Татгалзагдсан тохиргоо нь bun run --bun wrangler tail дээр “The web tier did not start on cloudflare” байдлаар гарч, дараа нь өөрчлөх тохиргоо бүр нэг дагадаг.