Məzmunu keç

Cloudflare Workers-də web qatı

Cloudflare Workers-də ixtisar edilmiş Quire web qatını işlədin.

Markdown kimi göstər

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

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

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

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ə

  1. Resursları yaradın:
    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:
    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:
    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):
    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 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.

Naviqasiya

Axtarmaq üçün yazın…

↑↓ naviqasiya↵ seçEsc bağla