---
title: "Cloudflare Workers-də web qatı"
description: "Cloudflare Workers-də ixtisar edilmiş Quire web qatını işlədin."
image: "https://docs.quirelms.com/og.png"
---

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

# Cloudflare Workers-də web qatı

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

Dizayn `docs/architecture/23-ops.md` sənədinin 6-cı bölməsindədir. Workers ixtisar edilmiş web qatını işlədir. Workers-də xüsusiyyətlərin tam uyğunluğu əhatə dairəsinə daxil deyil (PRD bölmə 12): bu hədəfin edə bilmədiyi xüsusiyyətlər başlarkən adları ilə rədd edilir.

## Bu buraxılışın vəziyyəti <!--quire:status-in-this-release-->

Konfiqurasiya hazırdır (`apps/web/wrangler.jsonc`, `cloudflare-module` Nitro preset-i, Hyperdrive körpüsü və başlanğıc yoxlamaları). Worker üçün R2 üçün S3 ilə uyğun saxlama (`QUIRE_STORAGE_DRIVER=s3`), sorğular arasında real vaxt sürücüsü (`QUIRE_REALTIME_DRIVER=durable_objects` və ya `centrifugo`), paylaşılan keş (`QUIRE_CACHE_DRIVER=postgres` və ya `valkey`) və HTTP e-poçt provayderi lazımdır. Bunlar olmasa, Worker başlamır və jurnalında çatışmayan parametrlərin adını bildirir. Durable Objects sürücüsü `apps/realtime-worker` real vaxt Worker-in client-idir (yayım, iştirak və tarixçə üçün kanal başına bir Durable Object, əlaqə kəsilməsi üçün şəxs başına bir); aşağıda göstərildiyi kimi yanaşı yerləşdirin və ya Centrifugo işlədin.

## Hissələr <!--quire:the-pieces-->

| Hissə | Cloudflare-də |
| --- | --- |
| `web` | `nodejs_compat` olan Worker |
| Postgres | Hyperdrive vasitəsilə xarici: tətbiq rolu üçün `HYPERDRIVE`, eyni fiziki bazadakı hesabat rolu üçün `REPORT_HYPERDRIVE`. Başlayanda web qatı hər bağlantı sətrini `DATABASE_URL` və `QUIRE_REPORT_DATABASE_URL`-ə köçürür |
| Fayllar | S3 API-si vasitəsilə R2 (`S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com`); `FILES` bağlaması bucket-i qoşur |
| Fon tapşırıqları | Yazma ilə eyni vaxtda növbəyə qoyulmalı tapşırıqlar üçün Hyperdrive üzərindən pg-boss. Əlavə worker-də `QUIRE_QUEUE_DRIVER=cloudflare` olduqda yüngül işlər (sıralanmamış bildiriş və vebhuk çatdırılması) Cloudflare Queues ilə ötürülür, beləliklə, Postgres bu işlər üçün sorğulanmır. Əlavə worker hər ikisini icra edir |
| Real vaxt | Durable Objects olan `apps/realtime-worker` real vaxt Worker-i |
| `worker`, `scheduler`, `collab`, `content`, ClamAV, Gotenberg, ffmpeg | Əlavə konteyner hostu. Worker bunları işlədə bilməz |
| İzləmə | `wrangler.jsonc`-də aktiv edilmiş Workers observability |

`REPORT_HYPERDRIVE`, `HYPERDRIVE` ilə adlandırılmış fiziki bazanın hesabat rolunu təmin edir. Aşağıda izah edildiyi kimi, bu hədəf əlavə fiziki bazalara bağlanmış tenant-lara xidmət etmir.

## Bu hədəfin edə bilmədikləri <!--quire:what-this-target-cannot-do-->

Başlanğıcda rədd edilir və bütün problemlər birlikdə sadalanır:

- **SMTP yoxdur.** `QUIRE_EMAIL_PROVIDER_CONFIG` daxilində HTTP provayderi istifadə edin.
- **Lokal disk yoxdur.** `QUIRE_STORAGE_DRIVER` obyekt saxlamanı göstərməlidir.
- **Prosesdaxili real vaxt və ya keş yoxdur.** Workers sorğular arasında yaddaş paylaşmır, buna görə `QUIRE_REALTIME_DRIVER=inprocess` və `QUIRE_CACHE_DRIVER=memory` rədd edilir.
- **Worker daxilində ClamAV, Gotenberg və ya ffmpeg yoxdur.** Worker-də təyin olunan `CLAMAV_URL`, `GOTENBERG_URL` və `FFMPEG_PATH` rədd edilir; bunları əlavə worker-də təyin edin.
- **Ayrılmış verilənlər bazalı təşkilat yoxdur.** Worker-in Hyperdrive bağlamaları yerləşdirmə zamanı sabitdir, ona görə öz verilənlər bazası olan təşkilata “burada əlçatan deyil” səhifəsi göstərilir. Compose və ya Vercel-dən xidmət edin.

Rədd edilməyən, lakin bilinməli olan bir məqam: **Workers-də prerender və artımlı statik yeniləmə işləmir**, framework sənədləri nə desə də. Hər marşrut hər sorğuya görə render edilir.

Bu hədəfdə tranzaksiyaları qısa saxlayın və şəbəkə çağırışı ərzində açıq saxlamayın: bağlantı pool-a qayıdanda Hyperdrive sessiya vəziyyətini sıfırlayır, buna görə tenant konteksti hər tranzaksiyada təyin edilir.

## Yerləşdirmə <!--quire:deploying-->

1. Resursları yaradın:
   ```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
   ```
   İki Hyperdrive ID-sini `apps/web/wrangler.jsonc` faylına yerləşdirin.
2. Secret-ləri bir-bir `bun run --bun wrangler secret put <NAME>` ilə `apps/web` qovluğundan təyin edin: `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`. Adi parametrləri (`QUIRE_APP_ORIGIN`, `QUIRE_CONTENT_ORIGIN`, `QUIRE_PLATFORM_DOMAINS`, `QUIRE_DATABASE_ID`, `S3_ENDPOINT`, `S3_BUCKET`, `QUIRE_COLLAB_URL`) `vars`-a daxil edin.
3. `apps/web` qovluğundan yığın və yerləşdirin:
   ```sh
   NITRO_PRESET=cloudflare-module bun run build
   bun run --bun wrangler deploy
   ```
4. Real vaxt Worker-i web qatının `QUIRE_REALTIME_WORKER_SECRET` və onun token secret-i `QUIRE_REALTIME_TOKEN_SECRET` ilə yerləşdirin (web qatı real vaxt tokenlərini öz `QUIRE_REALTIME_TOKEN_SECRET` ilə, bu yoxdursa `QUIRE_SECRET_KEY` ilə imzalayır; istifadə etdiyi dəyəri götürün). Web qatında `QUIRE_REALTIME_WORKER_URL`-i onun ünvanına təyin edin:
   ```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 üzərində yüngül tapşırıqlar üçün hər yüngül növbəyə bir queue yaradın və bunları əlavə worker-də təyin edin (Queues oxuma və yazma icazəli API tokeni):
   ```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` və `QUIRE_QUEUE_PREFIX` parametrini (`quire-` olmadıqda) təyin edin.
6. Əlavə hostu [Vercel təlimatının](/az/ops/vercel/) 3-cü addımında göstərildiyi kimi başladın. Hər Worker yerləşdirilməsindən əvvəl miqrasiyalar orada işləyir.

Rədd edilmiş konfiqurasiya `bun run --bun wrangler tail` daxilində “The web tier did not start on cloudflare” və dəyişdirilməli parametrlərin siyahısı ilə görünür.

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