ขั้นตอน Deploy Nextjs บน Cloudflare page
ใช้ DNS ของ Cloudflare มานานพึ่งรู้ว่ามีระบบ Cloudflare page ด้วยเพื่อให้เราเอาเว็บที่เป็น Static page ไปวางได้ แบบเดียวกับ Gitlab page เลย แต่มันดีกว่าคือ
- ทำแยก Environment ได้ เช่น แยกเป็น Develop กับ Production
- กำหนดใส่ค่า Header ได้เอง
ซึ่งสองอย่างนี้บน Gitlab page ไม่มี ผมเลยจำใจย้ายหนีมา Cloudfare page ดีกว่า...
วิธีการ Deploy Nextjs บน Clouflare page
1. สร้าง Cloudflare token
ไปที่ https://dash.cloudflare.com/profile/api-tokens สร้าง API token แล้วเก็บไว้
2. ไปเอา Account ID
เก็บไว้
3. สร้าง Cloudflare page project
สร้าง project ขึ้นมาก่อน โดยกำหนด branch สำหรับ production เริ่มต้น พิมพ์คำสั่งตามนี้
$ export CLOUDFLARE_API_TOKEN=xxxx
$ export CLOUDFLARE_ACCOUNT_ID=xxx
$ npx wrangler pages project create project-name --production-branch master
โดยไปแก้ไข project-name
กับ master
เอา
4. Deploy Nextjs static
คราวนี้เราก็มา Deploy Dev Environment กัน
$ npm i
$ npm run build
$ npm run export
$ npx wrangler pages deploy ./out --project-name=project-name --branch=dev
ส่วนถ้าต้องการไปยัง Production ก็พิมพ์
$ npx wrangler pages deploy ./out --project-name=project-name --branch=master
เมื่อสำเร็จเราจะได้ประมาณนี้
จะสังเกตุว่าเราสามารถ Deploy บ่อยแค่ไหนก็ได้มันจะทำเป็น commit version ให้ มีโดเมนแยกตาม commit ด้วย ดีจัดๆ
แล้วทางอันไหนไม่ใช่ Production เขาจะใส่ x-robots-tag: noindex
มาให้เลยเพื่อไม่ให้ bot google มาเก็บไปติด Search ดีงามมากๆ ปกติผมต้องมากำหนดเองถ้าไป Deploy ที่อื่น
5. แถม Gitlab-ci สำหรับ Deploy
nextjs-deploy:
image: node:18-alpine
stage: deploy
variables:
CLOUDFLARE_API_TOKEN: $CLOUDFLARE_API_TOKEN
CLOUDFLARE_ACCOUNT_ID: $CLOUDFLARE_ACCOUNT_ID
script:
- npm i
- npm run build
- npm run export
- gzip -k -6 $(find out -type f)
after_script:
- npm install -g wrangler --unsafe-perm=true
- wrangler pages deploy ./out --project-name=twin-web --branch=prod
artifacts:
paths:
- out
expire_in: 1 weeks
when: always
จบปิ้ง ใช้ดีบอกต่อ Cloudfare page 😄
คำสั่ง wrangler เพิ่มเติม: https://developers.cloudflare.com/workers/wrangler/commands/#deploy-1