Preskoči na sadržaj

Web-sloj na Cloudflare Workers

Pokrenite ograničeni web-sloj Quirea na Cloudflare Workers.

Prikaži kao Markdown

Dizajn je opisan u odjeljku 6 dokumenta docs/architecture/23-ops.md. Workers pokreće ograničeni web-sloj. Potpuna funkcionalna usklađenost na Workersu nije cilj (odjeljak 12 dokumenta PRD): pri pokretanju odbijaju se mogućnosti koje ovo odredište ne podržava, uz navođenje po imenu.

Stanje u ovom izdanju

Konfiguracija je spremna (apps/web/wrangler.jsonc, unaprijed postavljena vrijednost Nitro cloudflare-module, most Hyperdrive i provjere pri pokretanju). Worker treba pohranu kompatibilnu sa S3 za R2 (QUIRE_STORAGE_DRIVER=s3), upravljački program za stvarno vrijeme koji opslužuje zahtjeve (QUIRE_REALTIME_DRIVER=durable_objects ili centrifugo), zajedničku predmemoriju (QUIRE_CACHE_DRIVER=postgres ili valkey) i HTTP pružatelja e-pošte. Bez njih Worker odbija pokretanje, a zapis navodi svaku postavku. Upravljački program Durable Objects klijent je Worker procesa za stvarno vrijeme u apps/realtime-worker (jedan objekt Durable Object po kanalu za distribuciju, prisutnost i povijest te jedan po osobi za prekide veze); uvedite ga zajedno s web-slojem prema uputama u nastavku ili koristite Centrifugo.

Sastavni dijelovi

Dio Na Cloudflareu
web Worker s nodejs_compat
Postgres Vanjska baza kojoj se pristupa preko Hyperdrive: HYPERDRIVE za ulogu aplikacije, REPORT_HYPERDRIVE za ulogu izvješća u istoj fizičkoj bazi. Web-sloj pri pokretanju kopira svaki niz veze u DATABASE_URL i QUIRE_REPORT_DATABASE_URL
Datoteke R2 preko njegova S3 API-ja (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); vezanje FILES priključuje spremnik
Pozadinski poslovi pg-boss preko Hyperdrivea kad posao treba staviti u red zajedno sa zapisom. Kad se na pratećem radniku postavi QUIRE_QUEUE_DRIVER=cloudflare, jednostavni poslovi (neporedana isporuka obavijesti i web-dojavnika) prolaze kroz Cloudflare Queues pa se Postgres ne provjerava radi njih. Prateći radnik pokreće oboje
Događaji u stvarnom vremenu Worker za stvarno vrijeme apps/realtime-worker s objektima Durable Objects
worker, scheduler, collab, content, ClamAV, Gotenberg, ffmpeg Prateći poslužitelj spremnika. Worker ih ne može pokretati
Praćenje Mogućnosti nadzora Workersa, uključene u wrangler.jsonc

REPORT_HYPERDRIVE daje ulogu za izvješća za fizičku bazu navedenu u HYPERDRIVE. Ovo odredište ne poslužuje klijente prikvačene na dodatne fizičke baze, kao što je objašnjeno u nastavku.

Što ovo odredište ne može

Pri pokretanju se odjednom odbijaju sve mogućnosti koje nisu podržane:

  • Nema SMTP-a. Koristite HTTP pružatelja u QUIRE_EMAIL_PROVIDER_CONFIG.
  • Nema lokalnog diska. QUIRE_STORAGE_DRIVER mora navesti pohranu objekata.
  • Nema stvarnog vremena ni predmemorije u istom procesu. Workers ne dijeli memoriju među zahtjevima, pa se odbijaju QUIRE_REALTIME_DRIVER=inprocess i QUIRE_CACHE_DRIVER=memory.
  • Nema ClamAV-a, Gotenberga ni ffmpega unutar Workera. Postavke CLAMAV_URL, GOTENBERG_URL i FFMPEG_PATH na Workeru odbijaju se; postavite ih na pratećem radniku.
  • Nema organizacija s namjenskim bazama podataka. Vezanja Hyperdrivea za Worker utvrđuju se pri uvođenju, pa se za organizaciju s vlastitom bazom prikazuje jasna stranica „ovdje nije dostupno”. Poslužujte je s Composa ili Vercela.

Postoji još jedna stvar koja se ne odbija, ali je morate znati: predizrada i inkrementalna ponovna generacija statičkih stranica ne rade na Workersu, bez obzira na dokumentaciju okvira. Svaka se ruta renderira pri svakom zahtjevu.

Na ovom odredištu transakcije moraju biti kratke i ne smiju obuhvaćati mrežni poziv: Hyperdrive pri vraćanju veze u skup poništava stanje sesije, pa se kontekst klijenta postavlja za svaku transakciju.

Uvođenje

  1. Izradite resurse:
    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
    Unesite dva ID-ja Hyperdrivea u apps/web/wrangler.jsonc.
  2. Postavite tajne, jednu po jednu naredbom bun run --bun wrangler secret put <NAME> iz direktorija apps/web: QUIRE_SECRET_KEY, QUIRE_MASTER_KEY, QUIRE_EMAIL_PROVIDER_CONFIG, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, QUIRE_COLLAB_SIGNING_KEY i QUIRE_REALTIME_WORKER_SECRET. Obične postavke (QUIRE_APP_ORIGIN, QUIRE_CONTENT_ORIGIN, QUIRE_PLATFORM_DOMAINS, QUIRE_DATABASE_ID, S3_ENDPOINT, S3_BUCKET, QUIRE_COLLAB_URL) dodajte u vars.
  3. Izradite paket i uvedite aplikaciju iz direktorija apps/web:
    NITRO_PRESET=cloudflare-module bun run build
    bun run --bun wrangler deploy
  4. Uvedite Worker za stvarno vrijeme s vrijednošću QUIRE_REALTIME_WORKER_SECRET iz web-sloja i njegovom tajnom tokena kao QUIRE_REALTIME_TOKEN_SECRET. Web-sloj potpisuje tokene za stvarno vrijeme vlastitom postavkom QUIRE_REALTIME_TOKEN_SECRET, odnosno ključem QUIRE_SECRET_KEY ako ona nije postavljena, stoga upotrijebite onu koju koristi. Postavite QUIRE_REALTIME_WORKER_URL web-sloja na njegovu adresu:
    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. Za jednostavne poslove na Cloudflare Queuesu izradite jedan red po vrsti jednostavnog posla i postavite navedeno na pratećem radniku (API token s ovlastima čitanja i zapisivanja u redove):
    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
    Postavite QUIRE_QUEUE_DRIVER=cloudflare, CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_QUEUES_TOKEN i QUIRE_QUEUE_PREFIX ako prefiks nije quire-.
  6. Pokrenite prateći poslužitelj kao u vodiču za Vercel, korak 3. Migracije se ondje izvršavaju prije svakog uvođenja Workera.

Odbijena konfiguracija prikazuje se u izlazu naredbe bun run --bun wrangler tail kao „The web tier did not start on cloudflare”, a zatim slijedi popis svake postavke koju treba promijeniti.

Navigacija

Upišite za pretraživanje…

↑↓ kretanje↵ odabirEsc zatvaranje