Агуулг руу шилжих

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

Cloudflare Workers дээр хязгаарлагдсан Quire веб түвшинг ажиллуулах.

Markdown хэлбэрээр харах

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

Байршуулах

  1. Нөөцүүдийг үүсгэнэ үү:
    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-ээс бүтээгээд байршуулна уу:
    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-ийг түүний хаягт тогтооно уу:
    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):
    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 гарын авлага-ын 3-р алхмын дагуу ажиллуулна уу. Шилжүүлэлтүүд тэнд, Worker байршуулалт бүрээс өмнө ажиллана.

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

Навигаци

Хайхын тулд бичнэ үү…

↑↓ шилжих↵ сонгохEsc хаах