---
title: "Cloudflare Workers дээрх веб түвшин"
description: "Cloudflare Workers дээр хязгаарлагдсан Quire веб түвшинг ажиллуулах."
image: "https://docs.quirelms.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.quirelms.com/mn/llms.txt
> Use this file to discover all available pages before exploring further.

# Cloudflare Workers дээрх веб түвшин

<span id="the-web-tier-on-cloudflare-workers"></span>

Зохион байгуулалт нь `docs/architecture/23-ops.md` хэсэг 6. Workers нь хязгаарлагдсан веб түвшинг ажиллуулна. Workers дээр бүтээгдэхүүн адил байх нь хүрээнээс гадуур (PRD хэсэг 12): энэ зорилт чаддаггүй зүйлсийг эхлэх үед нэрээр нь татгалздаг.

## Энэ хувилбарын төлөв <!--quire:status-in-this-release-->

Тохиргоо бэлэн (`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 ашиглаарай.

## Хэсгүүд <!--quire:the-pieces-->

| Хэсэг | 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`-аар нэрлэгдсэн физик өгөгдлийн санд тайлангийн үүргийг өгдөг. Энэ зорилт доор тайлбарласны дагуу нэмэлт физик өгөгдлийн санд бэхэлэгдсэн түрээсчдэд үйлчлэхгүй.

## Энэ зорилт чаддаггүй зүйлс <!--quire:what-this-target-cannot-do-->

Эхлэх үед татгалзагдаж, асуудал бүрийг нэгэн зэрэг жагсаана:

- **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 сессийн байдлыг дахин тохируулдаг тул түрээсчийн контекст гүйлгээн бүрээр тогтоогддог.

## Байршуулах <!--quire:deploying-->

1. Нөөцүүдийг үүсгэнэ үү:
   ```sh
   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`-ээс бүтээгээд байршуулна уу:
   ```sh
   NITRO_PRESET=cloudflare-module bun run build
   bun run --bun wrangler deploy
   ```
4. Бодит цагийн Worker-ийг веб түвшний `QUIRE_REALTIME_WORKER_SECRET`, мөн түүний token нууцыг `QUIRE_REALTIME_TOKEN_SECRET` болгон байршуулна уу (веб түвшин бодит цагийн token-уудыг өөрийн `QUIRE_REALTIME_TOKEN_SECRET`-ээр, тэр тогтоогдоогүй бол `QUIRE_SECRET_KEY`-ээр гарын үсэглэдэг тул аль нь ашиглаж байгаагаа ашиглаарай), мөн веб түвшин дээр `QUIRE_REALTIME_WORKER_URL`-ийг түүний хаягт тогтооно уу:
   ```sh
   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 token):
   ```sh
   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 гарын авлага](/mn/ops/vercel/)-ын 3-р алхмын дагуу ажиллуулна уу. Шилжүүлэлтүүд тэнд, Worker байршуулалт бүрээс өмнө ажиллана.

Татгалзагдсан тохиргоо нь `bun run --bun wrangler tail` дээр "The web tier did not start on cloudflare" байдлаар гарч, дараа нь өөрчлөх тохиргоо бүр нэг дагадаг.

Source: https://docs.quirelms.com/mn/ops/cloudflare/index.mdx
