ດີຊາຍນແມ່ນ docs/architecture/23-ops.md ບົດທີ 5. Vercel ແລ່ນຊັ້ນ
ເວັບແຕ່. ສິ່ງທີ່ເຫຼືອທັງໝົດແລ່ນຢູ່ເຊີບເວີເພື່ອການທີ່ທ່ານດຳເນີນ
ແລະມັນບໍ່ແມ່ນທາງເລືອກ.
ສະຖານະໃນສະບັບນີ້
ການຕັ້ງຄ່າຢູ່ໃນລະບົບແລ້ວ (apps/web/vercel.json, preset vercel
ຂອງ Nitro ແລະການກວດສອບການເລີ່ມ). Vercel ຕ້ອງການການເກັບ
ໄຟລ໌ທີ່ແບ່ງປັນ (QUIRE_STORAGE_DRIVER=s3 ຫຼື azure), ແຂກຮັບຊົງ
realtime ທີ່ເຮັດວຽກຂ້າມ function instances (QUIRE_REALTIME_DRIVER=sse
ຫຼື centrifugo) ແລະ ຜູ້ໃຫ້ບໍລິການອີເມວ HTTP. ໂດຍບໍ່ມີພວກມັນ
ຊັ້ນເວັບປະຕິເສດການເລີ່ມ ແລະບັນທຶກຂອງມັນລະບຸການຕັ້ງຄ່າ
ແຕ່ລະອັນທີ່ຂາດ.
ອັນລວມຕ່າງໆ
| ອັນລວມ | ບ່ອນທີ່ມັນແລ່ນ |
|---|---|
web |
Vercel Functions, Bun runtime: ໜ້າ, REST, MCP, LTI, webhooks ທີ່ໄດ້ຮັບ |
worker, scheduler, collab, content |
ເຊີບເວີເພື່ອການ: Fly, Railway, ECS, ຫຼື Docker host ຂອງທ່ານເອງກັບ docker/compose.yaml |
| Postgres | ພາຍນອກ, ຢູ່ເບື້ອງຫຼັງ transaction pooler: Neon, Supabase, ຫຼື RDS ກັບ PgBouncer |
| ໄຟລ໌ | S3 ຫຼື R2. ບໍ່ມິດິດຖະຫນົນຖາວອນ |
| ງານພື້ນຫຼັງ | ບັນທຶກເຂົ້າ queue ດ້ວຍ pg-boss ພາຍໃນ transaction ຂອງຄຳຮ້ອງຂໍ, ແລ່ນໂດຍ worker ເພື່ອການ. ດ້ວຍ QUIRE_QUEUE_DRIVER=vercel ໃນ worker ເພື່ອການ ງານເບົາໆ (ການແຈ້ງເຕືອນ ແລະການສົ່ງ webhook ທີ່ບໍ່ມີລຳດັບ) ໄປຜ່ານ Vercel Queues (VERCEL_QUEUE_REGION, VERCEL_QUEUE_TOKEN) ດັ່ງນັ້ນ Postgres ທີ່ປົກຄຸມບໍ່ຖືກເອີ້ນສຳລັບພວກມັນ |
| ງານຊ້ຳເວລາ | Scheduler ເພື່ອການ. ບໍ່ມີເສັ້ນທາງ Vercel Cron ເພາະ cron ທີ່ເຮັດງານພາຍໃນ function ຈະໝົດເວລາ |
| ການຕິດຕາມ | OpenTelemetry ໄປຫາຕົວເກັບຂອງທ່ານ, OTEL_EXPORTER_OTLP_ENDPOINT |
ສິ່ງທີ່ເປົ້າໝາຍນີ້ບໍ່ສາມາດເຮັດໄດ້
ຊັ້ນເວັບກວດສອບສິ່ງເຫຼົ່ານີ້ເມື່ອມັນເລີ່ມ ແລະປະຕິເສດ, ລະບຸ ບັນຫາທຸກໆອັນ, ແທນທີ່ຈະລົ້ມຕໍ່ມາໃນການສົ່ງອີເມວຄັ້ງທຳອິດ ທີ່ບໍ່ເຄີຍໄດ້ສົ່ງ:
- ບໍ່ມີ SMTP. Vercel ກັກ SMTP ອອກ. ຕັ້ງ
QUIRE_EMAIL_PROVIDER_CONFIGເປັນຜູ້ໃຫ້ບໍລິການ HTTP (Postmark, SES, Mailgun, SendGrid ຫຼື Resend).QUIRE_SMTP_URLຖືກປະຕິເສດ. - ບໍ່ມີດິດທ້ອງຖິ່ນ.
QUIRE_STORAGE_DRIVER=localຖືກປະຕິເສດ. - ບໍ່ມີຄວາມຈື່ຈຳທີ່ແບ່ງປັນລະຫວ່າງການເອີ້ນ.
QUIRE_REALTIME_DRIVER=inprocessຖືກປະຕິເສດ. Server-sent events ຖືກເກນໄວ້ທີ່ timeout ຂອງ function; clientເຊື່ອມຕໍ່ຄືນດ້ວຍ cursor ດັ່ງນັ້ນບໍ່ມີເຫດການໃດສູນ ແຕ່ການມີຕົວຢູ່ບໍ່ສາມາດໃຊ້ໄດ້. - ຖານຂໍ້ມູນ tenant ທີ່ຖືກ pin ຖືກຈຳກັດ ເທົ່າກັບປະມານແປດ ແຫ່ງ ເພາະແຕ່ລະແຫ່ງແມ່ນ connection pool ໜຶ່ງອີກໃນສະພາບ ແວດລ້ອມທີ່ບໍ່ສາມາດແບ່ງປັນ pools ໄດ້.
ການນຳສົ່ງ
- ສ້າງໂຄງການ Vercel ຈາກ repo ດ້ວຍ Root Directory
apps/web.apps/web/vercel.jsonຕັ້ງຄຳສັ່ງຕິດຕັ້ງ ແລະສ້າງ (NITRO_PRESET=vercel) ແລະບໍລິການ/sw.jsໂດຍບໍ່ມີ cache. - ຕັ້ງຕົວແປສະພາບແວດລ້ອມ. ຈາກ
docker/.env.example, ຢ່າງໜ້ອຍ:QUIRE_DEPLOY_TARGET=vercel,QUIRE_APP_ORIGIN,QUIRE_CONTENT_ORIGIN,QUIRE_PLATFORM_DOMAINS,QUIRE_SECRET_KEY,QUIRE_MASTER_KEY,DATABASE_URL(ທີ່ຢູ່ຂອງ pooler),QUIRE_REPORT_DATABASE_URL,QUIRE_AUDIT_DATABASE_URL,QUIRE_DATABASE_ID,QUIRE_EMAIL_PROVIDER_CONFIG,QUIRE_MAIL_FROM, ການຕັ້ງຄ່າການເກັບ, ແລະQUIRE_COLLAB_URLແລະQUIRE_COLLAB_SIGNING_KEYທີ່ຊີ້ໄປບໍລິການ collab ຂອງ ເພື່ອການ.QUIRE_REPORT_DATABASE_URLຂຶ້ນກັບຖານຂໍ້ມູນທາງກາຍະພາບທີ່DATABASE_URLລະບຸ. ສຳລັບຖານຂໍ້ມູນທີ່ລົງທະບຽນເພີ່ມເຕີມ ແຕ່ລະແຫ່ງ ເພີ່ມ URL ການເຊື່ອມຕໍ່quire_reportຂອງມັນເອງ ເຂົ້າສະພາບແວດລ້ອມ web ແລະ worker ທັງສອງ ຈາກນັ້ນລົງທະບຽນ ຊື່ຕົວແປສະພາບແວດລ້ອມຂອງມັນເປັນenv:NAMEໃນ console ຂອງ ເພລຟອມ. ການວິເຄາະລົ້ມແຫຼວໂດຍປິດຖ້າ URL ລາຍງານຂອງຖານ ຂໍ້ມູນນັ້ນຂາດ. - ຢູ່ເຊີບເວີເພື່ອການ ແລ່ນ
docker/compose.yamlໂດຍບໍ່ມີບໍລິການwebກັບdocker/.envດຽວກັນ: ການຍ້າຍຂໍ້ມູນແລ່ນຢູ່ທີ່ນັ້ນ, ກ່ອນທີ່ການສົ່ງ Vercel ແຕ່ລະຄັ້ງ ຈະຖືກຍົກຂຶ້ນ.docker compose -f docker/compose.yaml up -d migrate init worker scheduler collab content - ສົ່ງ. ໃນການຕັ້ງຄ່າທີ່ຖືກປະຕິເສດ ບັນທຶກ function ເລີ່ມດ້ວຍ “The web tier did not start on vercel” ແລະລາຍຊື່ການຕັ້ງຄ່າ ແຕ່ລະອັນທີ່ຈະປ່ຽນ.
ການອັບເດດ
ຍ້າຍຈາກເຊີບເວີເພື່ອການກ່ອນ, ຈາກນັ້ນຍົກການສົ່ງ Vercel ໃໝ່ ຂຶ້ນ, ຈາກນັ້ນແກວງ workers ຂອງເພື່ອການ: ລຳດັບຢູ່ໃນ upgrade.md. ການກັບຄືນທັນທີຂອງ Vercel ແມ່ນການກັບ ຄືນລະຫັດ ແລະປອດໄພສະເໝີພາຍໃນສະບັບໜຶ່ງ.