ಸಾಮಗ್ರಿಗೆ ನೇರವಾಗಿ ಹೋಗಿ

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 ಗೆ ನಕಲಿಸುತ್ತದೆ
ಫೈಲ್‌ಗಳು ಅದರ S3 API ಮೂಲಕ R2 (S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com); FILES ಬೈಂಡಿಂಗ್ ಬಕೆಟ್ ಅನ್ನು ಲಗತ್ತಿಸುತ್ತದೆ
ಹಿನ್ನೆಲೆ ಕೆಲಸಗಳು ಕೆಲಸವನ್ನು ಬರೆಯುವಿಕೆಯೊಂದಿಗೆ ಸರಿಸಬೇಕಾದರೆ Hyperdrive ಮೂಲಕ pg-boss. ಸಹಚರ ವರ್ಕರ್‌ನಲ್ಲಿ QUIRE_QUEUE_DRIVER=cloudflare ಇದ್ದಾಗ, ಹಗುರ ಕೆಲಸಗಳು (ಕ್ರಮರಹಿತ ಅಧಿಸೂಚನೆ ಮತ್ತು webhook ಡೆಲಿವರಿಗಳು) ಬದಲಿಗೆ Cloudflare Queues ಮೂಲಕ ಹೋಗುತ್ತವೆ, ಆದ್ದರಿಂದ Postgres ಅವುಗಳಿಗಾಗಿ ಪೋಲ್ ಆಗುವುದಿಲ್ಲ. ಸಹಚರ ವರ್ಕರ್ ಎರಡನ್ನೂ ಚಲಾಯಿಸುತ್ತದೆ
ರಿಯಲ್‌ಟೈಮ್ apps/realtime-worker ನ ರಿಯಲ್‌ಟೈಮ್ 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. ವೆಬ್ ಹಂತದ QUIRE_REALTIME_WORKER_SECRET ಮತ್ತು ಅದರ ಟೋಕನ್ ರಹಸ್ಯವನ್ನು QUIRE_REALTIME_TOKEN_SECRET ಆಗಿ ಹೊಂದಿಸಿ ರಿಯಲ್‌ಟೈಮ್ Worker ಡಿಪ್ಲಾಯ್ ಮಾಡಿ (ವೆಬ್ ಹಂತವು ರಿಯಲ್‌ಟೈಮ್ ಟೋಕನ್‌ಗಳಿಗೆ ತನ್ನದೇ 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 ಟೋಕನ್):
    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 ಮುಚ್ಚಿ